From 299c35e67a11179ce3864a0b6fda9c2f45d92574 Mon Sep 17 00:00:00 2001 From: skudasov Date: Fri, 6 Feb 2026 15:05:49 +0100 Subject: [PATCH 01/16] init --- pods/.githooks/go-lint | 2 + pods/.githooks/go-test | 2 + pods/.githooks/typos | 15 + pods/.github/workflows/pods-test-deploy.yml | 49 + pods/.github/workflows/pods-test.yml | 41 + pods/.gitignore | 31 + pods/.golangci.yaml | 76 + pods/.pre-commit-config.yaml | 20 + pods/.testcoverage.yml | 11 + pods/Justfile | 81 + pods/README.md | 48 + pods/__snapshots__/pods_test.snap | 623 ++ pods/_typos.toml | 5 + pods/cdk8s.yaml | 8 + pods/client.go | 217 + pods/cover.svg | 1 + pods/crds/monitoring.coreos.com.yml | 775 +++ pods/defaults.go | 125 + pods/devbox.json | 34 + pods/devbox.lock | 844 +++ pods/environment/Justfile | 28 + pods/environment/README.md | 6 + pods/environment/environment.go | 147 + pods/environment/go.mod | 158 + pods/environment/go.sum | 446 ++ pods/environment/kind.yml | 9 + pods/forward.go | 325 + pods/go.mod | 80 + pods/go.sum | 218 + pods/imports/k8s/Affinity.go | 11 + pods/imports/k8s/AggregationRule.go | 9 + pods/imports/k8s/ApiServiceSpec.go | 33 + pods/imports/k8s/AppArmorProfile.go | 16 + .../imports/k8s/ApplyConfigurationV1Alpha1.go | 34 + pods/imports/k8s/AuditAnnotation.go | 23 + pods/imports/k8s/AuditAnnotationV1Beta1.go | 23 + .../k8s/AwsElasticBlockStoreVolumeSource.go | 23 + pods/imports/k8s/AzureDiskVolumeSource.go | 25 + .../k8s/AzureFilePersistentVolumeSource.go | 15 + pods/imports/k8s/AzureFileVolumeSource.go | 13 + pods/imports/k8s/BasicDeviceV1Alpha3.go | 17 + pods/imports/k8s/BasicDeviceV1Beta1.go | 17 + pods/imports/k8s/BoundObjectReference.go | 15 + pods/imports/k8s/Capabilities.go | 9 + pods/imports/k8s/CelDeviceSelectorV1Alpha3.go | 37 + pods/imports/k8s/CelDeviceSelectorV1Beta1.go | 37 + .../k8s/CephFsPersistentVolumeSource.go | 23 + pods/imports/k8s/CephFsVolumeSource.go | 23 + .../k8s/CertificateSigningRequestSpec.go | 77 + .../k8s/CinderPersistentVolumeSource.go | 23 + pods/imports/k8s/CinderVolumeSource.go | 21 + pods/imports/k8s/ClientIpConfig.go | 9 + .../k8s/ClusterTrustBundleProjection.go | 23 + .../k8s/ClusterTrustBundleSpecV1Alpha1.go | 21 + pods/imports/k8s/ComponentCondition.go | 21 + pods/imports/k8s/ConfigMapEnvSource.go | 13 + pods/imports/k8s/ConfigMapKeySelector.go | 13 + pods/imports/k8s/ConfigMapNodeConfigSource.go | 17 + pods/imports/k8s/ConfigMapProjection.go | 17 + pods/imports/k8s/ConfigMapVolumeSource.go | 23 + pods/imports/k8s/Container.go | 109 + pods/imports/k8s/ContainerPort.go | 25 + pods/imports/k8s/ContainerResizePolicy.go | 13 + .../k8s/ContainerResourceMetricSourceV2.go | 11 + pods/imports/k8s/CronJobSpec.go | 37 + .../k8s/CrossVersionObjectReference.go | 15 + .../k8s/CrossVersionObjectReferenceV2.go | 15 + pods/imports/k8s/CsiDriverSpec.go | 80 + pods/imports/k8s/CsiNodeDriver.go | 21 + pods/imports/k8s/CsiNodeSpec.go | 9 + pods/imports/k8s/CsiPersistentVolumeSource.go | 45 + pods/imports/k8s/CsiVolumeSource.go | 27 + .../k8s/CustomResourceColumnDefinition.go | 23 + pods/imports/k8s/CustomResourceConversion.go | 14 + .../k8s/CustomResourceDefinitionNames.go | 31 + .../k8s/CustomResourceDefinitionSpec.go | 25 + .../k8s/CustomResourceDefinitionVersion.go | 35 + .../k8s/CustomResourceSubresourceScale.go | 11 + .../imports/k8s/CustomResourceSubresources.go | 11 + pods/imports/k8s/CustomResourceValidation.go | 7 + pods/imports/k8s/DaemonSetSpec.go | 27 + pods/imports/k8s/DaemonSetUpdateStrategy.go | 15 + pods/imports/k8s/DeleteOptions.go | 37 + pods/imports/k8s/DeploymentSpec.go | 41 + pods/imports/k8s/DeploymentStrategy.go | 15 + pods/imports/k8s/DeviceAttributeV1Alpha3.go | 15 + pods/imports/k8s/DeviceAttributeV1Beta1.go | 15 + pods/imports/k8s/DeviceCapacityV1Beta1.go | 7 + .../k8s/DeviceClaimConfigurationV1Alpha3.go | 11 + .../k8s/DeviceClaimConfigurationV1Beta1.go | 11 + pods/imports/k8s/DeviceClaimV1Alpha3.go | 15 + pods/imports/k8s/DeviceClaimV1Beta1.go | 15 + .../k8s/DeviceClassConfigurationV1Alpha3.go | 7 + .../k8s/DeviceClassConfigurationV1Beta1.go | 7 + pods/imports/k8s/DeviceClassSpecV1Alpha3.go | 13 + pods/imports/k8s/DeviceClassSpecV1Beta1.go | 13 + pods/imports/k8s/DeviceConstraintV1Alpha3.go | 15 + pods/imports/k8s/DeviceConstraintV1Beta1.go | 15 + pods/imports/k8s/DeviceRequestV1Alpha3.go | 47 + pods/imports/k8s/DeviceRequestV1Beta1.go | 47 + pods/imports/k8s/DeviceSelectorV1Alpha3.go | 7 + pods/imports/k8s/DeviceSelectorV1Beta1.go | 7 + pods/imports/k8s/DeviceV1Alpha3.go | 13 + pods/imports/k8s/DeviceV1Beta1.go | 13 + pods/imports/k8s/DownwardApiProjection.go | 9 + pods/imports/k8s/DownwardApiVolumeFile.go | 17 + pods/imports/k8s/DownwardApiVolumeSource.go | 15 + pods/imports/k8s/EmptyDirVolumeSource.go | 15 + pods/imports/k8s/Endpoint.go | 29 + pods/imports/k8s/EndpointAddress.go | 17 + pods/imports/k8s/EndpointConditions.go | 17 + pods/imports/k8s/EndpointHints.go | 7 + pods/imports/k8s/EndpointPort.go | 30 + pods/imports/k8s/EndpointSubset.go | 25 + pods/imports/k8s/EnvFromSource.go | 13 + pods/imports/k8s/EnvVar.go | 19 + pods/imports/k8s/EnvVarSource.go | 13 + pods/imports/k8s/EphemeralContainer.go | 109 + pods/imports/k8s/EphemeralVolumeSource.go | 15 + pods/imports/k8s/EventSeries.go | 13 + pods/imports/k8s/EventSource.go | 9 + pods/imports/k8s/ExecAction.go | 9 + .../k8s/ExemptPriorityLevelConfiguration.go | 21 + pods/imports/k8s/ExternalDocumentation.go | 7 + pods/imports/k8s/ExternalMetricSourceV2.go | 9 + pods/imports/k8s/FcVolumeSource.go | 23 + pods/imports/k8s/FieldSelectorAttributes.go | 15 + pods/imports/k8s/FieldSelectorRequirement.go | 15 + .../imports/k8s/FlexPersistentVolumeSource.go | 21 + pods/imports/k8s/FlexVolumeSource.go | 21 + pods/imports/k8s/FlockerVolumeSource.go | 13 + pods/imports/k8s/FlowDistinguisherMethod.go | 9 + pods/imports/k8s/FlowSchemaSpec.go | 21 + pods/imports/k8s/ForZone.go | 7 + .../k8s/GcePersistentDiskVolumeSource.go | 25 + pods/imports/k8s/GitRepoVolumeSource.go | 17 + .../k8s/GlusterfsPersistentVolumeSource.go | 25 + pods/imports/k8s/GlusterfsVolumeSource.go | 21 + .../k8s/GroupVersionResourceV1Alpha1.go | 11 + pods/imports/k8s/GrpcAction.go | 13 + .../k8s/HorizontalPodAutoscalerBehaviorV2.go | 16 + .../k8s/HorizontalPodAutoscalerSpec.go | 21 + .../k8s/HorizontalPodAutoscalerSpecV2.go | 23 + pods/imports/k8s/HostAlias.go | 9 + pods/imports/k8s/HostPathVolumeSource.go | 15 + pods/imports/k8s/HpaScalingPolicyV2.go | 15 + pods/imports/k8s/HpaScalingRulesV2.go | 19 + pods/imports/k8s/HttpGetAction.go | 25 + pods/imports/k8s/HttpHeader.go | 11 + pods/imports/k8s/HttpIngressPath.go | 27 + pods/imports/k8s/HttpIngressRuleValue.go | 9 + pods/imports/k8s/ImageVolumeSource.go | 15 + pods/imports/k8s/IngressBackend.go | 13 + .../k8s/IngressClassParametersReference.go | 23 + pods/imports/k8s/IngressClassSpec.go | 13 + pods/imports/k8s/IngressRule.go | 19 + pods/imports/k8s/IngressServiceBackend.go | 13 + pods/imports/k8s/IngressSpec.go | 21 + pods/imports/k8s/IngressTls.go | 15 + pods/imports/k8s/IntOrString.go | 61 + pods/imports/k8s/IntOrString__checks.go | 23 + pods/imports/k8s/IntOrString__no_checks.go | 13 + ...machineryPkgApisMetaV1DeleteOptionsKind.go | 11 + pods/imports/k8s/IpAddressSpecV1Beta1.go | 9 + pods/imports/k8s/IpBlock.go | 11 + .../k8s/IscsiPersistentVolumeSource.go | 45 + pods/imports/k8s/IscsiVolumeSource.go | 45 + pods/imports/k8s/JobSpec.go | 86 + pods/imports/k8s/JobTemplateSpec.go | 13 + pods/imports/k8s/JsonPatchV1Alpha1.go | 60 + pods/imports/k8s/JsonSchemaProps.go | 105 + pods/imports/k8s/KeyToPath.go | 15 + pods/imports/k8s/KubeApiService.go | 317 + pods/imports/k8s/KubeApiServiceList.go | 315 + pods/imports/k8s/KubeApiServiceListProps.go | 9 + .../imports/k8s/KubeApiServiceList__checks.go | 65 + .../k8s/KubeApiServiceList__no_checks.go | 25 + pods/imports/k8s/KubeApiServiceProps.go | 13 + pods/imports/k8s/KubeApiService__checks.go | 59 + pods/imports/k8s/KubeApiService__no_checks.go | 25 + pods/imports/k8s/KubeBinding.go | 317 + pods/imports/k8s/KubeBindingProps.go | 13 + pods/imports/k8s/KubeBinding__checks.go | 65 + pods/imports/k8s/KubeBinding__no_checks.go | 25 + .../k8s/KubeCertificateSigningRequest.go | 321 + .../k8s/KubeCertificateSigningRequestList.go | 315 + .../KubeCertificateSigningRequestListProps.go | 8 + ...beCertificateSigningRequestList__checks.go | 65 + ...ertificateSigningRequestList__no_checks.go | 25 + .../k8s/KubeCertificateSigningRequestProps.go | 16 + .../KubeCertificateSigningRequest__checks.go | 65 + ...ubeCertificateSigningRequest__no_checks.go | 25 + pods/imports/k8s/KubeClusterRole.go | 315 + pods/imports/k8s/KubeClusterRoleBinding.go | 317 + .../imports/k8s/KubeClusterRoleBindingList.go | 315 + .../k8s/KubeClusterRoleBindingListProps.go | 9 + .../k8s/KubeClusterRoleBindingList__checks.go | 65 + .../KubeClusterRoleBindingList__no_checks.go | 25 + .../k8s/KubeClusterRoleBindingProps.go | 15 + .../k8s/KubeClusterRoleBinding__checks.go | 65 + .../k8s/KubeClusterRoleBinding__no_checks.go | 25 + pods/imports/k8s/KubeClusterRoleList.go | 315 + pods/imports/k8s/KubeClusterRoleListProps.go | 9 + .../k8s/KubeClusterRoleList__checks.go | 65 + .../k8s/KubeClusterRoleList__no_checks.go | 25 + pods/imports/k8s/KubeClusterRoleProps.go | 13 + pods/imports/k8s/KubeClusterRole__checks.go | 59 + .../imports/k8s/KubeClusterRole__no_checks.go | 25 + .../k8s/KubeClusterTrustBundleListV1Alpha1.go | 315 + ...KubeClusterTrustBundleListV1Alpha1Props.go | 9 + ...eClusterTrustBundleListV1Alpha1__checks.go | 65 + ...usterTrustBundleListV1Alpha1__no_checks.go | 25 + .../k8s/KubeClusterTrustBundleV1Alpha1.go | 319 + .../KubeClusterTrustBundleV1Alpha1Props.go | 13 + .../KubeClusterTrustBundleV1Alpha1__checks.go | 65 + ...beClusterTrustBundleV1Alpha1__no_checks.go | 25 + pods/imports/k8s/KubeComponentStatus.go | 317 + pods/imports/k8s/KubeComponentStatusList.go | 317 + .../k8s/KubeComponentStatusListProps.go | 13 + .../k8s/KubeComponentStatusList__checks.go | 65 + .../k8s/KubeComponentStatusList__no_checks.go | 25 + pods/imports/k8s/KubeComponentStatusProps.go | 13 + .../k8s/KubeComponentStatus__checks.go | 59 + .../k8s/KubeComponentStatus__no_checks.go | 25 + pods/imports/k8s/KubeConfigMap.go | 315 + pods/imports/k8s/KubeConfigMapList.go | 315 + pods/imports/k8s/KubeConfigMapListProps.go | 9 + pods/imports/k8s/KubeConfigMapList__checks.go | 65 + .../k8s/KubeConfigMapList__no_checks.go | 25 + pods/imports/k8s/KubeConfigMapProps.go | 21 + pods/imports/k8s/KubeConfigMap__checks.go | 59 + pods/imports/k8s/KubeConfigMap__no_checks.go | 25 + pods/imports/k8s/KubeControllerRevision.go | 317 + .../imports/k8s/KubeControllerRevisionList.go | 315 + .../k8s/KubeControllerRevisionListProps.go | 9 + .../k8s/KubeControllerRevisionList__checks.go | 65 + .../KubeControllerRevisionList__no_checks.go | 25 + .../k8s/KubeControllerRevisionProps.go | 15 + .../k8s/KubeControllerRevision__checks.go | 65 + .../k8s/KubeControllerRevision__no_checks.go | 25 + pods/imports/k8s/KubeCronJob.go | 315 + pods/imports/k8s/KubeCronJobList.go | 315 + pods/imports/k8s/KubeCronJobListProps.go | 11 + pods/imports/k8s/KubeCronJobList__checks.go | 65 + .../imports/k8s/KubeCronJobList__no_checks.go | 25 + pods/imports/k8s/KubeCronJobProps.go | 13 + pods/imports/k8s/KubeCronJob__checks.go | 59 + pods/imports/k8s/KubeCronJob__no_checks.go | 25 + pods/imports/k8s/KubeCsiDriver.go | 317 + pods/imports/k8s/KubeCsiDriverList.go | 315 + pods/imports/k8s/KubeCsiDriverListProps.go | 9 + pods/imports/k8s/KubeCsiDriverList__checks.go | 65 + .../k8s/KubeCsiDriverList__no_checks.go | 25 + pods/imports/k8s/KubeCsiDriverProps.go | 13 + pods/imports/k8s/KubeCsiDriver__checks.go | 65 + pods/imports/k8s/KubeCsiDriver__no_checks.go | 25 + pods/imports/k8s/KubeCsiNode.go | 317 + pods/imports/k8s/KubeCsiNodeList.go | 315 + pods/imports/k8s/KubeCsiNodeListProps.go | 9 + pods/imports/k8s/KubeCsiNodeList__checks.go | 65 + .../imports/k8s/KubeCsiNodeList__no_checks.go | 25 + pods/imports/k8s/KubeCsiNodeProps.go | 13 + pods/imports/k8s/KubeCsiNode__checks.go | 65 + pods/imports/k8s/KubeCsiNode__no_checks.go | 25 + pods/imports/k8s/KubeCsiStorageCapacity.go | 325 + .../imports/k8s/KubeCsiStorageCapacityList.go | 315 + .../k8s/KubeCsiStorageCapacityListProps.go | 9 + .../k8s/KubeCsiStorageCapacityList__checks.go | 65 + .../KubeCsiStorageCapacityList__no_checks.go | 25 + .../k8s/KubeCsiStorageCapacityProps.go | 39 + .../k8s/KubeCsiStorageCapacity__checks.go | 65 + .../k8s/KubeCsiStorageCapacity__no_checks.go | 25 + .../k8s/KubeCustomResourceDefinition.go | 317 + .../k8s/KubeCustomResourceDefinitionList.go | 315 + .../KubeCustomResourceDefinitionListProps.go | 9 + ...ubeCustomResourceDefinitionList__checks.go | 65 + ...CustomResourceDefinitionList__no_checks.go | 25 + .../k8s/KubeCustomResourceDefinitionProps.go | 11 + .../KubeCustomResourceDefinition__checks.go | 65 + ...KubeCustomResourceDefinition__no_checks.go | 25 + pods/imports/k8s/KubeDaemonSet.go | 315 + pods/imports/k8s/KubeDaemonSetList.go | 315 + pods/imports/k8s/KubeDaemonSetListProps.go | 11 + pods/imports/k8s/KubeDaemonSetList__checks.go | 65 + .../k8s/KubeDaemonSetList__no_checks.go | 25 + pods/imports/k8s/KubeDaemonSetProps.go | 13 + pods/imports/k8s/KubeDaemonSet__checks.go | 59 + pods/imports/k8s/KubeDaemonSet__no_checks.go | 25 + pods/imports/k8s/KubeDeployment.go | 315 + pods/imports/k8s/KubeDeploymentList.go | 315 + pods/imports/k8s/KubeDeploymentListProps.go | 9 + .../imports/k8s/KubeDeploymentList__checks.go | 65 + .../k8s/KubeDeploymentList__no_checks.go | 25 + pods/imports/k8s/KubeDeploymentProps.go | 11 + pods/imports/k8s/KubeDeployment__checks.go | 59 + pods/imports/k8s/KubeDeployment__no_checks.go | 25 + .../k8s/KubeDeviceClassListV1Alpha3.go | 315 + .../k8s/KubeDeviceClassListV1Alpha3Props.go | 9 + .../KubeDeviceClassListV1Alpha3__checks.go | 65 + .../KubeDeviceClassListV1Alpha3__no_checks.go | 25 + .../imports/k8s/KubeDeviceClassListV1Beta1.go | 315 + .../k8s/KubeDeviceClassListV1Beta1Props.go | 9 + .../k8s/KubeDeviceClassListV1Beta1__checks.go | 65 + .../KubeDeviceClassListV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeDeviceClassV1Alpha3.go | 319 + .../k8s/KubeDeviceClassV1Alpha3Props.go | 17 + .../k8s/KubeDeviceClassV1Alpha3__checks.go | 65 + .../k8s/KubeDeviceClassV1Alpha3__no_checks.go | 25 + pods/imports/k8s/KubeDeviceClassV1Beta1.go | 319 + .../k8s/KubeDeviceClassV1Beta1Props.go | 17 + .../k8s/KubeDeviceClassV1Beta1__checks.go | 65 + .../k8s/KubeDeviceClassV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeEndpointSlice.go | 317 + pods/imports/k8s/KubeEndpointSliceList.go | 315 + .../imports/k8s/KubeEndpointSliceListProps.go | 9 + .../k8s/KubeEndpointSliceList__checks.go | 65 + .../k8s/KubeEndpointSliceList__no_checks.go | 25 + pods/imports/k8s/KubeEndpointSliceProps.go | 21 + pods/imports/k8s/KubeEndpointSlice__checks.go | 65 + .../k8s/KubeEndpointSlice__no_checks.go | 25 + pods/imports/k8s/KubeEndpoints.go | 329 + pods/imports/k8s/KubeEndpointsList.go | 315 + pods/imports/k8s/KubeEndpointsListProps.go | 11 + pods/imports/k8s/KubeEndpointsList__checks.go | 65 + .../k8s/KubeEndpointsList__no_checks.go | 25 + pods/imports/k8s/KubeEndpointsProps.go | 25 + pods/imports/k8s/KubeEndpoints__checks.go | 59 + pods/imports/k8s/KubeEndpoints__no_checks.go | 25 + pods/imports/k8s/KubeEvent.go | 317 + pods/imports/k8s/KubeEventList.go | 315 + pods/imports/k8s/KubeEventListProps.go | 11 + pods/imports/k8s/KubeEventList__checks.go | 65 + pods/imports/k8s/KubeEventList__no_checks.go | 25 + pods/imports/k8s/KubeEventProps.go | 57 + pods/imports/k8s/KubeEvent__checks.go | 65 + pods/imports/k8s/KubeEvent__no_checks.go | 25 + pods/imports/k8s/KubeEviction.go | 317 + pods/imports/k8s/KubeEvictionProps.go | 11 + pods/imports/k8s/KubeEviction__checks.go | 59 + pods/imports/k8s/KubeEviction__no_checks.go | 25 + pods/imports/k8s/KubeFlowSchema.go | 317 + pods/imports/k8s/KubeFlowSchemaList.go | 315 + pods/imports/k8s/KubeFlowSchemaListProps.go | 11 + .../imports/k8s/KubeFlowSchemaList__checks.go | 65 + .../k8s/KubeFlowSchemaList__no_checks.go | 25 + pods/imports/k8s/KubeFlowSchemaProps.go | 15 + pods/imports/k8s/KubeFlowSchema__checks.go | 59 + pods/imports/k8s/KubeFlowSchema__no_checks.go | 25 + .../k8s/KubeHorizontalPodAutoscaler.go | 315 + .../k8s/KubeHorizontalPodAutoscalerList.go | 315 + .../KubeHorizontalPodAutoscalerListProps.go | 9 + .../k8s/KubeHorizontalPodAutoscalerListV2.go | 315 + .../KubeHorizontalPodAutoscalerListV2Props.go | 9 + ...beHorizontalPodAutoscalerListV2__checks.go | 65 + ...orizontalPodAutoscalerListV2__no_checks.go | 25 + ...KubeHorizontalPodAutoscalerList__checks.go | 65 + ...eHorizontalPodAutoscalerList__no_checks.go | 25 + .../k8s/KubeHorizontalPodAutoscalerProps.go | 13 + .../k8s/KubeHorizontalPodAutoscalerV2.go | 315 + .../k8s/KubeHorizontalPodAutoscalerV2Props.go | 13 + .../KubeHorizontalPodAutoscalerV2__checks.go | 59 + ...ubeHorizontalPodAutoscalerV2__no_checks.go | 25 + .../KubeHorizontalPodAutoscaler__checks.go | 59 + .../KubeHorizontalPodAutoscaler__no_checks.go | 25 + pods/imports/k8s/KubeIngress.go | 317 + pods/imports/k8s/KubeIngressClass.go | 317 + pods/imports/k8s/KubeIngressClassList.go | 315 + pods/imports/k8s/KubeIngressClassListProps.go | 9 + .../k8s/KubeIngressClassList__checks.go | 65 + .../k8s/KubeIngressClassList__no_checks.go | 25 + pods/imports/k8s/KubeIngressClassProps.go | 15 + pods/imports/k8s/KubeIngressClass__checks.go | 59 + .../k8s/KubeIngressClass__no_checks.go | 25 + pods/imports/k8s/KubeIngressList.go | 315 + pods/imports/k8s/KubeIngressListProps.go | 11 + pods/imports/k8s/KubeIngressList__checks.go | 65 + .../imports/k8s/KubeIngressList__no_checks.go | 25 + pods/imports/k8s/KubeIngressProps.go | 15 + pods/imports/k8s/KubeIngress__checks.go | 59 + pods/imports/k8s/KubeIngress__no_checks.go | 25 + pods/imports/k8s/KubeIpAddressListV1Beta1.go | 315 + .../k8s/KubeIpAddressListV1Beta1Props.go | 11 + .../k8s/KubeIpAddressListV1Beta1__checks.go | 65 + .../KubeIpAddressListV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeIpAddressV1Beta1.go | 317 + pods/imports/k8s/KubeIpAddressV1Beta1Props.go | 15 + .../k8s/KubeIpAddressV1Beta1__checks.go | 59 + .../k8s/KubeIpAddressV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeJob.go | 315 + pods/imports/k8s/KubeJobList.go | 315 + pods/imports/k8s/KubeJobListProps.go | 11 + pods/imports/k8s/KubeJobList__checks.go | 65 + pods/imports/k8s/KubeJobList__no_checks.go | 25 + pods/imports/k8s/KubeJobProps.go | 13 + pods/imports/k8s/KubeJob__checks.go | 59 + pods/imports/k8s/KubeJob__no_checks.go | 25 + pods/imports/k8s/KubeLease.go | 315 + .../k8s/KubeLeaseCandidateListV1Alpha2.go | 315 + .../KubeLeaseCandidateListV1Alpha2Props.go | 11 + .../KubeLeaseCandidateListV1Alpha2__checks.go | 65 + ...beLeaseCandidateListV1Alpha2__no_checks.go | 25 + .../imports/k8s/KubeLeaseCandidateV1Alpha2.go | 317 + .../k8s/KubeLeaseCandidateV1Alpha2Props.go | 13 + .../k8s/KubeLeaseCandidateV1Alpha2__checks.go | 59 + .../KubeLeaseCandidateV1Alpha2__no_checks.go | 25 + pods/imports/k8s/KubeLeaseList.go | 315 + pods/imports/k8s/KubeLeaseListProps.go | 11 + pods/imports/k8s/KubeLeaseList__checks.go | 65 + pods/imports/k8s/KubeLeaseList__no_checks.go | 25 + pods/imports/k8s/KubeLeaseProps.go | 11 + pods/imports/k8s/KubeLease__checks.go | 59 + pods/imports/k8s/KubeLease__no_checks.go | 25 + pods/imports/k8s/KubeLimitRange.go | 315 + pods/imports/k8s/KubeLimitRangeList.go | 315 + pods/imports/k8s/KubeLimitRangeListProps.go | 13 + .../imports/k8s/KubeLimitRangeList__checks.go | 65 + .../k8s/KubeLimitRangeList__no_checks.go | 25 + pods/imports/k8s/KubeLimitRangeProps.go | 13 + pods/imports/k8s/KubeLimitRange__checks.go | 59 + pods/imports/k8s/KubeLimitRange__no_checks.go | 25 + .../k8s/KubeLocalSubjectAccessReview.go | 317 + .../k8s/KubeLocalSubjectAccessReviewProps.go | 15 + .../KubeLocalSubjectAccessReview__checks.go | 65 + ...KubeLocalSubjectAccessReview__no_checks.go | 25 + ...atingAdmissionPolicyBindingListV1Alpha1.go | 315 + ...AdmissionPolicyBindingListV1Alpha1Props.go | 11 + ...issionPolicyBindingListV1Alpha1__checks.go | 65 + ...ionPolicyBindingListV1Alpha1__no_checks.go | 25 + ...eMutatingAdmissionPolicyBindingV1Alpha1.go | 321 + ...tingAdmissionPolicyBindingV1Alpha1Props.go | 17 + ...gAdmissionPolicyBindingV1Alpha1__checks.go | 59 + ...missionPolicyBindingV1Alpha1__no_checks.go | 25 + ...KubeMutatingAdmissionPolicyListV1Alpha1.go | 315 + ...utatingAdmissionPolicyListV1Alpha1Props.go | 11 + ...tingAdmissionPolicyListV1Alpha1__checks.go | 65 + ...gAdmissionPolicyListV1Alpha1__no_checks.go | 25 + .../KubeMutatingAdmissionPolicyV1Alpha1.go | 315 + ...ubeMutatingAdmissionPolicyV1Alpha1Props.go | 11 + ...MutatingAdmissionPolicyV1Alpha1__checks.go | 59 + ...atingAdmissionPolicyV1Alpha1__no_checks.go | 25 + .../k8s/KubeMutatingWebhookConfiguration.go | 315 + .../KubeMutatingWebhookConfigurationList.go | 315 + ...beMutatingWebhookConfigurationListProps.go | 11 + ...utatingWebhookConfigurationList__checks.go | 65 + ...tingWebhookConfigurationList__no_checks.go | 25 + .../KubeMutatingWebhookConfigurationProps.go | 11 + ...ubeMutatingWebhookConfiguration__checks.go | 59 + ...MutatingWebhookConfiguration__no_checks.go | 25 + pods/imports/k8s/KubeNamespace.go | 317 + pods/imports/k8s/KubeNamespaceList.go | 315 + pods/imports/k8s/KubeNamespaceListProps.go | 13 + pods/imports/k8s/KubeNamespaceList__checks.go | 65 + .../k8s/KubeNamespaceList__no_checks.go | 25 + pods/imports/k8s/KubeNamespaceProps.go | 15 + pods/imports/k8s/KubeNamespace__checks.go | 59 + pods/imports/k8s/KubeNamespace__no_checks.go | 25 + pods/imports/k8s/KubeNetworkPolicy.go | 315 + pods/imports/k8s/KubeNetworkPolicyList.go | 315 + .../imports/k8s/KubeNetworkPolicyListProps.go | 11 + .../k8s/KubeNetworkPolicyList__checks.go | 65 + .../k8s/KubeNetworkPolicyList__no_checks.go | 25 + pods/imports/k8s/KubeNetworkPolicyProps.go | 11 + pods/imports/k8s/KubeNetworkPolicy__checks.go | 59 + .../k8s/KubeNetworkPolicy__no_checks.go | 25 + pods/imports/k8s/KubeNode.go | 317 + pods/imports/k8s/KubeNodeList.go | 315 + pods/imports/k8s/KubeNodeListProps.go | 11 + pods/imports/k8s/KubeNodeList__checks.go | 65 + pods/imports/k8s/KubeNodeList__no_checks.go | 25 + pods/imports/k8s/KubeNodeProps.go | 15 + pods/imports/k8s/KubeNode__checks.go | 59 + pods/imports/k8s/KubeNode__no_checks.go | 25 + pods/imports/k8s/KubePersistentVolume.go | 317 + pods/imports/k8s/KubePersistentVolumeClaim.go | 315 + .../k8s/KubePersistentVolumeClaimList.go | 315 + .../k8s/KubePersistentVolumeClaimListProps.go | 13 + .../KubePersistentVolumeClaimList__checks.go | 65 + ...ubePersistentVolumeClaimList__no_checks.go | 25 + .../k8s/KubePersistentVolumeClaimProps.go | 13 + .../k8s/KubePersistentVolumeClaim__checks.go | 59 + .../KubePersistentVolumeClaim__no_checks.go | 25 + pods/imports/k8s/KubePersistentVolumeList.go | 315 + .../k8s/KubePersistentVolumeListProps.go | 13 + .../k8s/KubePersistentVolumeList__checks.go | 65 + .../KubePersistentVolumeList__no_checks.go | 25 + pods/imports/k8s/KubePersistentVolumeProps.go | 15 + .../k8s/KubePersistentVolume__checks.go | 59 + .../k8s/KubePersistentVolume__no_checks.go | 25 + pods/imports/k8s/KubePod.go | 317 + pods/imports/k8s/KubePodDisruptionBudget.go | 315 + .../k8s/KubePodDisruptionBudgetList.go | 315 + .../k8s/KubePodDisruptionBudgetListProps.go | 11 + .../KubePodDisruptionBudgetList__checks.go | 65 + .../KubePodDisruptionBudgetList__no_checks.go | 25 + .../k8s/KubePodDisruptionBudgetProps.go | 11 + .../k8s/KubePodDisruptionBudget__checks.go | 59 + .../k8s/KubePodDisruptionBudget__no_checks.go | 25 + pods/imports/k8s/KubePodList.go | 315 + pods/imports/k8s/KubePodListProps.go | 13 + pods/imports/k8s/KubePodList__checks.go | 65 + pods/imports/k8s/KubePodList__no_checks.go | 25 + pods/imports/k8s/KubePodProps.go | 15 + pods/imports/k8s/KubePodTemplate.go | 315 + pods/imports/k8s/KubePodTemplateList.go | 315 + pods/imports/k8s/KubePodTemplateListProps.go | 11 + .../k8s/KubePodTemplateList__checks.go | 65 + .../k8s/KubePodTemplateList__no_checks.go | 25 + pods/imports/k8s/KubePodTemplateProps.go | 13 + pods/imports/k8s/KubePodTemplate__checks.go | 59 + .../imports/k8s/KubePodTemplate__no_checks.go | 25 + pods/imports/k8s/KubePod__checks.go | 59 + pods/imports/k8s/KubePod__no_checks.go | 25 + pods/imports/k8s/KubePriorityClass.go | 317 + pods/imports/k8s/KubePriorityClassList.go | 315 + .../imports/k8s/KubePriorityClassListProps.go | 9 + .../k8s/KubePriorityClassList__checks.go | 65 + .../k8s/KubePriorityClassList__no_checks.go | 25 + pods/imports/k8s/KubePriorityClassProps.go | 27 + pods/imports/k8s/KubePriorityClass__checks.go | 65 + .../k8s/KubePriorityClass__no_checks.go | 25 + .../k8s/KubePriorityLevelConfiguration.go | 315 + .../k8s/KubePriorityLevelConfigurationList.go | 315 + ...KubePriorityLevelConfigurationListProps.go | 11 + ...ePriorityLevelConfigurationList__checks.go | 65 + ...iorityLevelConfigurationList__no_checks.go | 25 + .../KubePriorityLevelConfigurationProps.go | 13 + .../KubePriorityLevelConfiguration__checks.go | 59 + ...bePriorityLevelConfiguration__no_checks.go | 25 + pods/imports/k8s/KubeReplicaSet.go | 315 + pods/imports/k8s/KubeReplicaSetList.go | 315 + pods/imports/k8s/KubeReplicaSetListProps.go | 13 + .../imports/k8s/KubeReplicaSetList__checks.go | 65 + .../k8s/KubeReplicaSetList__no_checks.go | 25 + pods/imports/k8s/KubeReplicaSetProps.go | 13 + pods/imports/k8s/KubeReplicaSet__checks.go | 59 + pods/imports/k8s/KubeReplicaSet__no_checks.go | 25 + pods/imports/k8s/KubeReplicationController.go | 315 + .../k8s/KubeReplicationControllerList.go | 315 + .../k8s/KubeReplicationControllerListProps.go | 13 + .../KubeReplicationControllerList__checks.go | 65 + ...ubeReplicationControllerList__no_checks.go | 25 + .../k8s/KubeReplicationControllerProps.go | 13 + .../k8s/KubeReplicationController__checks.go | 59 + .../KubeReplicationController__no_checks.go | 25 + .../k8s/KubeResourceClaimListV1Alpha3.go | 315 + .../k8s/KubeResourceClaimListV1Alpha3Props.go | 9 + .../KubeResourceClaimListV1Alpha3__checks.go | 65 + ...ubeResourceClaimListV1Alpha3__no_checks.go | 25 + .../k8s/KubeResourceClaimListV1Beta1.go | 315 + .../k8s/KubeResourceClaimListV1Beta1Props.go | 9 + .../KubeResourceClaimListV1Beta1__checks.go | 65 + ...KubeResourceClaimListV1Beta1__no_checks.go | 25 + .../KubeResourceClaimTemplateListV1Alpha3.go | 315 + ...eResourceClaimTemplateListV1Alpha3Props.go | 9 + ...sourceClaimTemplateListV1Alpha3__checks.go | 65 + ...rceClaimTemplateListV1Alpha3__no_checks.go | 25 + .../KubeResourceClaimTemplateListV1Beta1.go | 315 + ...beResourceClaimTemplateListV1Beta1Props.go | 9 + ...esourceClaimTemplateListV1Beta1__checks.go | 65 + ...urceClaimTemplateListV1Beta1__no_checks.go | 25 + .../k8s/KubeResourceClaimTemplateV1Alpha3.go | 317 + .../KubeResourceClaimTemplateV1Alpha3Props.go | 13 + ...beResourceClaimTemplateV1Alpha3__checks.go | 65 + ...esourceClaimTemplateV1Alpha3__no_checks.go | 25 + .../k8s/KubeResourceClaimTemplateV1Beta1.go | 317 + .../KubeResourceClaimTemplateV1Beta1Props.go | 13 + ...ubeResourceClaimTemplateV1Beta1__checks.go | 65 + ...ResourceClaimTemplateV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeResourceClaimV1Alpha3.go | 319 + .../k8s/KubeResourceClaimV1Alpha3Props.go | 15 + .../k8s/KubeResourceClaimV1Alpha3__checks.go | 65 + .../KubeResourceClaimV1Alpha3__no_checks.go | 25 + pods/imports/k8s/KubeResourceClaimV1Beta1.go | 319 + .../k8s/KubeResourceClaimV1Beta1Props.go | 15 + .../k8s/KubeResourceClaimV1Beta1__checks.go | 65 + .../KubeResourceClaimV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeResourceQuota.go | 315 + pods/imports/k8s/KubeResourceQuotaList.go | 315 + .../imports/k8s/KubeResourceQuotaListProps.go | 13 + .../k8s/KubeResourceQuotaList__checks.go | 65 + .../k8s/KubeResourceQuotaList__no_checks.go | 25 + pods/imports/k8s/KubeResourceQuotaProps.go | 13 + pods/imports/k8s/KubeResourceQuota__checks.go | 59 + .../k8s/KubeResourceQuota__no_checks.go | 25 + .../k8s/KubeResourceSliceListV1Alpha3.go | 315 + .../k8s/KubeResourceSliceListV1Alpha3Props.go | 9 + .../KubeResourceSliceListV1Alpha3__checks.go | 65 + ...ubeResourceSliceListV1Alpha3__no_checks.go | 25 + .../k8s/KubeResourceSliceListV1Beta1.go | 315 + .../k8s/KubeResourceSliceListV1Beta1Props.go | 9 + .../KubeResourceSliceListV1Beta1__checks.go | 65 + ...KubeResourceSliceListV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeResourceSliceV1Alpha3.go | 327 + .../k8s/KubeResourceSliceV1Alpha3Props.go | 23 + .../k8s/KubeResourceSliceV1Alpha3__checks.go | 65 + .../KubeResourceSliceV1Alpha3__no_checks.go | 25 + pods/imports/k8s/KubeResourceSliceV1Beta1.go | 327 + .../k8s/KubeResourceSliceV1Beta1Props.go | 23 + .../k8s/KubeResourceSliceV1Beta1__checks.go | 65 + .../KubeResourceSliceV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeRole.go | 315 + pods/imports/k8s/KubeRoleBinding.go | 317 + pods/imports/k8s/KubeRoleBindingList.go | 315 + pods/imports/k8s/KubeRoleBindingListProps.go | 9 + .../k8s/KubeRoleBindingList__checks.go | 65 + .../k8s/KubeRoleBindingList__no_checks.go | 25 + pods/imports/k8s/KubeRoleBindingProps.go | 15 + pods/imports/k8s/KubeRoleBinding__checks.go | 65 + .../imports/k8s/KubeRoleBinding__no_checks.go | 25 + pods/imports/k8s/KubeRoleList.go | 315 + pods/imports/k8s/KubeRoleListProps.go | 9 + pods/imports/k8s/KubeRoleList__checks.go | 65 + pods/imports/k8s/KubeRoleList__no_checks.go | 25 + pods/imports/k8s/KubeRoleProps.go | 9 + pods/imports/k8s/KubeRole__checks.go | 59 + pods/imports/k8s/KubeRole__no_checks.go | 25 + pods/imports/k8s/KubeRuntimeClass.go | 317 + pods/imports/k8s/KubeRuntimeClassList.go | 315 + pods/imports/k8s/KubeRuntimeClassListProps.go | 11 + .../k8s/KubeRuntimeClassList__checks.go | 65 + .../k8s/KubeRuntimeClassList__no_checks.go | 25 + pods/imports/k8s/KubeRuntimeClassProps.go | 22 + pods/imports/k8s/KubeRuntimeClass__checks.go | 65 + .../k8s/KubeRuntimeClass__no_checks.go | 25 + pods/imports/k8s/KubeScale.go | 315 + pods/imports/k8s/KubeScaleProps.go | 13 + pods/imports/k8s/KubeScale__checks.go | 59 + pods/imports/k8s/KubeScale__no_checks.go | 25 + pods/imports/k8s/KubeSecret.go | 317 + pods/imports/k8s/KubeSecretList.go | 315 + pods/imports/k8s/KubeSecretListProps.go | 13 + pods/imports/k8s/KubeSecretList__checks.go | 65 + pods/imports/k8s/KubeSecretList__no_checks.go | 25 + pods/imports/k8s/KubeSecretProps.go | 27 + pods/imports/k8s/KubeSecret__checks.go | 59 + pods/imports/k8s/KubeSecret__no_checks.go | 25 + .../k8s/KubeSelfSubjectAccessReview.go | 317 + .../k8s/KubeSelfSubjectAccessReviewProps.go | 15 + .../KubeSelfSubjectAccessReview__checks.go | 65 + .../KubeSelfSubjectAccessReview__no_checks.go | 25 + pods/imports/k8s/KubeSelfSubjectReview.go | 317 + .../imports/k8s/KubeSelfSubjectReviewProps.go | 11 + .../k8s/KubeSelfSubjectReviewV1Beta1.go | 317 + .../k8s/KubeSelfSubjectReviewV1Beta1Props.go | 11 + .../KubeSelfSubjectReviewV1Beta1__checks.go | 59 + ...KubeSelfSubjectReviewV1Beta1__no_checks.go | 25 + .../k8s/KubeSelfSubjectReview__checks.go | 59 + .../k8s/KubeSelfSubjectReview__no_checks.go | 25 + .../imports/k8s/KubeSelfSubjectRulesReview.go | 317 + .../k8s/KubeSelfSubjectRulesReviewProps.go | 13 + .../k8s/KubeSelfSubjectRulesReview__checks.go | 65 + .../KubeSelfSubjectRulesReview__no_checks.go | 25 + pods/imports/k8s/KubeService.go | 315 + pods/imports/k8s/KubeServiceAccount.go | 315 + pods/imports/k8s/KubeServiceAccountList.go | 315 + .../k8s/KubeServiceAccountListProps.go | 13 + .../k8s/KubeServiceAccountList__checks.go | 65 + .../k8s/KubeServiceAccountList__no_checks.go | 25 + pods/imports/k8s/KubeServiceAccountProps.go | 21 + .../imports/k8s/KubeServiceAccount__checks.go | 59 + .../k8s/KubeServiceAccount__no_checks.go | 25 + .../imports/k8s/KubeServiceCidrListV1Beta1.go | 315 + .../k8s/KubeServiceCidrListV1Beta1Props.go | 11 + .../k8s/KubeServiceCidrListV1Beta1__checks.go | 65 + .../KubeServiceCidrListV1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeServiceCidrv1Beta1.go | 315 + .../k8s/KubeServiceCidrv1Beta1Props.go | 13 + .../k8s/KubeServiceCidrv1Beta1__checks.go | 59 + .../k8s/KubeServiceCidrv1Beta1__no_checks.go | 25 + pods/imports/k8s/KubeServiceList.go | 315 + pods/imports/k8s/KubeServiceListProps.go | 11 + pods/imports/k8s/KubeServiceList__checks.go | 65 + .../imports/k8s/KubeServiceList__no_checks.go | 25 + pods/imports/k8s/KubeServiceProps.go | 13 + pods/imports/k8s/KubeService__checks.go | 59 + pods/imports/k8s/KubeService__no_checks.go | 25 + pods/imports/k8s/KubeStatefulSet.go | 321 + pods/imports/k8s/KubeStatefulSetList.go | 315 + pods/imports/k8s/KubeStatefulSetListProps.go | 11 + .../k8s/KubeStatefulSetList__checks.go | 65 + .../k8s/KubeStatefulSetList__no_checks.go | 25 + pods/imports/k8s/KubeStatefulSetProps.go | 17 + pods/imports/k8s/KubeStatefulSet__checks.go | 59 + .../imports/k8s/KubeStatefulSet__no_checks.go | 25 + pods/imports/k8s/KubeStatus.go | 315 + pods/imports/k8s/KubeStatusProps.go | 21 + pods/imports/k8s/KubeStatus__checks.go | 59 + pods/imports/k8s/KubeStatus__no_checks.go | 25 + pods/imports/k8s/KubeStorageClass.go | 317 + pods/imports/k8s/KubeStorageClassList.go | 315 + pods/imports/k8s/KubeStorageClassListProps.go | 9 + .../k8s/KubeStorageClassList__checks.go | 65 + .../k8s/KubeStorageClassList__no_checks.go | 25 + pods/imports/k8s/KubeStorageClassProps.go | 35 + pods/imports/k8s/KubeStorageClass__checks.go | 65 + .../k8s/KubeStorageClass__no_checks.go | 25 + .../k8s/KubeStorageVersionListV1Alpha1.go | 315 + .../KubeStorageVersionListV1Alpha1Props.go | 11 + .../KubeStorageVersionListV1Alpha1__checks.go | 65 + ...beStorageVersionListV1Alpha1__no_checks.go | 25 + ...KubeStorageVersionMigrationListV1Alpha1.go | 315 + ...torageVersionMigrationListV1Alpha1Props.go | 9 + ...ageVersionMigrationListV1Alpha1__checks.go | 65 + ...VersionMigrationListV1Alpha1__no_checks.go | 25 + .../KubeStorageVersionMigrationV1Alpha1.go | 315 + ...ubeStorageVersionMigrationV1Alpha1Props.go | 11 + ...StorageVersionMigrationV1Alpha1__checks.go | 59 + ...rageVersionMigrationV1Alpha1__no_checks.go | 25 + .../imports/k8s/KubeStorageVersionV1Alpha1.go | 315 + .../k8s/KubeStorageVersionV1Alpha1Props.go | 11 + .../k8s/KubeStorageVersionV1Alpha1__checks.go | 65 + .../KubeStorageVersionV1Alpha1__no_checks.go | 25 + pods/imports/k8s/KubeSubjectAccessReview.go | 315 + .../k8s/KubeSubjectAccessReviewProps.go | 11 + .../k8s/KubeSubjectAccessReview__checks.go | 65 + .../k8s/KubeSubjectAccessReview__no_checks.go | 25 + pods/imports/k8s/KubeTokenRequest.go | 315 + pods/imports/k8s/KubeTokenRequestProps.go | 11 + pods/imports/k8s/KubeTokenRequest__checks.go | 65 + .../k8s/KubeTokenRequest__no_checks.go | 25 + pods/imports/k8s/KubeTokenReview.go | 317 + pods/imports/k8s/KubeTokenReviewProps.go | 13 + pods/imports/k8s/KubeTokenReview__checks.go | 65 + .../imports/k8s/KubeTokenReview__no_checks.go | 25 + .../k8s/KubeValidatingAdmissionPolicy.go | 315 + .../KubeValidatingAdmissionPolicyBinding.go | 321 + ...ubeValidatingAdmissionPolicyBindingList.go | 315 + ...lidatingAdmissionPolicyBindingListProps.go | 11 + ...datingAdmissionPolicyBindingListV1Beta1.go | 315 + ...gAdmissionPolicyBindingListV1Beta1Props.go | 11 + ...missionPolicyBindingListV1Beta1__checks.go | 65 + ...sionPolicyBindingListV1Beta1__no_checks.go | 25 + ...atingAdmissionPolicyBindingList__checks.go | 65 + ...ngAdmissionPolicyBindingList__no_checks.go | 25 + ...beValidatingAdmissionPolicyBindingProps.go | 17 + ...ValidatingAdmissionPolicyBindingV1Beta1.go | 321 + ...atingAdmissionPolicyBindingV1Beta1Props.go | 17 + ...ngAdmissionPolicyBindingV1Beta1__checks.go | 59 + ...dmissionPolicyBindingV1Beta1__no_checks.go | 25 + ...alidatingAdmissionPolicyBinding__checks.go | 59 + ...datingAdmissionPolicyBinding__no_checks.go | 25 + .../k8s/KubeValidatingAdmissionPolicyList.go | 315 + .../KubeValidatingAdmissionPolicyListProps.go | 11 + ...ubeValidatingAdmissionPolicyListV1Beta1.go | 315 + ...lidatingAdmissionPolicyListV1Beta1Props.go | 11 + ...atingAdmissionPolicyListV1Beta1__checks.go | 65 + ...ngAdmissionPolicyListV1Beta1__no_checks.go | 25 + ...beValidatingAdmissionPolicyList__checks.go | 65 + ...alidatingAdmissionPolicyList__no_checks.go | 25 + .../k8s/KubeValidatingAdmissionPolicyProps.go | 11 + .../KubeValidatingAdmissionPolicyV1Beta1.go | 315 + ...beValidatingAdmissionPolicyV1Beta1Props.go | 11 + ...alidatingAdmissionPolicyV1Beta1__checks.go | 59 + ...datingAdmissionPolicyV1Beta1__no_checks.go | 25 + .../KubeValidatingAdmissionPolicy__checks.go | 59 + ...ubeValidatingAdmissionPolicy__no_checks.go | 25 + .../k8s/KubeValidatingWebhookConfiguration.go | 315 + .../KubeValidatingWebhookConfigurationList.go | 315 + ...ValidatingWebhookConfigurationListProps.go | 11 + ...idatingWebhookConfigurationList__checks.go | 65 + ...tingWebhookConfigurationList__no_checks.go | 25 + ...KubeValidatingWebhookConfigurationProps.go | 11 + ...eValidatingWebhookConfiguration__checks.go | 59 + ...lidatingWebhookConfiguration__no_checks.go | 25 + pods/imports/k8s/KubeVolumeAttachment.go | 317 + pods/imports/k8s/KubeVolumeAttachmentList.go | 315 + .../k8s/KubeVolumeAttachmentListProps.go | 9 + .../k8s/KubeVolumeAttachmentList__checks.go | 65 + .../KubeVolumeAttachmentList__no_checks.go | 25 + pods/imports/k8s/KubeVolumeAttachmentProps.go | 15 + .../k8s/KubeVolumeAttachment__checks.go | 65 + .../k8s/KubeVolumeAttachment__no_checks.go | 25 + .../KubeVolumeAttributesClassListV1Alpha1.go | 315 + ...eVolumeAttributesClassListV1Alpha1Props.go | 9 + ...lumeAttributesClassListV1Alpha1__checks.go | 65 + ...eAttributesClassListV1Alpha1__no_checks.go | 25 + .../KubeVolumeAttributesClassListV1Beta1.go | 315 + ...beVolumeAttributesClassListV1Beta1Props.go | 9 + ...olumeAttributesClassListV1Beta1__checks.go | 65 + ...meAttributesClassListV1Beta1__no_checks.go | 25 + .../k8s/KubeVolumeAttributesClassV1Alpha1.go | 317 + .../KubeVolumeAttributesClassV1Alpha1Props.go | 19 + ...beVolumeAttributesClassV1Alpha1__checks.go | 65 + ...olumeAttributesClassV1Alpha1__no_checks.go | 25 + .../k8s/KubeVolumeAttributesClassV1Beta1.go | 317 + .../KubeVolumeAttributesClassV1Beta1Props.go | 19 + ...ubeVolumeAttributesClassV1Beta1__checks.go | 65 + ...VolumeAttributesClassV1Beta1__no_checks.go | 25 + pods/imports/k8s/LabelSelector.go | 15 + pods/imports/k8s/LabelSelectorAttributes.go | 15 + pods/imports/k8s/LabelSelectorRequirement.go | 15 + .../imports/k8s/LeaseCandidateSpecV1Alpha2.go | 33 + pods/imports/k8s/LeaseSpec.go | 31 + pods/imports/k8s/Lifecycle.go | 15 + pods/imports/k8s/LifecycleHandler.go | 17 + pods/imports/k8s/LimitRangeItem.go | 19 + pods/imports/k8s/LimitRangeSpec.go | 7 + pods/imports/k8s/LimitResponse.go | 13 + .../k8s/LimitedPriorityLevelConfiguration.go | 37 + pods/imports/k8s/ListMeta.go | 21 + pods/imports/k8s/LocalObjectReference.go | 9 + pods/imports/k8s/LocalVolumeSource.go | 13 + pods/imports/k8s/ManagedFieldsEntry.go | 33 + pods/imports/k8s/MatchCondition.go | 23 + pods/imports/k8s/MatchConditionV1Alpha1.go | 22 + pods/imports/k8s/MatchConditionV1Beta1.go | 23 + pods/imports/k8s/MatchResources.go | 67 + pods/imports/k8s/MatchResourcesV1Alpha1.go | 67 + pods/imports/k8s/MatchResourcesV1Beta1.go | 67 + pods/imports/k8s/MetricIdentifierV2.go | 11 + pods/imports/k8s/MetricSpecV2.go | 23 + pods/imports/k8s/MetricTargetV2.go | 15 + ...atingAdmissionPolicyBindingSpecV1Alpha1.go | 17 + .../MutatingAdmissionPolicySpecV1Alpha1.go | 56 + pods/imports/k8s/MutatingWebhook.go | 112 + pods/imports/k8s/MutationV1Alpha1.go | 15 + pods/imports/k8s/NamedRuleWithOperations.go | 35 + .../k8s/NamedRuleWithOperationsV1Alpha1.go | 35 + .../k8s/NamedRuleWithOperationsV1Beta1.go | 35 + pods/imports/k8s/NamespaceSpec.go | 9 + pods/imports/k8s/NetworkPolicyEgressRule.go | 15 + pods/imports/k8s/NetworkPolicyIngressRule.go | 15 + pods/imports/k8s/NetworkPolicyPeer.go | 23 + pods/imports/k8s/NetworkPolicyPort.go | 17 + pods/imports/k8s/NetworkPolicySpec.go | 21 + pods/imports/k8s/NfsVolumeSource.go | 21 + pods/imports/k8s/NodeAffinity.go | 13 + pods/imports/k8s/NodeConfigSource.go | 9 + pods/imports/k8s/NodeSelector.go | 11 + pods/imports/k8s/NodeSelectorRequirement.go | 15 + pods/imports/k8s/NodeSelectorTerm.go | 11 + pods/imports/k8s/NodeSpec.go | 27 + pods/imports/k8s/NonResourceAttributes.go | 9 + pods/imports/k8s/NonResourcePolicyRule.go | 21 + pods/imports/k8s/ObjectFieldSelector.go | 9 + pods/imports/k8s/ObjectMeta.go | 81 + pods/imports/k8s/ObjectMetricSourceV2.go | 11 + pods/imports/k8s/ObjectReference.go | 29 + .../k8s/OpaqueDeviceConfigurationV1Alpha3.go | 17 + .../k8s/OpaqueDeviceConfigurationV1Beta1.go | 17 + pods/imports/k8s/Overhead.go | 7 + pods/imports/k8s/OwnerReference.go | 29 + pods/imports/k8s/ParamKind.go | 13 + pods/imports/k8s/ParamKindV1Alpha1.go | 13 + pods/imports/k8s/ParamKindV1Beta1.go | 13 + pods/imports/k8s/ParamRef.go | 37 + pods/imports/k8s/ParamRefV1Alpha1.go | 35 + pods/imports/k8s/ParamRefV1Beta1.go | 37 + pods/imports/k8s/ParentReferenceV1Beta1.go | 13 + pods/imports/k8s/PersistentVolumeClaimSpec.go | 42 + .../k8s/PersistentVolumeClaimTemplate.go | 13 + .../k8s/PersistentVolumeClaimVolumeSource.go | 15 + pods/imports/k8s/PersistentVolumeSpec.go | 121 + .../k8s/PhotonPersistentDiskVolumeSource.go | 11 + pods/imports/k8s/PodAffinity.go | 13 + pods/imports/k8s/PodAffinityTerm.go | 29 + pods/imports/k8s/PodAntiAffinity.go | 13 + pods/imports/k8s/PodDisruptionBudgetSpec.go | 27 + pods/imports/k8s/PodDnsConfig.go | 17 + pods/imports/k8s/PodDnsConfigOption.go | 11 + pods/imports/k8s/PodFailurePolicy.go | 9 + .../PodFailurePolicyOnExitCodesRequirement.go | 27 + .../PodFailurePolicyOnPodConditionsPattern.go | 15 + pods/imports/k8s/PodFailurePolicyRule.go | 27 + pods/imports/k8s/PodOs.go | 9 + pods/imports/k8s/PodReadinessGate.go | 7 + pods/imports/k8s/PodResourceClaim.go | 23 + pods/imports/k8s/PodSchedulingGate.go | 9 + pods/imports/k8s/PodSecurityContext.go | 75 + pods/imports/k8s/PodSpec.go | 189 + pods/imports/k8s/PodTemplateSpec.go | 13 + pods/imports/k8s/PodsMetricSourceV2.go | 11 + pods/imports/k8s/PolicyRule.go | 25 + pods/imports/k8s/PolicyRulesWithSubjects.go | 17 + pods/imports/k8s/PortworxVolumeSource.go | 15 + pods/imports/k8s/Preconditions.go | 9 + pods/imports/k8s/PreferredSchedulingTerm.go | 9 + .../PriorityLevelConfigurationReference.go | 7 + .../k8s/PriorityLevelConfigurationSpec.go | 17 + pods/imports/k8s/Probe.go | 45 + pods/imports/k8s/ProjectedVolumeSource.go | 13 + pods/imports/k8s/Quantity.go | 61 + pods/imports/k8s/Quantity__checks.go | 23 + pods/imports/k8s/Quantity__no_checks.go | 13 + pods/imports/k8s/QueuingConfiguration.go | 17 + pods/imports/k8s/QuobyteVolumeSource.go | 27 + pods/imports/k8s/RbdPersistentVolumeSource.go | 49 + pods/imports/k8s/RbdVolumeSource.go | 49 + pods/imports/k8s/ReplicaSetSpec.go | 25 + pods/imports/k8s/ReplicationControllerSpec.go | 25 + pods/imports/k8s/ResourceAttributes.go | 41 + pods/imports/k8s/ResourceClaim.go | 11 + pods/imports/k8s/ResourceClaimSpecV1Alpha3.go | 7 + pods/imports/k8s/ResourceClaimSpecV1Beta1.go | 7 + .../k8s/ResourceClaimTemplateSpecV1Alpha3.go | 13 + .../k8s/ResourceClaimTemplateSpecV1Beta1.go | 13 + pods/imports/k8s/ResourceFieldSelector.go | 11 + pods/imports/k8s/ResourceMetricSourceV2.go | 9 + pods/imports/k8s/ResourcePolicyRule.go | 25 + pods/imports/k8s/ResourcePoolV1Alpha3.go | 21 + pods/imports/k8s/ResourcePoolV1Beta1.go | 21 + pods/imports/k8s/ResourceQuotaSpec.go | 17 + pods/imports/k8s/ResourceRequirements.go | 19 + pods/imports/k8s/ResourceSliceSpecV1Alpha3.go | 35 + pods/imports/k8s/ResourceSliceSpecV1Beta1.go | 35 + pods/imports/k8s/RoleRef.go | 11 + pods/imports/k8s/RollingUpdateDaemonSet.go | 13 + pods/imports/k8s/RollingUpdateDeployment.go | 17 + .../k8s/RollingUpdateStatefulSetStrategy.go | 15 + pods/imports/k8s/RuleWithOperations.go | 33 + .../k8s/ScaleIoPersistentVolumeSource.go | 37 + pods/imports/k8s/ScaleIoVolumeSource.go | 39 + pods/imports/k8s/ScaleSpec.go | 7 + pods/imports/k8s/Scheduling.go | 11 + pods/imports/k8s/ScopeSelector.go | 7 + .../k8s/ScopedResourceSelectorRequirement.go | 15 + pods/imports/k8s/SeLinuxOptions.go | 13 + pods/imports/k8s/SeccompProfile.go | 15 + pods/imports/k8s/SecretEnvSource.go | 13 + pods/imports/k8s/SecretKeySelector.go | 15 + pods/imports/k8s/SecretProjection.go | 17 + pods/imports/k8s/SecretReference.go | 11 + pods/imports/k8s/SecretVolumeSource.go | 23 + pods/imports/k8s/SecurityContext.go | 63 + pods/imports/k8s/SelectableField.go | 9 + .../k8s/SelfSubjectAccessReviewSpec.go | 11 + .../imports/k8s/SelfSubjectRulesReviewSpec.go | 9 + .../k8s/ServiceAccountTokenProjection.go | 19 + pods/imports/k8s/ServiceBackendPort.go | 11 + pods/imports/k8s/ServiceCidrSpecV1Beta1.go | 7 + pods/imports/k8s/ServicePort.go | 38 + pods/imports/k8s/ServiceReference.go | 21 + pods/imports/k8s/ServiceSpec.go | 89 + pods/imports/k8s/SessionAffinityConfig.go | 7 + pods/imports/k8s/SleepAction.go | 7 + pods/imports/k8s/StatefulSetOrdinals.go | 12 + ...SetPersistentVolumeClaimRetentionPolicy.go | 13 + pods/imports/k8s/StatefulSetSpec.go | 49 + pods/imports/k8s/StatefulSetUpdateStrategy.go | 15 + pods/imports/k8s/StatusCause.go | 21 + pods/imports/k8s/StatusDetails.go | 27 + .../k8s/StorageOsPersistentVolumeSource.go | 25 + pods/imports/k8s/StorageOsVolumeSource.go | 25 + .../StorageVersionMigrationSpecV1Alpha1.go | 13 + pods/imports/k8s/Subject.go | 23 + pods/imports/k8s/SubjectAccessReviewSpec.go | 21 + pods/imports/k8s/SuccessPolicy.go | 7 + pods/imports/k8s/SuccessPolicyRule.go | 15 + pods/imports/k8s/Sysctl.go | 9 + pods/imports/k8s/Taint.go | 23 + pods/imports/k8s/TcpSocketAction.go | 11 + pods/imports/k8s/TokenRequest.go | 13 + pods/imports/k8s/TokenRequestSpec.go | 17 + pods/imports/k8s/TokenReviewSpec.go | 11 + pods/imports/k8s/Toleration.go | 27 + .../k8s/TopologySelectorLabelRequirement.go | 13 + pods/imports/k8s/TopologySelectorTerm.go | 9 + pods/imports/k8s/TopologySpreadConstraint.go | 48 + pods/imports/k8s/TypedLocalObjectReference.go | 13 + pods/imports/k8s/TypedObjectReference.go | 15 + .../ValidatingAdmissionPolicyBindingSpec.go | 39 + ...datingAdmissionPolicyBindingSpecV1Beta1.go | 39 + .../k8s/ValidatingAdmissionPolicySpec.go | 54 + .../ValidatingAdmissionPolicySpecV1Beta1.go | 54 + pods/imports/k8s/ValidatingWebhook.go | 100 + pods/imports/k8s/Validation.go | 46 + pods/imports/k8s/ValidationRule.go | 65 + pods/imports/k8s/ValidationV1Beta1.go | 46 + pods/imports/k8s/Variable.go | 15 + pods/imports/k8s/VariableV1Alpha1.go | 13 + pods/imports/k8s/VariableV1Beta1.go | 15 + pods/imports/k8s/Volume.go | 134 + pods/imports/k8s/VolumeAttachmentSource.go | 13 + pods/imports/k8s/VolumeAttachmentSpec.go | 13 + pods/imports/k8s/VolumeDevice.go | 9 + pods/imports/k8s/VolumeMount.go | 43 + pods/imports/k8s/VolumeNodeAffinity.go | 7 + pods/imports/k8s/VolumeNodeResources.go | 9 + pods/imports/k8s/VolumeProjection.go | 23 + .../imports/k8s/VolumeResourceRequirements.go | 13 + .../k8s/VsphereVirtualDiskVolumeSource.go | 15 + pods/imports/k8s/WebhookClientConfig.go | 27 + pods/imports/k8s/WebhookConversion.go | 11 + pods/imports/k8s/WeightedPodAffinityTerm.go | 11 + .../k8s/WindowsSecurityContextOptions.go | 19 + pods/imports/k8s/internal/types.go | 7 + pods/imports/k8s/jsii/jsii.go | 28 + pods/imports/k8s/jsii/k8s-0.0.0.tgz | Bin 0 -> 763629 bytes pods/imports/k8s/main.go | 5374 +++++++++++++++++ pods/imports/k8s/version | 1 + .../monitoringcoreoscom/ServiceMonitor.go | 317 + .../ServiceMonitorProps.go | 13 + .../monitoringcoreoscom/ServiceMonitorSpec.go | 47 + .../ServiceMonitorSpecAttachMetadata.go | 11 + .../ServiceMonitorSpecEndpoints.go | 83 + ...erviceMonitorSpecEndpointsAuthorization.go | 17 + ...orSpecEndpointsAuthorizationCredentials.go | 17 + .../ServiceMonitorSpecEndpointsBasicAuth.go | 13 + ...ceMonitorSpecEndpointsBasicAuthPassword.go | 17 + ...ceMonitorSpecEndpointsBasicAuthUsername.go | 17 + ...ceMonitorSpecEndpointsBearerTokenSecret.go | 20 + ...ceMonitorSpecEndpointsMetricRelabelings.go | 35 + ...torSpecEndpointsMetricRelabelingsAction.go | 34 + .../ServiceMonitorSpecEndpointsOauth2.go | 20 + ...rviceMonitorSpecEndpointsOauth2ClientId.go | 11 + ...torSpecEndpointsOauth2ClientIdConfigMap.go | 15 + ...onitorSpecEndpointsOauth2ClientIdSecret.go | 17 + ...eMonitorSpecEndpointsOauth2ClientSecret.go | 17 + .../ServiceMonitorSpecEndpointsRelabelings.go | 35 + ...ceMonitorSpecEndpointsRelabelingsAction.go | 34 + .../ServiceMonitorSpecEndpointsScheme.go | 16 + .../ServiceMonitorSpecEndpointsTargetPort.go | 66 + ...eMonitorSpecEndpointsTargetPort__checks.go | 24 + ...nitorSpecEndpointsTargetPort__no_checks.go | 14 + .../ServiceMonitorSpecEndpointsTlsConfig.go | 23 + .../ServiceMonitorSpecEndpointsTlsConfigCa.go | 11 + ...onitorSpecEndpointsTlsConfigCaConfigMap.go | 15 + ...ceMonitorSpecEndpointsTlsConfigCaSecret.go | 17 + ...erviceMonitorSpecEndpointsTlsConfigCert.go | 11 + ...itorSpecEndpointsTlsConfigCertConfigMap.go | 15 + ...MonitorSpecEndpointsTlsConfigCertSecret.go | 17 + ...eMonitorSpecEndpointsTlsConfigKeySecret.go | 17 + .../ServiceMonitorSpecNamespaceSelector.go | 11 + .../ServiceMonitorSpecSelector.go | 15 + ...viceMonitorSpecSelectorMatchExpressions.go | 17 + .../ServiceMonitor__checks.go | 66 + .../ServiceMonitor__no_checks.go | 26 + .../monitoringcoreoscom/internal/types.go | 5 + pods/imports/monitoringcoreoscom/jsii/jsii.go | 28 + .../jsii/monitoringcoreoscom-0.0.0.tgz | Bin 0 -> 34234 bytes pods/imports/monitoringcoreoscom/main.go | 197 + pods/imports/monitoringcoreoscom/version | 1 + pods/kind.yml | 9 + pods/log.go | 33 + pods/pods.go | 382 ++ pods/pods_test.go | 268 + pods/sync.go | 129 + 1037 files changed, 84392 insertions(+) create mode 100755 pods/.githooks/go-lint create mode 100755 pods/.githooks/go-test create mode 100755 pods/.githooks/typos create mode 100644 pods/.github/workflows/pods-test-deploy.yml create mode 100644 pods/.github/workflows/pods-test.yml create mode 100644 pods/.gitignore create mode 100644 pods/.golangci.yaml create mode 100644 pods/.pre-commit-config.yaml create mode 100644 pods/.testcoverage.yml create mode 100644 pods/Justfile create mode 100644 pods/README.md create mode 100755 pods/__snapshots__/pods_test.snap create mode 100644 pods/_typos.toml create mode 100644 pods/cdk8s.yaml create mode 100644 pods/client.go create mode 100644 pods/cover.svg create mode 100644 pods/crds/monitoring.coreos.com.yml create mode 100644 pods/defaults.go create mode 100644 pods/devbox.json create mode 100644 pods/devbox.lock create mode 100644 pods/environment/Justfile create mode 100644 pods/environment/README.md create mode 100644 pods/environment/environment.go create mode 100644 pods/environment/go.mod create mode 100644 pods/environment/go.sum create mode 100644 pods/environment/kind.yml create mode 100644 pods/forward.go create mode 100644 pods/go.mod create mode 100644 pods/go.sum create mode 100644 pods/imports/k8s/Affinity.go create mode 100644 pods/imports/k8s/AggregationRule.go create mode 100644 pods/imports/k8s/ApiServiceSpec.go create mode 100644 pods/imports/k8s/AppArmorProfile.go create mode 100644 pods/imports/k8s/ApplyConfigurationV1Alpha1.go create mode 100644 pods/imports/k8s/AuditAnnotation.go create mode 100644 pods/imports/k8s/AuditAnnotationV1Beta1.go create mode 100644 pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go create mode 100644 pods/imports/k8s/AzureDiskVolumeSource.go create mode 100644 pods/imports/k8s/AzureFilePersistentVolumeSource.go create mode 100644 pods/imports/k8s/AzureFileVolumeSource.go create mode 100644 pods/imports/k8s/BasicDeviceV1Alpha3.go create mode 100644 pods/imports/k8s/BasicDeviceV1Beta1.go create mode 100644 pods/imports/k8s/BoundObjectReference.go create mode 100644 pods/imports/k8s/Capabilities.go create mode 100644 pods/imports/k8s/CelDeviceSelectorV1Alpha3.go create mode 100644 pods/imports/k8s/CelDeviceSelectorV1Beta1.go create mode 100644 pods/imports/k8s/CephFsPersistentVolumeSource.go create mode 100644 pods/imports/k8s/CephFsVolumeSource.go create mode 100644 pods/imports/k8s/CertificateSigningRequestSpec.go create mode 100644 pods/imports/k8s/CinderPersistentVolumeSource.go create mode 100644 pods/imports/k8s/CinderVolumeSource.go create mode 100644 pods/imports/k8s/ClientIpConfig.go create mode 100644 pods/imports/k8s/ClusterTrustBundleProjection.go create mode 100644 pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go create mode 100644 pods/imports/k8s/ComponentCondition.go create mode 100644 pods/imports/k8s/ConfigMapEnvSource.go create mode 100644 pods/imports/k8s/ConfigMapKeySelector.go create mode 100644 pods/imports/k8s/ConfigMapNodeConfigSource.go create mode 100644 pods/imports/k8s/ConfigMapProjection.go create mode 100644 pods/imports/k8s/ConfigMapVolumeSource.go create mode 100644 pods/imports/k8s/Container.go create mode 100644 pods/imports/k8s/ContainerPort.go create mode 100644 pods/imports/k8s/ContainerResizePolicy.go create mode 100644 pods/imports/k8s/ContainerResourceMetricSourceV2.go create mode 100644 pods/imports/k8s/CronJobSpec.go create mode 100644 pods/imports/k8s/CrossVersionObjectReference.go create mode 100644 pods/imports/k8s/CrossVersionObjectReferenceV2.go create mode 100644 pods/imports/k8s/CsiDriverSpec.go create mode 100644 pods/imports/k8s/CsiNodeDriver.go create mode 100644 pods/imports/k8s/CsiNodeSpec.go create mode 100644 pods/imports/k8s/CsiPersistentVolumeSource.go create mode 100644 pods/imports/k8s/CsiVolumeSource.go create mode 100644 pods/imports/k8s/CustomResourceColumnDefinition.go create mode 100644 pods/imports/k8s/CustomResourceConversion.go create mode 100644 pods/imports/k8s/CustomResourceDefinitionNames.go create mode 100644 pods/imports/k8s/CustomResourceDefinitionSpec.go create mode 100644 pods/imports/k8s/CustomResourceDefinitionVersion.go create mode 100644 pods/imports/k8s/CustomResourceSubresourceScale.go create mode 100644 pods/imports/k8s/CustomResourceSubresources.go create mode 100644 pods/imports/k8s/CustomResourceValidation.go create mode 100644 pods/imports/k8s/DaemonSetSpec.go create mode 100644 pods/imports/k8s/DaemonSetUpdateStrategy.go create mode 100644 pods/imports/k8s/DeleteOptions.go create mode 100644 pods/imports/k8s/DeploymentSpec.go create mode 100644 pods/imports/k8s/DeploymentStrategy.go create mode 100644 pods/imports/k8s/DeviceAttributeV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceAttributeV1Beta1.go create mode 100644 pods/imports/k8s/DeviceCapacityV1Beta1.go create mode 100644 pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go create mode 100644 pods/imports/k8s/DeviceClaimV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceClaimV1Beta1.go create mode 100644 pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceClassConfigurationV1Beta1.go create mode 100644 pods/imports/k8s/DeviceClassSpecV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceClassSpecV1Beta1.go create mode 100644 pods/imports/k8s/DeviceConstraintV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceConstraintV1Beta1.go create mode 100644 pods/imports/k8s/DeviceRequestV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceRequestV1Beta1.go create mode 100644 pods/imports/k8s/DeviceSelectorV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceSelectorV1Beta1.go create mode 100644 pods/imports/k8s/DeviceV1Alpha3.go create mode 100644 pods/imports/k8s/DeviceV1Beta1.go create mode 100644 pods/imports/k8s/DownwardApiProjection.go create mode 100644 pods/imports/k8s/DownwardApiVolumeFile.go create mode 100644 pods/imports/k8s/DownwardApiVolumeSource.go create mode 100644 pods/imports/k8s/EmptyDirVolumeSource.go create mode 100644 pods/imports/k8s/Endpoint.go create mode 100644 pods/imports/k8s/EndpointAddress.go create mode 100644 pods/imports/k8s/EndpointConditions.go create mode 100644 pods/imports/k8s/EndpointHints.go create mode 100644 pods/imports/k8s/EndpointPort.go create mode 100644 pods/imports/k8s/EndpointSubset.go create mode 100644 pods/imports/k8s/EnvFromSource.go create mode 100644 pods/imports/k8s/EnvVar.go create mode 100644 pods/imports/k8s/EnvVarSource.go create mode 100644 pods/imports/k8s/EphemeralContainer.go create mode 100644 pods/imports/k8s/EphemeralVolumeSource.go create mode 100644 pods/imports/k8s/EventSeries.go create mode 100644 pods/imports/k8s/EventSource.go create mode 100644 pods/imports/k8s/ExecAction.go create mode 100644 pods/imports/k8s/ExemptPriorityLevelConfiguration.go create mode 100644 pods/imports/k8s/ExternalDocumentation.go create mode 100644 pods/imports/k8s/ExternalMetricSourceV2.go create mode 100644 pods/imports/k8s/FcVolumeSource.go create mode 100644 pods/imports/k8s/FieldSelectorAttributes.go create mode 100644 pods/imports/k8s/FieldSelectorRequirement.go create mode 100644 pods/imports/k8s/FlexPersistentVolumeSource.go create mode 100644 pods/imports/k8s/FlexVolumeSource.go create mode 100644 pods/imports/k8s/FlockerVolumeSource.go create mode 100644 pods/imports/k8s/FlowDistinguisherMethod.go create mode 100644 pods/imports/k8s/FlowSchemaSpec.go create mode 100644 pods/imports/k8s/ForZone.go create mode 100644 pods/imports/k8s/GcePersistentDiskVolumeSource.go create mode 100644 pods/imports/k8s/GitRepoVolumeSource.go create mode 100644 pods/imports/k8s/GlusterfsPersistentVolumeSource.go create mode 100644 pods/imports/k8s/GlusterfsVolumeSource.go create mode 100644 pods/imports/k8s/GroupVersionResourceV1Alpha1.go create mode 100644 pods/imports/k8s/GrpcAction.go create mode 100644 pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go create mode 100644 pods/imports/k8s/HorizontalPodAutoscalerSpec.go create mode 100644 pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go create mode 100644 pods/imports/k8s/HostAlias.go create mode 100644 pods/imports/k8s/HostPathVolumeSource.go create mode 100644 pods/imports/k8s/HpaScalingPolicyV2.go create mode 100644 pods/imports/k8s/HpaScalingRulesV2.go create mode 100644 pods/imports/k8s/HttpGetAction.go create mode 100644 pods/imports/k8s/HttpHeader.go create mode 100644 pods/imports/k8s/HttpIngressPath.go create mode 100644 pods/imports/k8s/HttpIngressRuleValue.go create mode 100644 pods/imports/k8s/ImageVolumeSource.go create mode 100644 pods/imports/k8s/IngressBackend.go create mode 100644 pods/imports/k8s/IngressClassParametersReference.go create mode 100644 pods/imports/k8s/IngressClassSpec.go create mode 100644 pods/imports/k8s/IngressRule.go create mode 100644 pods/imports/k8s/IngressServiceBackend.go create mode 100644 pods/imports/k8s/IngressSpec.go create mode 100644 pods/imports/k8s/IngressTls.go create mode 100644 pods/imports/k8s/IntOrString.go create mode 100644 pods/imports/k8s/IntOrString__checks.go create mode 100644 pods/imports/k8s/IntOrString__no_checks.go create mode 100644 pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go create mode 100644 pods/imports/k8s/IpAddressSpecV1Beta1.go create mode 100644 pods/imports/k8s/IpBlock.go create mode 100644 pods/imports/k8s/IscsiPersistentVolumeSource.go create mode 100644 pods/imports/k8s/IscsiVolumeSource.go create mode 100644 pods/imports/k8s/JobSpec.go create mode 100644 pods/imports/k8s/JobTemplateSpec.go create mode 100644 pods/imports/k8s/JsonPatchV1Alpha1.go create mode 100644 pods/imports/k8s/JsonSchemaProps.go create mode 100644 pods/imports/k8s/KeyToPath.go create mode 100644 pods/imports/k8s/KubeApiService.go create mode 100644 pods/imports/k8s/KubeApiServiceList.go create mode 100644 pods/imports/k8s/KubeApiServiceListProps.go create mode 100644 pods/imports/k8s/KubeApiServiceList__checks.go create mode 100644 pods/imports/k8s/KubeApiServiceList__no_checks.go create mode 100644 pods/imports/k8s/KubeApiServiceProps.go create mode 100644 pods/imports/k8s/KubeApiService__checks.go create mode 100644 pods/imports/k8s/KubeApiService__no_checks.go create mode 100644 pods/imports/k8s/KubeBinding.go create mode 100644 pods/imports/k8s/KubeBindingProps.go create mode 100644 pods/imports/k8s/KubeBinding__checks.go create mode 100644 pods/imports/k8s/KubeBinding__no_checks.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequest.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequestList.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequestListProps.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequestList__checks.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequestProps.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequest__checks.go create mode 100644 pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go create mode 100644 pods/imports/k8s/KubeClusterRole.go create mode 100644 pods/imports/k8s/KubeClusterRoleBinding.go create mode 100644 pods/imports/k8s/KubeClusterRoleBindingList.go create mode 100644 pods/imports/k8s/KubeClusterRoleBindingListProps.go create mode 100644 pods/imports/k8s/KubeClusterRoleBindingList__checks.go create mode 100644 pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go create mode 100644 pods/imports/k8s/KubeClusterRoleBindingProps.go create mode 100644 pods/imports/k8s/KubeClusterRoleBinding__checks.go create mode 100644 pods/imports/k8s/KubeClusterRoleBinding__no_checks.go create mode 100644 pods/imports/k8s/KubeClusterRoleList.go create mode 100644 pods/imports/k8s/KubeClusterRoleListProps.go create mode 100644 pods/imports/k8s/KubeClusterRoleList__checks.go create mode 100644 pods/imports/k8s/KubeClusterRoleList__no_checks.go create mode 100644 pods/imports/k8s/KubeClusterRoleProps.go create mode 100644 pods/imports/k8s/KubeClusterRole__checks.go create mode 100644 pods/imports/k8s/KubeClusterRole__no_checks.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeComponentStatus.go create mode 100644 pods/imports/k8s/KubeComponentStatusList.go create mode 100644 pods/imports/k8s/KubeComponentStatusListProps.go create mode 100644 pods/imports/k8s/KubeComponentStatusList__checks.go create mode 100644 pods/imports/k8s/KubeComponentStatusList__no_checks.go create mode 100644 pods/imports/k8s/KubeComponentStatusProps.go create mode 100644 pods/imports/k8s/KubeComponentStatus__checks.go create mode 100644 pods/imports/k8s/KubeComponentStatus__no_checks.go create mode 100644 pods/imports/k8s/KubeConfigMap.go create mode 100644 pods/imports/k8s/KubeConfigMapList.go create mode 100644 pods/imports/k8s/KubeConfigMapListProps.go create mode 100644 pods/imports/k8s/KubeConfigMapList__checks.go create mode 100644 pods/imports/k8s/KubeConfigMapList__no_checks.go create mode 100644 pods/imports/k8s/KubeConfigMapProps.go create mode 100644 pods/imports/k8s/KubeConfigMap__checks.go create mode 100644 pods/imports/k8s/KubeConfigMap__no_checks.go create mode 100644 pods/imports/k8s/KubeControllerRevision.go create mode 100644 pods/imports/k8s/KubeControllerRevisionList.go create mode 100644 pods/imports/k8s/KubeControllerRevisionListProps.go create mode 100644 pods/imports/k8s/KubeControllerRevisionList__checks.go create mode 100644 pods/imports/k8s/KubeControllerRevisionList__no_checks.go create mode 100644 pods/imports/k8s/KubeControllerRevisionProps.go create mode 100644 pods/imports/k8s/KubeControllerRevision__checks.go create mode 100644 pods/imports/k8s/KubeControllerRevision__no_checks.go create mode 100644 pods/imports/k8s/KubeCronJob.go create mode 100644 pods/imports/k8s/KubeCronJobList.go create mode 100644 pods/imports/k8s/KubeCronJobListProps.go create mode 100644 pods/imports/k8s/KubeCronJobList__checks.go create mode 100644 pods/imports/k8s/KubeCronJobList__no_checks.go create mode 100644 pods/imports/k8s/KubeCronJobProps.go create mode 100644 pods/imports/k8s/KubeCronJob__checks.go create mode 100644 pods/imports/k8s/KubeCronJob__no_checks.go create mode 100644 pods/imports/k8s/KubeCsiDriver.go create mode 100644 pods/imports/k8s/KubeCsiDriverList.go create mode 100644 pods/imports/k8s/KubeCsiDriverListProps.go create mode 100644 pods/imports/k8s/KubeCsiDriverList__checks.go create mode 100644 pods/imports/k8s/KubeCsiDriverList__no_checks.go create mode 100644 pods/imports/k8s/KubeCsiDriverProps.go create mode 100644 pods/imports/k8s/KubeCsiDriver__checks.go create mode 100644 pods/imports/k8s/KubeCsiDriver__no_checks.go create mode 100644 pods/imports/k8s/KubeCsiNode.go create mode 100644 pods/imports/k8s/KubeCsiNodeList.go create mode 100644 pods/imports/k8s/KubeCsiNodeListProps.go create mode 100644 pods/imports/k8s/KubeCsiNodeList__checks.go create mode 100644 pods/imports/k8s/KubeCsiNodeList__no_checks.go create mode 100644 pods/imports/k8s/KubeCsiNodeProps.go create mode 100644 pods/imports/k8s/KubeCsiNode__checks.go create mode 100644 pods/imports/k8s/KubeCsiNode__no_checks.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacity.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacityList.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacityListProps.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacityList__checks.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacityProps.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacity__checks.go create mode 100644 pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinition.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionList.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionListProps.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionProps.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinition__checks.go create mode 100644 pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go create mode 100644 pods/imports/k8s/KubeDaemonSet.go create mode 100644 pods/imports/k8s/KubeDaemonSetList.go create mode 100644 pods/imports/k8s/KubeDaemonSetListProps.go create mode 100644 pods/imports/k8s/KubeDaemonSetList__checks.go create mode 100644 pods/imports/k8s/KubeDaemonSetList__no_checks.go create mode 100644 pods/imports/k8s/KubeDaemonSetProps.go create mode 100644 pods/imports/k8s/KubeDaemonSet__checks.go create mode 100644 pods/imports/k8s/KubeDaemonSet__no_checks.go create mode 100644 pods/imports/k8s/KubeDeployment.go create mode 100644 pods/imports/k8s/KubeDeploymentList.go create mode 100644 pods/imports/k8s/KubeDeploymentListProps.go create mode 100644 pods/imports/k8s/KubeDeploymentList__checks.go create mode 100644 pods/imports/k8s/KubeDeploymentList__no_checks.go create mode 100644 pods/imports/k8s/KubeDeploymentProps.go create mode 100644 pods/imports/k8s/KubeDeployment__checks.go create mode 100644 pods/imports/k8s/KubeDeployment__no_checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Beta1.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeEndpointSlice.go create mode 100644 pods/imports/k8s/KubeEndpointSliceList.go create mode 100644 pods/imports/k8s/KubeEndpointSliceListProps.go create mode 100644 pods/imports/k8s/KubeEndpointSliceList__checks.go create mode 100644 pods/imports/k8s/KubeEndpointSliceList__no_checks.go create mode 100644 pods/imports/k8s/KubeEndpointSliceProps.go create mode 100644 pods/imports/k8s/KubeEndpointSlice__checks.go create mode 100644 pods/imports/k8s/KubeEndpointSlice__no_checks.go create mode 100644 pods/imports/k8s/KubeEndpoints.go create mode 100644 pods/imports/k8s/KubeEndpointsList.go create mode 100644 pods/imports/k8s/KubeEndpointsListProps.go create mode 100644 pods/imports/k8s/KubeEndpointsList__checks.go create mode 100644 pods/imports/k8s/KubeEndpointsList__no_checks.go create mode 100644 pods/imports/k8s/KubeEndpointsProps.go create mode 100644 pods/imports/k8s/KubeEndpoints__checks.go create mode 100644 pods/imports/k8s/KubeEndpoints__no_checks.go create mode 100644 pods/imports/k8s/KubeEvent.go create mode 100644 pods/imports/k8s/KubeEventList.go create mode 100644 pods/imports/k8s/KubeEventListProps.go create mode 100644 pods/imports/k8s/KubeEventList__checks.go create mode 100644 pods/imports/k8s/KubeEventList__no_checks.go create mode 100644 pods/imports/k8s/KubeEventProps.go create mode 100644 pods/imports/k8s/KubeEvent__checks.go create mode 100644 pods/imports/k8s/KubeEvent__no_checks.go create mode 100644 pods/imports/k8s/KubeEviction.go create mode 100644 pods/imports/k8s/KubeEvictionProps.go create mode 100644 pods/imports/k8s/KubeEviction__checks.go create mode 100644 pods/imports/k8s/KubeEviction__no_checks.go create mode 100644 pods/imports/k8s/KubeFlowSchema.go create mode 100644 pods/imports/k8s/KubeFlowSchemaList.go create mode 100644 pods/imports/k8s/KubeFlowSchemaListProps.go create mode 100644 pods/imports/k8s/KubeFlowSchemaList__checks.go create mode 100644 pods/imports/k8s/KubeFlowSchemaList__no_checks.go create mode 100644 pods/imports/k8s/KubeFlowSchemaProps.go create mode 100644 pods/imports/k8s/KubeFlowSchema__checks.go create mode 100644 pods/imports/k8s/KubeFlowSchema__no_checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscaler.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerList.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go create mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go create mode 100644 pods/imports/k8s/KubeIngress.go create mode 100644 pods/imports/k8s/KubeIngressClass.go create mode 100644 pods/imports/k8s/KubeIngressClassList.go create mode 100644 pods/imports/k8s/KubeIngressClassListProps.go create mode 100644 pods/imports/k8s/KubeIngressClassList__checks.go create mode 100644 pods/imports/k8s/KubeIngressClassList__no_checks.go create mode 100644 pods/imports/k8s/KubeIngressClassProps.go create mode 100644 pods/imports/k8s/KubeIngressClass__checks.go create mode 100644 pods/imports/k8s/KubeIngressClass__no_checks.go create mode 100644 pods/imports/k8s/KubeIngressList.go create mode 100644 pods/imports/k8s/KubeIngressListProps.go create mode 100644 pods/imports/k8s/KubeIngressList__checks.go create mode 100644 pods/imports/k8s/KubeIngressList__no_checks.go create mode 100644 pods/imports/k8s/KubeIngressProps.go create mode 100644 pods/imports/k8s/KubeIngress__checks.go create mode 100644 pods/imports/k8s/KubeIngress__no_checks.go create mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1.go create mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1.go create mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeJob.go create mode 100644 pods/imports/k8s/KubeJobList.go create mode 100644 pods/imports/k8s/KubeJobListProps.go create mode 100644 pods/imports/k8s/KubeJobList__checks.go create mode 100644 pods/imports/k8s/KubeJobList__no_checks.go create mode 100644 pods/imports/k8s/KubeJobProps.go create mode 100644 pods/imports/k8s/KubeJob__checks.go create mode 100644 pods/imports/k8s/KubeJob__no_checks.go create mode 100644 pods/imports/k8s/KubeLease.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go create mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go create mode 100644 pods/imports/k8s/KubeLeaseList.go create mode 100644 pods/imports/k8s/KubeLeaseListProps.go create mode 100644 pods/imports/k8s/KubeLeaseList__checks.go create mode 100644 pods/imports/k8s/KubeLeaseList__no_checks.go create mode 100644 pods/imports/k8s/KubeLeaseProps.go create mode 100644 pods/imports/k8s/KubeLease__checks.go create mode 100644 pods/imports/k8s/KubeLease__no_checks.go create mode 100644 pods/imports/k8s/KubeLimitRange.go create mode 100644 pods/imports/k8s/KubeLimitRangeList.go create mode 100644 pods/imports/k8s/KubeLimitRangeListProps.go create mode 100644 pods/imports/k8s/KubeLimitRangeList__checks.go create mode 100644 pods/imports/k8s/KubeLimitRangeList__no_checks.go create mode 100644 pods/imports/k8s/KubeLimitRangeProps.go create mode 100644 pods/imports/k8s/KubeLimitRange__checks.go create mode 100644 pods/imports/k8s/KubeLimitRange__no_checks.go create mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReview.go create mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go create mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go create mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfiguration.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationList.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go create mode 100644 pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go create mode 100644 pods/imports/k8s/KubeNamespace.go create mode 100644 pods/imports/k8s/KubeNamespaceList.go create mode 100644 pods/imports/k8s/KubeNamespaceListProps.go create mode 100644 pods/imports/k8s/KubeNamespaceList__checks.go create mode 100644 pods/imports/k8s/KubeNamespaceList__no_checks.go create mode 100644 pods/imports/k8s/KubeNamespaceProps.go create mode 100644 pods/imports/k8s/KubeNamespace__checks.go create mode 100644 pods/imports/k8s/KubeNamespace__no_checks.go create mode 100644 pods/imports/k8s/KubeNetworkPolicy.go create mode 100644 pods/imports/k8s/KubeNetworkPolicyList.go create mode 100644 pods/imports/k8s/KubeNetworkPolicyListProps.go create mode 100644 pods/imports/k8s/KubeNetworkPolicyList__checks.go create mode 100644 pods/imports/k8s/KubeNetworkPolicyList__no_checks.go create mode 100644 pods/imports/k8s/KubeNetworkPolicyProps.go create mode 100644 pods/imports/k8s/KubeNetworkPolicy__checks.go create mode 100644 pods/imports/k8s/KubeNetworkPolicy__no_checks.go create mode 100644 pods/imports/k8s/KubeNode.go create mode 100644 pods/imports/k8s/KubeNodeList.go create mode 100644 pods/imports/k8s/KubeNodeListProps.go create mode 100644 pods/imports/k8s/KubeNodeList__checks.go create mode 100644 pods/imports/k8s/KubeNodeList__no_checks.go create mode 100644 pods/imports/k8s/KubeNodeProps.go create mode 100644 pods/imports/k8s/KubeNode__checks.go create mode 100644 pods/imports/k8s/KubeNode__no_checks.go create mode 100644 pods/imports/k8s/KubePersistentVolume.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaim.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaimList.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaimListProps.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaimList__checks.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaimProps.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaim__checks.go create mode 100644 pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go create mode 100644 pods/imports/k8s/KubePersistentVolumeList.go create mode 100644 pods/imports/k8s/KubePersistentVolumeListProps.go create mode 100644 pods/imports/k8s/KubePersistentVolumeList__checks.go create mode 100644 pods/imports/k8s/KubePersistentVolumeList__no_checks.go create mode 100644 pods/imports/k8s/KubePersistentVolumeProps.go create mode 100644 pods/imports/k8s/KubePersistentVolume__checks.go create mode 100644 pods/imports/k8s/KubePersistentVolume__no_checks.go create mode 100644 pods/imports/k8s/KubePod.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudget.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudgetList.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudgetListProps.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudgetList__checks.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudgetProps.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudget__checks.go create mode 100644 pods/imports/k8s/KubePodDisruptionBudget__no_checks.go create mode 100644 pods/imports/k8s/KubePodList.go create mode 100644 pods/imports/k8s/KubePodListProps.go create mode 100644 pods/imports/k8s/KubePodList__checks.go create mode 100644 pods/imports/k8s/KubePodList__no_checks.go create mode 100644 pods/imports/k8s/KubePodProps.go create mode 100644 pods/imports/k8s/KubePodTemplate.go create mode 100644 pods/imports/k8s/KubePodTemplateList.go create mode 100644 pods/imports/k8s/KubePodTemplateListProps.go create mode 100644 pods/imports/k8s/KubePodTemplateList__checks.go create mode 100644 pods/imports/k8s/KubePodTemplateList__no_checks.go create mode 100644 pods/imports/k8s/KubePodTemplateProps.go create mode 100644 pods/imports/k8s/KubePodTemplate__checks.go create mode 100644 pods/imports/k8s/KubePodTemplate__no_checks.go create mode 100644 pods/imports/k8s/KubePod__checks.go create mode 100644 pods/imports/k8s/KubePod__no_checks.go create mode 100644 pods/imports/k8s/KubePriorityClass.go create mode 100644 pods/imports/k8s/KubePriorityClassList.go create mode 100644 pods/imports/k8s/KubePriorityClassListProps.go create mode 100644 pods/imports/k8s/KubePriorityClassList__checks.go create mode 100644 pods/imports/k8s/KubePriorityClassList__no_checks.go create mode 100644 pods/imports/k8s/KubePriorityClassProps.go create mode 100644 pods/imports/k8s/KubePriorityClass__checks.go create mode 100644 pods/imports/k8s/KubePriorityClass__no_checks.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfiguration.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationList.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListProps.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationProps.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfiguration__checks.go create mode 100644 pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go create mode 100644 pods/imports/k8s/KubeReplicaSet.go create mode 100644 pods/imports/k8s/KubeReplicaSetList.go create mode 100644 pods/imports/k8s/KubeReplicaSetListProps.go create mode 100644 pods/imports/k8s/KubeReplicaSetList__checks.go create mode 100644 pods/imports/k8s/KubeReplicaSetList__no_checks.go create mode 100644 pods/imports/k8s/KubeReplicaSetProps.go create mode 100644 pods/imports/k8s/KubeReplicaSet__checks.go create mode 100644 pods/imports/k8s/KubeReplicaSet__no_checks.go create mode 100644 pods/imports/k8s/KubeReplicationController.go create mode 100644 pods/imports/k8s/KubeReplicationControllerList.go create mode 100644 pods/imports/k8s/KubeReplicationControllerListProps.go create mode 100644 pods/imports/k8s/KubeReplicationControllerList__checks.go create mode 100644 pods/imports/k8s/KubeReplicationControllerList__no_checks.go create mode 100644 pods/imports/k8s/KubeReplicationControllerProps.go create mode 100644 pods/imports/k8s/KubeReplicationController__checks.go create mode 100644 pods/imports/k8s/KubeReplicationController__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Beta1.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceQuota.go create mode 100644 pods/imports/k8s/KubeResourceQuotaList.go create mode 100644 pods/imports/k8s/KubeResourceQuotaListProps.go create mode 100644 pods/imports/k8s/KubeResourceQuotaList__checks.go create mode 100644 pods/imports/k8s/KubeResourceQuotaList__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceQuotaProps.go create mode 100644 pods/imports/k8s/KubeResourceQuota__checks.go create mode 100644 pods/imports/k8s/KubeResourceQuota__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Alpha3.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeRole.go create mode 100644 pods/imports/k8s/KubeRoleBinding.go create mode 100644 pods/imports/k8s/KubeRoleBindingList.go create mode 100644 pods/imports/k8s/KubeRoleBindingListProps.go create mode 100644 pods/imports/k8s/KubeRoleBindingList__checks.go create mode 100644 pods/imports/k8s/KubeRoleBindingList__no_checks.go create mode 100644 pods/imports/k8s/KubeRoleBindingProps.go create mode 100644 pods/imports/k8s/KubeRoleBinding__checks.go create mode 100644 pods/imports/k8s/KubeRoleBinding__no_checks.go create mode 100644 pods/imports/k8s/KubeRoleList.go create mode 100644 pods/imports/k8s/KubeRoleListProps.go create mode 100644 pods/imports/k8s/KubeRoleList__checks.go create mode 100644 pods/imports/k8s/KubeRoleList__no_checks.go create mode 100644 pods/imports/k8s/KubeRoleProps.go create mode 100644 pods/imports/k8s/KubeRole__checks.go create mode 100644 pods/imports/k8s/KubeRole__no_checks.go create mode 100644 pods/imports/k8s/KubeRuntimeClass.go create mode 100644 pods/imports/k8s/KubeRuntimeClassList.go create mode 100644 pods/imports/k8s/KubeRuntimeClassListProps.go create mode 100644 pods/imports/k8s/KubeRuntimeClassList__checks.go create mode 100644 pods/imports/k8s/KubeRuntimeClassList__no_checks.go create mode 100644 pods/imports/k8s/KubeRuntimeClassProps.go create mode 100644 pods/imports/k8s/KubeRuntimeClass__checks.go create mode 100644 pods/imports/k8s/KubeRuntimeClass__no_checks.go create mode 100644 pods/imports/k8s/KubeScale.go create mode 100644 pods/imports/k8s/KubeScaleProps.go create mode 100644 pods/imports/k8s/KubeScale__checks.go create mode 100644 pods/imports/k8s/KubeScale__no_checks.go create mode 100644 pods/imports/k8s/KubeSecret.go create mode 100644 pods/imports/k8s/KubeSecretList.go create mode 100644 pods/imports/k8s/KubeSecretListProps.go create mode 100644 pods/imports/k8s/KubeSecretList__checks.go create mode 100644 pods/imports/k8s/KubeSecretList__no_checks.go create mode 100644 pods/imports/k8s/KubeSecretProps.go create mode 100644 pods/imports/k8s/KubeSecret__checks.go create mode 100644 pods/imports/k8s/KubeSecret__no_checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReview.go create mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go create mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReview.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewProps.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReview__checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectReview__no_checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReview.go create mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go create mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go create mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go create mode 100644 pods/imports/k8s/KubeService.go create mode 100644 pods/imports/k8s/KubeServiceAccount.go create mode 100644 pods/imports/k8s/KubeServiceAccountList.go create mode 100644 pods/imports/k8s/KubeServiceAccountListProps.go create mode 100644 pods/imports/k8s/KubeServiceAccountList__checks.go create mode 100644 pods/imports/k8s/KubeServiceAccountList__no_checks.go create mode 100644 pods/imports/k8s/KubeServiceAccountProps.go create mode 100644 pods/imports/k8s/KubeServiceAccount__checks.go create mode 100644 pods/imports/k8s/KubeServiceAccount__no_checks.go create mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1.go create mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1.go create mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1Props.go create mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeServiceList.go create mode 100644 pods/imports/k8s/KubeServiceListProps.go create mode 100644 pods/imports/k8s/KubeServiceList__checks.go create mode 100644 pods/imports/k8s/KubeServiceList__no_checks.go create mode 100644 pods/imports/k8s/KubeServiceProps.go create mode 100644 pods/imports/k8s/KubeService__checks.go create mode 100644 pods/imports/k8s/KubeService__no_checks.go create mode 100644 pods/imports/k8s/KubeStatefulSet.go create mode 100644 pods/imports/k8s/KubeStatefulSetList.go create mode 100644 pods/imports/k8s/KubeStatefulSetListProps.go create mode 100644 pods/imports/k8s/KubeStatefulSetList__checks.go create mode 100644 pods/imports/k8s/KubeStatefulSetList__no_checks.go create mode 100644 pods/imports/k8s/KubeStatefulSetProps.go create mode 100644 pods/imports/k8s/KubeStatefulSet__checks.go create mode 100644 pods/imports/k8s/KubeStatefulSet__no_checks.go create mode 100644 pods/imports/k8s/KubeStatus.go create mode 100644 pods/imports/k8s/KubeStatusProps.go create mode 100644 pods/imports/k8s/KubeStatus__checks.go create mode 100644 pods/imports/k8s/KubeStatus__no_checks.go create mode 100644 pods/imports/k8s/KubeStorageClass.go create mode 100644 pods/imports/k8s/KubeStorageClassList.go create mode 100644 pods/imports/k8s/KubeStorageClassListProps.go create mode 100644 pods/imports/k8s/KubeStorageClassList__checks.go create mode 100644 pods/imports/k8s/KubeStorageClassList__no_checks.go create mode 100644 pods/imports/k8s/KubeStorageClassProps.go create mode 100644 pods/imports/k8s/KubeStorageClass__checks.go create mode 100644 pods/imports/k8s/KubeStorageClass__no_checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1.go create mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1.go create mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeSubjectAccessReview.go create mode 100644 pods/imports/k8s/KubeSubjectAccessReviewProps.go create mode 100644 pods/imports/k8s/KubeSubjectAccessReview__checks.go create mode 100644 pods/imports/k8s/KubeSubjectAccessReview__no_checks.go create mode 100644 pods/imports/k8s/KubeTokenRequest.go create mode 100644 pods/imports/k8s/KubeTokenRequestProps.go create mode 100644 pods/imports/k8s/KubeTokenRequest__checks.go create mode 100644 pods/imports/k8s/KubeTokenRequest__no_checks.go create mode 100644 pods/imports/k8s/KubeTokenReview.go create mode 100644 pods/imports/k8s/KubeTokenReviewProps.go create mode 100644 pods/imports/k8s/KubeTokenReview__checks.go create mode 100644 pods/imports/k8s/KubeTokenReview__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicy.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyList.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfiguration.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationList.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go create mode 100644 pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttachment.go create mode 100644 pods/imports/k8s/KubeVolumeAttachmentList.go create mode 100644 pods/imports/k8s/KubeVolumeAttachmentListProps.go create mode 100644 pods/imports/k8s/KubeVolumeAttachmentList__checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttachmentProps.go create mode 100644 pods/imports/k8s/KubeVolumeAttachment__checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttachment__no_checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go create mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go create mode 100644 pods/imports/k8s/LabelSelector.go create mode 100644 pods/imports/k8s/LabelSelectorAttributes.go create mode 100644 pods/imports/k8s/LabelSelectorRequirement.go create mode 100644 pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go create mode 100644 pods/imports/k8s/LeaseSpec.go create mode 100644 pods/imports/k8s/Lifecycle.go create mode 100644 pods/imports/k8s/LifecycleHandler.go create mode 100644 pods/imports/k8s/LimitRangeItem.go create mode 100644 pods/imports/k8s/LimitRangeSpec.go create mode 100644 pods/imports/k8s/LimitResponse.go create mode 100644 pods/imports/k8s/LimitedPriorityLevelConfiguration.go create mode 100644 pods/imports/k8s/ListMeta.go create mode 100644 pods/imports/k8s/LocalObjectReference.go create mode 100644 pods/imports/k8s/LocalVolumeSource.go create mode 100644 pods/imports/k8s/ManagedFieldsEntry.go create mode 100644 pods/imports/k8s/MatchCondition.go create mode 100644 pods/imports/k8s/MatchConditionV1Alpha1.go create mode 100644 pods/imports/k8s/MatchConditionV1Beta1.go create mode 100644 pods/imports/k8s/MatchResources.go create mode 100644 pods/imports/k8s/MatchResourcesV1Alpha1.go create mode 100644 pods/imports/k8s/MatchResourcesV1Beta1.go create mode 100644 pods/imports/k8s/MetricIdentifierV2.go create mode 100644 pods/imports/k8s/MetricSpecV2.go create mode 100644 pods/imports/k8s/MetricTargetV2.go create mode 100644 pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go create mode 100644 pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go create mode 100644 pods/imports/k8s/MutatingWebhook.go create mode 100644 pods/imports/k8s/MutationV1Alpha1.go create mode 100644 pods/imports/k8s/NamedRuleWithOperations.go create mode 100644 pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go create mode 100644 pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go create mode 100644 pods/imports/k8s/NamespaceSpec.go create mode 100644 pods/imports/k8s/NetworkPolicyEgressRule.go create mode 100644 pods/imports/k8s/NetworkPolicyIngressRule.go create mode 100644 pods/imports/k8s/NetworkPolicyPeer.go create mode 100644 pods/imports/k8s/NetworkPolicyPort.go create mode 100644 pods/imports/k8s/NetworkPolicySpec.go create mode 100644 pods/imports/k8s/NfsVolumeSource.go create mode 100644 pods/imports/k8s/NodeAffinity.go create mode 100644 pods/imports/k8s/NodeConfigSource.go create mode 100644 pods/imports/k8s/NodeSelector.go create mode 100644 pods/imports/k8s/NodeSelectorRequirement.go create mode 100644 pods/imports/k8s/NodeSelectorTerm.go create mode 100644 pods/imports/k8s/NodeSpec.go create mode 100644 pods/imports/k8s/NonResourceAttributes.go create mode 100644 pods/imports/k8s/NonResourcePolicyRule.go create mode 100644 pods/imports/k8s/ObjectFieldSelector.go create mode 100644 pods/imports/k8s/ObjectMeta.go create mode 100644 pods/imports/k8s/ObjectMetricSourceV2.go create mode 100644 pods/imports/k8s/ObjectReference.go create mode 100644 pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go create mode 100644 pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go create mode 100644 pods/imports/k8s/Overhead.go create mode 100644 pods/imports/k8s/OwnerReference.go create mode 100644 pods/imports/k8s/ParamKind.go create mode 100644 pods/imports/k8s/ParamKindV1Alpha1.go create mode 100644 pods/imports/k8s/ParamKindV1Beta1.go create mode 100644 pods/imports/k8s/ParamRef.go create mode 100644 pods/imports/k8s/ParamRefV1Alpha1.go create mode 100644 pods/imports/k8s/ParamRefV1Beta1.go create mode 100644 pods/imports/k8s/ParentReferenceV1Beta1.go create mode 100644 pods/imports/k8s/PersistentVolumeClaimSpec.go create mode 100644 pods/imports/k8s/PersistentVolumeClaimTemplate.go create mode 100644 pods/imports/k8s/PersistentVolumeClaimVolumeSource.go create mode 100644 pods/imports/k8s/PersistentVolumeSpec.go create mode 100644 pods/imports/k8s/PhotonPersistentDiskVolumeSource.go create mode 100644 pods/imports/k8s/PodAffinity.go create mode 100644 pods/imports/k8s/PodAffinityTerm.go create mode 100644 pods/imports/k8s/PodAntiAffinity.go create mode 100644 pods/imports/k8s/PodDisruptionBudgetSpec.go create mode 100644 pods/imports/k8s/PodDnsConfig.go create mode 100644 pods/imports/k8s/PodDnsConfigOption.go create mode 100644 pods/imports/k8s/PodFailurePolicy.go create mode 100644 pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go create mode 100644 pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go create mode 100644 pods/imports/k8s/PodFailurePolicyRule.go create mode 100644 pods/imports/k8s/PodOs.go create mode 100644 pods/imports/k8s/PodReadinessGate.go create mode 100644 pods/imports/k8s/PodResourceClaim.go create mode 100644 pods/imports/k8s/PodSchedulingGate.go create mode 100644 pods/imports/k8s/PodSecurityContext.go create mode 100644 pods/imports/k8s/PodSpec.go create mode 100644 pods/imports/k8s/PodTemplateSpec.go create mode 100644 pods/imports/k8s/PodsMetricSourceV2.go create mode 100644 pods/imports/k8s/PolicyRule.go create mode 100644 pods/imports/k8s/PolicyRulesWithSubjects.go create mode 100644 pods/imports/k8s/PortworxVolumeSource.go create mode 100644 pods/imports/k8s/Preconditions.go create mode 100644 pods/imports/k8s/PreferredSchedulingTerm.go create mode 100644 pods/imports/k8s/PriorityLevelConfigurationReference.go create mode 100644 pods/imports/k8s/PriorityLevelConfigurationSpec.go create mode 100644 pods/imports/k8s/Probe.go create mode 100644 pods/imports/k8s/ProjectedVolumeSource.go create mode 100644 pods/imports/k8s/Quantity.go create mode 100644 pods/imports/k8s/Quantity__checks.go create mode 100644 pods/imports/k8s/Quantity__no_checks.go create mode 100644 pods/imports/k8s/QueuingConfiguration.go create mode 100644 pods/imports/k8s/QuobyteVolumeSource.go create mode 100644 pods/imports/k8s/RbdPersistentVolumeSource.go create mode 100644 pods/imports/k8s/RbdVolumeSource.go create mode 100644 pods/imports/k8s/ReplicaSetSpec.go create mode 100644 pods/imports/k8s/ReplicationControllerSpec.go create mode 100644 pods/imports/k8s/ResourceAttributes.go create mode 100644 pods/imports/k8s/ResourceClaim.go create mode 100644 pods/imports/k8s/ResourceClaimSpecV1Alpha3.go create mode 100644 pods/imports/k8s/ResourceClaimSpecV1Beta1.go create mode 100644 pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go create mode 100644 pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go create mode 100644 pods/imports/k8s/ResourceFieldSelector.go create mode 100644 pods/imports/k8s/ResourceMetricSourceV2.go create mode 100644 pods/imports/k8s/ResourcePolicyRule.go create mode 100644 pods/imports/k8s/ResourcePoolV1Alpha3.go create mode 100644 pods/imports/k8s/ResourcePoolV1Beta1.go create mode 100644 pods/imports/k8s/ResourceQuotaSpec.go create mode 100644 pods/imports/k8s/ResourceRequirements.go create mode 100644 pods/imports/k8s/ResourceSliceSpecV1Alpha3.go create mode 100644 pods/imports/k8s/ResourceSliceSpecV1Beta1.go create mode 100644 pods/imports/k8s/RoleRef.go create mode 100644 pods/imports/k8s/RollingUpdateDaemonSet.go create mode 100644 pods/imports/k8s/RollingUpdateDeployment.go create mode 100644 pods/imports/k8s/RollingUpdateStatefulSetStrategy.go create mode 100644 pods/imports/k8s/RuleWithOperations.go create mode 100644 pods/imports/k8s/ScaleIoPersistentVolumeSource.go create mode 100644 pods/imports/k8s/ScaleIoVolumeSource.go create mode 100644 pods/imports/k8s/ScaleSpec.go create mode 100644 pods/imports/k8s/Scheduling.go create mode 100644 pods/imports/k8s/ScopeSelector.go create mode 100644 pods/imports/k8s/ScopedResourceSelectorRequirement.go create mode 100644 pods/imports/k8s/SeLinuxOptions.go create mode 100644 pods/imports/k8s/SeccompProfile.go create mode 100644 pods/imports/k8s/SecretEnvSource.go create mode 100644 pods/imports/k8s/SecretKeySelector.go create mode 100644 pods/imports/k8s/SecretProjection.go create mode 100644 pods/imports/k8s/SecretReference.go create mode 100644 pods/imports/k8s/SecretVolumeSource.go create mode 100644 pods/imports/k8s/SecurityContext.go create mode 100644 pods/imports/k8s/SelectableField.go create mode 100644 pods/imports/k8s/SelfSubjectAccessReviewSpec.go create mode 100644 pods/imports/k8s/SelfSubjectRulesReviewSpec.go create mode 100644 pods/imports/k8s/ServiceAccountTokenProjection.go create mode 100644 pods/imports/k8s/ServiceBackendPort.go create mode 100644 pods/imports/k8s/ServiceCidrSpecV1Beta1.go create mode 100644 pods/imports/k8s/ServicePort.go create mode 100644 pods/imports/k8s/ServiceReference.go create mode 100644 pods/imports/k8s/ServiceSpec.go create mode 100644 pods/imports/k8s/SessionAffinityConfig.go create mode 100644 pods/imports/k8s/SleepAction.go create mode 100644 pods/imports/k8s/StatefulSetOrdinals.go create mode 100644 pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go create mode 100644 pods/imports/k8s/StatefulSetSpec.go create mode 100644 pods/imports/k8s/StatefulSetUpdateStrategy.go create mode 100644 pods/imports/k8s/StatusCause.go create mode 100644 pods/imports/k8s/StatusDetails.go create mode 100644 pods/imports/k8s/StorageOsPersistentVolumeSource.go create mode 100644 pods/imports/k8s/StorageOsVolumeSource.go create mode 100644 pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go create mode 100644 pods/imports/k8s/Subject.go create mode 100644 pods/imports/k8s/SubjectAccessReviewSpec.go create mode 100644 pods/imports/k8s/SuccessPolicy.go create mode 100644 pods/imports/k8s/SuccessPolicyRule.go create mode 100644 pods/imports/k8s/Sysctl.go create mode 100644 pods/imports/k8s/Taint.go create mode 100644 pods/imports/k8s/TcpSocketAction.go create mode 100644 pods/imports/k8s/TokenRequest.go create mode 100644 pods/imports/k8s/TokenRequestSpec.go create mode 100644 pods/imports/k8s/TokenReviewSpec.go create mode 100644 pods/imports/k8s/Toleration.go create mode 100644 pods/imports/k8s/TopologySelectorLabelRequirement.go create mode 100644 pods/imports/k8s/TopologySelectorTerm.go create mode 100644 pods/imports/k8s/TopologySpreadConstraint.go create mode 100644 pods/imports/k8s/TypedLocalObjectReference.go create mode 100644 pods/imports/k8s/TypedObjectReference.go create mode 100644 pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go create mode 100644 pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go create mode 100644 pods/imports/k8s/ValidatingAdmissionPolicySpec.go create mode 100644 pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go create mode 100644 pods/imports/k8s/ValidatingWebhook.go create mode 100644 pods/imports/k8s/Validation.go create mode 100644 pods/imports/k8s/ValidationRule.go create mode 100644 pods/imports/k8s/ValidationV1Beta1.go create mode 100644 pods/imports/k8s/Variable.go create mode 100644 pods/imports/k8s/VariableV1Alpha1.go create mode 100644 pods/imports/k8s/VariableV1Beta1.go create mode 100644 pods/imports/k8s/Volume.go create mode 100644 pods/imports/k8s/VolumeAttachmentSource.go create mode 100644 pods/imports/k8s/VolumeAttachmentSpec.go create mode 100644 pods/imports/k8s/VolumeDevice.go create mode 100644 pods/imports/k8s/VolumeMount.go create mode 100644 pods/imports/k8s/VolumeNodeAffinity.go create mode 100644 pods/imports/k8s/VolumeNodeResources.go create mode 100644 pods/imports/k8s/VolumeProjection.go create mode 100644 pods/imports/k8s/VolumeResourceRequirements.go create mode 100644 pods/imports/k8s/VsphereVirtualDiskVolumeSource.go create mode 100644 pods/imports/k8s/WebhookClientConfig.go create mode 100644 pods/imports/k8s/WebhookConversion.go create mode 100644 pods/imports/k8s/WeightedPodAffinityTerm.go create mode 100644 pods/imports/k8s/WindowsSecurityContextOptions.go create mode 100644 pods/imports/k8s/internal/types.go create mode 100644 pods/imports/k8s/jsii/jsii.go create mode 100644 pods/imports/k8s/jsii/k8s-0.0.0.tgz create mode 100644 pods/imports/k8s/main.go create mode 100644 pods/imports/k8s/version create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitor.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorProps.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go create mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go create mode 100644 pods/imports/monitoringcoreoscom/internal/types.go create mode 100644 pods/imports/monitoringcoreoscom/jsii/jsii.go create mode 100644 pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz create mode 100644 pods/imports/monitoringcoreoscom/main.go create mode 100644 pods/imports/monitoringcoreoscom/version create mode 100644 pods/kind.yml create mode 100644 pods/log.go create mode 100644 pods/pods.go create mode 100644 pods/pods_test.go create mode 100644 pods/sync.go diff --git a/pods/.githooks/go-lint b/pods/.githooks/go-lint new file mode 100755 index 000000000..2e312dcde --- /dev/null +++ b/pods/.githooks/go-lint @@ -0,0 +1,2 @@ +#!/bin/bash +devbox run -- just lint \ No newline at end of file diff --git a/pods/.githooks/go-test b/pods/.githooks/go-test new file mode 100755 index 000000000..c9dc7b8ae --- /dev/null +++ b/pods/.githooks/go-test @@ -0,0 +1,2 @@ +#!/bin/bash +devbox run -- just test \ No newline at end of file diff --git a/pods/.githooks/typos b/pods/.githooks/typos new file mode 100755 index 000000000..a57c7be65 --- /dev/null +++ b/pods/.githooks/typos @@ -0,0 +1,15 @@ +#!/bin/bash + +set +e +# shellcheck disable=SC2068 +typos --config ./_typos.toml --force-exclude $@ +typos_result=$? +set -e + +# Check typos result +if [[ $typos_result -ne 0 ]]; then + echo -e "❌ Found typos\n" + # shellcheck disable=SC2145 + echo -e "Run \`typos --write-changes --config ./_typos.toml --force-exclude $@\` and fix any issues left\n" + exit 1 +fi diff --git a/pods/.github/workflows/pods-test-deploy.yml b/pods/.github/workflows/pods-test-deploy.yml new file mode 100644 index 000000000..5afd16789 --- /dev/null +++ b/pods/.github/workflows/pods-test-deploy.yml @@ -0,0 +1,49 @@ +name: Deploy Tests +on: [push] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + test: + permissions: + id-token: write + contents: read + runs-on: ${{ matrix.test.vm }} + strategy: + fail-fast: false + matrix: + test: + - test: test-deploy + vm: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - name: Install dependencies + run: go mod download + - name: Cache Go modules + uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: go-modules-${{ hashFiles('go.sum') }}-${{ runner.os }}-test + restore-keys: | + go-modules-${{ runner.os }}-test + - uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2.0.0 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + just-version: '1.39.0' + - name: Create k8s Kind Cluster + uses: helm/kind-action@v1 + - name: Run tests + env: + CI: true + run: | + just ${{ matrix.test.test }} + - name: Check test coverage + uses: vladopajic/go-test-coverage@v2 + with: + config: ./.testcoverage.yml \ No newline at end of file diff --git a/pods/.github/workflows/pods-test.yml b/pods/.github/workflows/pods-test.yml new file mode 100644 index 000000000..5f3f54296 --- /dev/null +++ b/pods/.github/workflows/pods-test.yml @@ -0,0 +1,41 @@ +name: Snapshot Tests +on: [push] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + test: + permissions: + id-token: write + contents: read + runs-on: ${{ matrix.test.vm }} + strategy: + fail-fast: false + matrix: + test: + - test: test + vm: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - name: Install dependencies + run: go mod download + - name: Cache Go modules + uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: go-modules-${{ hashFiles('go.sum') }}-${{ runner.os }}-test + restore-keys: | + go-modules-${{ runner.os }}-test + - uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2.0.0 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + just-version: '1.39.0' + - name: Run tests + run: | + just ${{ matrix.test.test }} \ No newline at end of file diff --git a/pods/.gitignore b/pods/.gitignore new file mode 100644 index 000000000..8cf319868 --- /dev/null +++ b/pods/.gitignore @@ -0,0 +1,31 @@ +### Go template +# If you prefer the allow list template instead of the deny list, see community template: +# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore +# +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +# Go workspace file +go.work +go.work.sum + +# env file +.env +# Pods manifests +**/pods.tmp.yml +# DevBox +.devbox + diff --git a/pods/.golangci.yaml b/pods/.golangci.yaml new file mode 100644 index 000000000..7f4ef66e8 --- /dev/null +++ b/pods/.golangci.yaml @@ -0,0 +1,76 @@ +run: + concurrency: 4 + timeout: 5m +linters: + enable: + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - typecheck + - unused + - exhaustive + - copyloopvar + - revive + - goimports + - gosec + - misspell + - errorlint + - contextcheck +linters-settings: + exhaustive: + default-signifies-exhaustive: true + goimports: + local-prefixes: github.com/smartcontractkit/chainlink-testing-framework/ + gosec: + exclude-generated: true + errorlint: + # Allow formatting of errors without %w + errorf: false + revive: + confidence: 0.8 + rules: + - name: blank-imports + - name: context-as-argument + - name: context-keys-type + - name: dot-imports + - name: error-return + - name: error-strings + - name: error-naming + - name: if-return + - name: increment-decrement + # - name: var-naming + - name: var-declaration + - name: package-comments + - name: range + - name: receiver-naming + - name: time-naming + - name: unexported-return + - name: indent-error-flow + - name: errorf + - name: exported + - name: empty-block + - name: superfluous-else + # - name: unused-parameter + - name: unreachable-code + - name: redefines-builtin-id + - name: waitgroup-by-value + - name: unconditional-recursion + - name: struct-tag + - name: string-format + - name: string-of-int + - name: range-val-address + - name: range-val-in-closure + - name: modifies-value-receiver + - name: modifies-parameter + - name: identical-branches + - name: get-return + - name: defer + - name: constant-logical-expr + - name: bool-literal-in-expr + - name: atomic +issues: + exclude-dirs: + - __snapshots__ + - imports diff --git a/pods/.pre-commit-config.yaml b/pods/.pre-commit-config.yaml new file mode 100644 index 000000000..f4967b46d --- /dev/null +++ b/pods/.pre-commit-config.yaml @@ -0,0 +1,20 @@ +exclude: '(\.bin|\.abi)' + +repos: + - repo: local + hooks: + - id: go-lint + name: Check Go Lint + entry: ./.githooks/go-lint + language: script + pass_filenames: false + - id: go-test + name: Run Snapshot Tests + entry: ./.githooks/go-test + language: script + pass_filenames: false + - id: typos + name: Typos + entry: ./.githooks/typos + language: script + pass_filenames: false diff --git a/pods/.testcoverage.yml b/pods/.testcoverage.yml new file mode 100644 index 000000000..e6873d032 --- /dev/null +++ b/pods/.testcoverage.yml @@ -0,0 +1,11 @@ +profile: cover.out +threshold: + file: 90 + package: 90 + total: 90 +exclude: + paths: + - imports +breakdown-file-name: '' +diff: + base-breakdown-file-name: '' \ No newline at end of file diff --git a/pods/Justfile b/pods/Justfile new file mode 100644 index 000000000..002831f8b --- /dev/null +++ b/pods/Justfile @@ -0,0 +1,81 @@ +go_test_args := env('GO_TEST_ARGS', '') + +# Print all the commands +default: + @just --list + +# Install pre-commit hooks +install: + pre-commit install + +# Run golangci-lint +lint: + golangci-lint --color=always run -v -c .golangci.yaml + +# Run composite product example tests +example-composite: + cd examples/composite/product_a && SNAPSHOT_TESTS=true go test -v -run . + +# Run composite product example tests and update snapshots +composite-update-snapshots: + cd examples/composite/product_a && UPDATE_SNAPS=true SNAPSHOT_TESTS=true go test -v -run . + + +# Run real-world example of deploying Chainlink cluster of 4 nodes + 1 network +example: + go test -v -count 1 -run TestPlatformEnvironment ./... + +# Run all the tests without deploying, just test snapshots +test: + SNAPSHOT_TESTS=true go test -v -run TestPods + +# Update all the snapshots +update-snapshots: + UPDATE_SNAPS=true go test -v -run TestPods ./... + +# Run all deployment tests +test-deploy: + APPLY=true go test -v -count 1 -race -cover -coverprofile=cover.out -covermode=atomic -coverpkg=github.com/smartcontractkit/pods -run TestPods ./... && go tool cover -html cover.out + +# Check coverage thresholds +cover-action: + go install github.com/vladopajic/go-test-coverage/v2@latest + APPLY=true go test -v -count 1 -race -cover -coverprofile=cover.out -covermode=atomic -coverpkg=github.com/smartcontractkit/pods -run TestPods ./... + go-test-coverage --badge-file-name=cover.svg --config=./.testcoverage.yml + +# Run go mod tidy +tidy: + go mod tidy + +# Run GitHub Actions lint for CI workflows +actionlint: + go install github.com/rhysd/actionlint/cmd/actionlint@latest + actionlint + +# Create a local Kind environment +up: + kind create cluster --name pods --config kind.yml + +# Destroy a local Kind environment +down: + kind delete cluster --name pods + +# Switch K8s context to local Kind environment +ctx: + kubectl config use-context kind-pods + +# Forwards all services ports using Kubefwd +forward namespace: + sudo kubefwd -n {{namespace}} svc + +# Print all cluster's CRDs and grep them +crds filter: + kubectl get crds | grep {{filter}} + +# Get CRD from the cluster and copy it to a local path +crd name file: + kubectl get crd {{name}} -o yaml > {{file}}.yml + +# Generate cdk8s bindings for Golang +import file: + cdk8s import {{file}} --language go diff --git a/pods/README.md b/pods/README.md new file mode 100644 index 000000000..e2eab8697 --- /dev/null +++ b/pods/README.md @@ -0,0 +1,48 @@ +# 📦 Pods + +High-level K8s API for developer envnrionments. + +## Why + +This framework introduces a lightweight abstraction layer, allowing developers to focus on product +configuration while abstracting away Kubernetes complexities. +It meant to be used with `CTFv2` framework to run components on `K8s`. + +### Real world example (Chainlink Node Set) + +In this example we'll spin up a local `Kind` cluster and deploy a Chainlink cluster, +just [40 lines](https://github.com/smartcontractkit/pods/blob/master/examples/nodeset_test.go) of code (without product +configuration). + +Follow the [README](./environment/README.md) + +### Developing + +Install pre-commit hooks and check available actions (lint, test ,etc) + +``` +just install +just +``` + +Add new features to `pods.go`, add new tests to `pods_test.go` and make pre-commit hooks and then CI pass. + +Run `just test-deploy-cover` to check coverage. + +Create additional directories for product-specific deployments if needed. + +### Importing CRDs + +``` +devbox shell +# filter current cluster CRDs, grep 'monitoring' +just crds monitoring +# save it as YAML +just crd servicemonitors.monitoring.coreos.com crds/monitoring.coreos.com +# import as Go code +just import crds/monitoring.coreos.com.yml +``` + +### K8s bindings versions + +Check available `cdk8s` bindings [versions](https://github.com/cdk8s-team/cdk8s/tree/master/kubernetes-schemas). \ No newline at end of file diff --git a/pods/__snapshots__/pods_test.snap b/pods/__snapshots__/pods_test.snap new file mode 100755 index 000000000..4bbc0f7c1 --- /dev/null +++ b/pods/__snapshots__/pods_test.snap @@ -0,0 +1,623 @@ + +[TestPods/test-single-pod - 1] +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-single-pod +spec: + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-single-pod + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-single-pod +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-multiple-pods - 1] +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-multiple-pods +spec: + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-multiple-pods + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-multiple-pods +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer +/-/-/-/ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-2-deployment + namespace: test-multiple-pods +spec: + selector: + matchLabels: + app: test-pod-2 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-2 + generated-by: cdk8s + namespace: test-multiple-pods + spec: + containers: + - image: nginx:latest + name: test-pod-2-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-2-svc + namespace: test-multiple-pods +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-2 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-custom-resources - 1] +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-custom-resources +spec: + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-custom-resources + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 2Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-custom-resources +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-configmaps - 1] +apiVersion: v1 +kind: ConfigMap +metadata: + name: test-pod-1-configmap + namespace: test-configmaps +data: + config.toml: test + config2.toml: test +/-/-/-/ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-configmaps +spec: + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-configmaps + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: + - mountPath: /config.toml + name: test-pod-1-configmap-volume-0 + subPath: config.toml + - mountPath: /config2.toml + name: test-pod-1-configmap-volume-1 + subPath: config2.toml + volumes: + - configMap: + items: + - key: config.toml + path: config.toml + name: test-pod-1-configmap + name: test-pod-1-configmap-volume-0 + - configMap: + items: + - key: config2.toml + path: config2.toml + name: test-pod-1-configmap + name: test-pod-1-configmap-volume-1 +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-configmaps +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-secrets - 1] +apiVersion: v1 +kind: Secret +metadata: + name: test-pod-1-secret + namespace: test-secrets +stringData: + secret.toml: test + secret2.toml: test +/-/-/-/ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-secrets +spec: + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-secrets + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: + - mountPath: /secret.toml + name: test-pod-1-secret-volume-0 + subPath: secret.toml + - mountPath: /secret2.toml + name: test-pod-1-secret-volume-1 + subPath: secret2.toml + volumes: + - name: test-pod-1-secret-volume-0 + secret: + items: + - key: secret.toml + path: secret.toml + secretName: test-pod-1-secret + - name: test-pod-1-secret-volume-1 + secret: + items: + - key: secret2.toml + path: secret2.toml + secretName: test-pod-1-secret +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-secrets +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-instances - 1] +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-instances +spec: + replicas: 2 + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-instances + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-instances +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-volumes - 1] +apiVersion: v1 +kind: ConfigMap +metadata: + name: pg-x-configmap + namespace: test-volumes +data: + init.sql: | + + ALTER USER chainlink WITH SUPERUSER; +/-/-/-/ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: pg-x-statefulset + namespace: test-volumes +spec: + replicas: 1 + selector: + matchLabels: + app: pg-x + generated-by: cdk8s + serviceName: pg-x-svc + template: + metadata: + annotations: {} + labels: + app: pg-x + generated-by: cdk8s + name: pg-x-pp + namespace: test-volumes + spec: + containers: + - env: + - name: POSTGRES_USER + value: chainlink + - name: POSTGRES_PASSWORD + value: thispasswordislongenough + - name: POSTGRES_DB + value: chainlink + image: postgres:15 + name: pg-x-container + ports: + - containerPort: 5432 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + securityContext: + runAsGroup: 999 + runAsUser: 999 + volumeMounts: + - mountPath: /docker-entrypoint-initdb.d/init.sql + name: pg-x-configmap-volume-0 + subPath: init.sql + securityContext: + fsGroup: 999 + volumes: + - configMap: + items: + - key: init.sql + path: init.sql + name: pg-x-configmap + name: pg-x-configmap-volume-0 + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: pg-x-svc + namespace: test-volumes +spec: + ports: + - name: port-0 + port: 5432 + targetPort: 5432 + selector: + app: pg-x + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-services - 1] +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-pod-1-deployment + namespace: test-services +spec: + selector: + matchLabels: + app: test-pod-1 + generated-by: cdk8s + template: + metadata: + annotations: {} + labels: + app: test-pod-1 + generated-by: cdk8s + namespace: test-services + spec: + containers: + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: test-pod-1-svc + namespace: test-services +spec: + ports: + - name: port-0 + port: 80 + targetPort: 80 + selector: + app: test-pod-1 + generated-by: cdk8s + type: LoadBalancer + +--- + +[TestPods/test-command - 1] +apiVersion: apps/v1 +kind: Deployment +metadata: + name: anvil-deployment + namespace: test-command +spec: + selector: + matchLabels: + app: anvil + chain.link/component: cl + generated-by: cdk8s + template: + metadata: + annotations: + custom-annotation: custom + labels: + app: anvil + chain.link/component: cl + generated-by: cdk8s + namespace: test-command + spec: + containers: + - command: + - anvil + - --host=0.0.0.0 + - -b=1 + image: ghcr.io/foundry-rs/foundry + name: anvil-container + ports: + - containerPort: 8545 + name: port-0 + resources: + limits: + cpu: 250m + memory: 1Gi + requests: + cpu: 250m + memory: 1Gi + volumeMounts: [] + volumes: [] +/-/-/-/ +apiVersion: v1 +kind: Service +metadata: + name: anvil-svc + namespace: test-command +spec: + ports: + - name: port-0 + port: 8545 + targetPort: 8545 + selector: + app: anvil + chain.link/component: cl + generated-by: cdk8s + type: LoadBalancer + +--- diff --git a/pods/_typos.toml b/pods/_typos.toml new file mode 100644 index 000000000..ac291164d --- /dev/null +++ b/pods/_typos.toml @@ -0,0 +1,5 @@ +[files] +extend-exclude = [ + "imports/*", + "crds/*" +] \ No newline at end of file diff --git a/pods/cdk8s.yaml b/pods/cdk8s.yaml new file mode 100644 index 000000000..20e55cfc6 --- /dev/null +++ b/pods/cdk8s.yaml @@ -0,0 +1,8 @@ +language: go +app: go run . +imports: + - k8s + - k8s@1.31.0 + - k8s@1.32.0 + - crd.yml + - crds/monitoring.coreos.com.yml diff --git a/pods/client.go b/pods/client.go new file mode 100644 index 000000000..2b7257ff7 --- /dev/null +++ b/pods/client.go @@ -0,0 +1,217 @@ +package pods + +import ( + "context" + "fmt" + "os" + "os/exec" + "time" + + "github.com/aws/jsii-runtime-go" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" +) + +// API is a struct that provides methods to interact with Kubernetes clusters. +type API struct { + ClientSet *kubernetes.Clientset + RESTConfig *rest.Config + namespace string +} + +// NewAPI creates a new instance of K8s API. +// It takes the kubeconfig path and namespace as parameters. +func NewAPI(namespace string) (*API, error) { + if os.Getenv("SNAPSHOT_TESTS") == "true" { // coverage-ignore + L.Warn().Msg("Snapshot tests mode, skipping connecting to Kubernetes API!") + return nil, nil + } + loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() + kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, &clientcmd.ConfigOverrides{}) + config, err := kubeConfig.ClientConfig() + if err != nil { // coverage-ignore + return nil, err + } + clientset, err := kubernetes.NewForConfig(config) + if err != nil { // coverage-ignore + return nil, fmt.Errorf("failed to create clientset: %v", err) + } + return &API{ + ClientSet: clientset, + RESTConfig: config, + namespace: namespace, + }, nil +} + +func NewApp(ns string) (*API, cdk8s.App, cdk8s.Chart, error) { + app := cdk8s.NewApp(nil) + chart := cdk8s.NewChart(app, jsii.String("composite-chart"), &cdk8s.ChartProps{ + Namespace: S(ns), + }) + api, err := NewAPI(ns) + if err != nil { + return api, app, chart, err + } + if api == nil { + return api, app, chart, nil + } + err = api.CreateNamespace(ns) + if err != nil { + return api, app, chart, err + } + return api, app, chart, nil +} + +// GetPods returns a list of Pods in the specified namespace. +func (k *API) GetPods(ctx context.Context) (*corev1.PodList, error) { + pods, err := k.ClientSet.CoreV1().Pods(k.namespace).List(ctx, metav1.ListOptions{}) + if err != nil { // coverage-ignore + return nil, fmt.Errorf("failed to list pods: %v", err) + } + return pods, nil +} + +// GetConfigMaps returns a map of ConfigMap names to their data in the specified namespace. +func (k *API) GetConfigMaps(ctx context.Context) (map[string]map[string]string, error) { + configMaps, err := k.ClientSet.CoreV1().ConfigMaps(k.namespace).List(ctx, metav1.ListOptions{}) + if err != nil { // coverage-ignore + return nil, fmt.Errorf("failed to list ConfigMaps: %v", err) + } + result := make(map[string]map[string]string) + for _, cm := range configMaps.Items { + result[cm.Name] = cm.Data + } + return result, nil +} + +// GetSecrets returns a map of Secret names to their data in the specified namespace. +func (k *API) GetSecrets(ctx context.Context) (map[string]map[string][]byte, error) { + secrets, err := k.ClientSet.CoreV1().Secrets(k.namespace).List(ctx, metav1.ListOptions{}) + if err != nil { // coverage-ignore + return nil, fmt.Errorf("failed to list Secrets: %v", err) + } + result := make(map[string]map[string][]byte) + for _, secret := range secrets.Items { + result[secret.Name] = secret.Data + } + return result, nil +} + +// GetPersistentVolumes returns a map of Pod names to their volumes in the specified namespace. +func (k *API) GetPersistentVolumes(ctx context.Context) ([]corev1.PersistentVolume, error) { // coverage-ignore + vols, err := k.ClientSet.CoreV1().PersistentVolumes().List(ctx, metav1.ListOptions{}) + if err != nil { // coverage-ignore + return nil, fmt.Errorf("failed to list Pods: %v", err) + } + return vols.Items, nil +} + +// GetServices returns a list of Services in the specified namespace. +func (k *API) GetServices(ctx context.Context) ([]corev1.Service, error) { // coverage-ignore + services, err := k.ClientSet.CoreV1().Services(k.namespace).List(ctx, metav1.ListOptions{}) + if err != nil { // coverage-ignore + return nil, fmt.Errorf("failed to list services: %v", err) + } + return services.Items, nil +} + +// AllPodsReady checks if all Pods in the namespace are ready. +// A Pod is considered ready if all its containers are ready and the Pod's phase is "Running". +func (k *API) AllPodsReady(ctx context.Context) (bool, error) { + pods, err := k.GetPods(ctx) + if err != nil { // coverage-ignore + return false, fmt.Errorf("failed to get pods: %v", err) + } + for _, pod := range pods.Items { + if pod.Status.Phase != corev1.PodRunning { + return false, nil + } + L.Debug().Str("Pod", pod.Name).Str("Status", string(pod.Status.Phase)).Msg("Pod status") + for _, containerStatus := range pod.Status.ContainerStatuses { + L.Debug().Str("Pod", pod.Name).Str("Status", containerStatus.State.String()).Msg("Pod status") + if !containerStatus.Ready { + return false, nil + } + } + } + return true, nil +} + +// CreateNamespace creates a new Kubernetes namespace with the specified name. +func (k *API) CreateNamespace(name string) error { + namespace := &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + }, + } + _, err := k.ClientSet.CoreV1().Namespaces().Create(context.Background(), namespace, metav1.CreateOptions{}) + if err != nil { // coverage-ignore + return fmt.Errorf("failed to create namespace: %v", err) + } + return nil +} + +// RemoveNamespace deletes a Kubernetes namespace with the specified name. +func (k *API) RemoveNamespace(name string) error { + err := k.ClientSet.CoreV1().Namespaces().Delete(context.Background(), name, metav1.DeleteOptions{}) + if err != nil { // coverage-ignore + return fmt.Errorf("failed to delete namespace: %v", err) + } + return nil +} + +// Apply applied manifests and waits +func (k *API) Apply(manifest string) error { + if manifest == "" { + return fmt.Errorf("manifest is empty, nothing to apply") + } + tmpFile, err := os.Create("tmp.yml") + if err != nil { + return fmt.Errorf("failed to create temp file: %w", err) + } + if _, err := tmpFile.WriteString(manifest); err != nil { + return fmt.Errorf("failed to write manifest: %w", err) + } + tmpFile.Close() + ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute) + defer cancel() + //nolint + cmd := exec.CommandContext(ctx, "kubectl", "apply", "-f", tmpFile.Name(), "--wait") + output, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("kubectl apply failed: %w\nOutput: %s", err, string(output)) + } + _, err = k.WaitForAllPodsReady(context.Background(), 3*time.Minute) + return err +} + +// WaitForAllPodsReady waits until all Pods in the namespace are ready or the timeout is reached. +// It retries the check periodically until the condition is met or the timeout occurs. +func (k *API) WaitForAllPodsReady(ctx context.Context, timeout time.Duration) (bool, error) { + L.Info().Str("Namespace", k.namespace).Msg("Waiting for all pods to be ready") + ctx, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + retryInterval := 3 * time.Second + time.Sleep(retryInterval) + for { + select { + case <-ctx.Done(): + // coverage-ignore + return false, fmt.Errorf("timeout reached while waiting for Pods to be ready") + default: + ready, err := k.AllPodsReady(ctx) + if err != nil { // coverage-ignore + return false, fmt.Errorf("failed to check Pod readiness: %v", err) + } + if ready { + return true, nil + } + L.Debug().Msg("Checking if all pods are ready") + time.Sleep(retryInterval) + } + } +} diff --git a/pods/cover.svg b/pods/cover.svg new file mode 100644 index 000000000..5c1e15029 --- /dev/null +++ b/pods/cover.svg @@ -0,0 +1 @@ +coveragecoverage93%93% \ No newline at end of file diff --git a/pods/crds/monitoring.coreos.com.yml b/pods/crds/monitoring.coreos.com.yml new file mode 100644 index 000000000..dfe1d1118 --- /dev/null +++ b/pods/crds/monitoring.coreos.com.yml @@ -0,0 +1,775 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + operator.prometheus.io/version: 0.70.0 + creationTimestamp: "2021-07-01T20:30:00Z" + generation: 22901 + labels: + chain.link/app: kube-prometheus-stack + chain.link/env: staging + chain.link/project: prometheus + chain.link/team: infra-observability + name: servicemonitors.monitoring.coreos.com + resourceVersion: "2284404583" + uid: d8cb292a-149c-4e70-8713-1de0d1146d27 +spec: + conversion: + strategy: None + group: monitoring.coreos.com + names: + categories: + - prometheus-operator + kind: ServiceMonitor + listKind: ServiceMonitorList + plural: servicemonitors + shortNames: + - smon + singular: servicemonitor + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ServiceMonitor defines monitoring for a set of services. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired Service selection for target discovery + by Prometheus. + properties: + attachMetadata: + description: "`attachMetadata` defines additional metadata which is + added to the discovered targets. \n It requires Prometheus >= v2.37.0." + properties: + node: + description: When set to true, Prometheus must have the `get` + permission on the `Nodes` objects. + type: boolean + type: object + endpoints: + description: List of endpoints part of this ServiceMonitor. + items: + description: Endpoint defines an endpoint serving Prometheus metrics + to be scraped by Prometheus. + properties: + authorization: + description: "`authorization` configures the Authorization header + credentials to use when scraping the target. \n Cannot be + set at the same time as `basicAuth`, or `oauth2`." + properties: + credentials: + description: Selects a key of a Secret in the namespace + that contains the credentials for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: "Defines the authentication type. The value + is case-insensitive. \n \"Basic\" is not a supported value. + \n Default: \"Bearer\"" + type: string + type: object + basicAuth: + description: "`basicAuth` configures the Basic Authentication + credentials to use when scraping the target. \n Cannot be + set at the same time as `authorization`, or `oauth2`." + properties: + password: + description: '`password` specifies a key of a Secret containing + the password for authentication.' + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: '`username` specifies a key of a Secret containing + the username for authentication.' + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenFile: + description: "File to read bearer token for scraping the target. + \n Deprecated: use `authorization` instead." + type: string + bearerTokenSecret: + description: "`bearerTokenSecret` specifies a key of a Secret + containing the bearer token for scraping targets. The secret + needs to be in the same namespace as the ServiceMonitor object + and readable by the Prometheus Operator. \n Deprecated: use + `authorization` instead." + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + enableHttp2: + description: '`enableHttp2` can be used to disable HTTP2 when + scraping the target.' + type: boolean + filterRunning: + description: "When true, the pods which are not running (e.g. + either in Failed or Succeeded state) are dropped during the + target discovery. \n If unset, the filtering is enabled. \n + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase" + type: boolean + followRedirects: + description: '`followRedirects` defines whether the scrape requests + should follow HTTP 3xx redirects.' + type: boolean + honorLabels: + description: When true, `honorLabels` preserves the metric's + labels when they collide with the target's labels. + type: boolean + honorTimestamps: + description: '`honorTimestamps` controls whether Prometheus + preserves the timestamps when exposed by the target.' + type: boolean + interval: + description: "Interval at which Prometheus scrapes the metrics + from the target. \n If empty, Prometheus uses the global scrape + interval." + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + metricRelabelings: + description: '`metricRelabelings` configures the relabeling + rules to apply to the samples before ingestion.' + items: + description: "RelabelConfig allows dynamic rewriting of the + label set for targets, alerts, scraped samples and remote + write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config" + properties: + action: + default: replace + description: "Action to perform based on the regex matching. + \n `Uppercase` and `Lowercase` actions require Prometheus + >= v2.36.0. `DropEqual` and `KeepEqual` actions require + Prometheus >= v2.41.0. \n Default: \"Replace\"" + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + - keepequal + - KeepEqual + - dropequal + - DropEqual + type: string + modulus: + description: "Modulus to take of the hash of the source + label values. \n Only applicable when the action is + `HashMod`." + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. + type: string + replacement: + description: "Replacement value against which a Replace + action is performed if the regular expression matches. + \n Regex capture groups are available." + type: string + separator: + description: Separator is the string between concatenated + SourceLabels. + type: string + sourceLabels: + description: The source labels select values from existing + labels. Their content is concatenated using the configured + Separator and matched against the configured regular + expression. + items: + description: LabelName is a valid Prometheus label name + which may only contain ASCII letters, numbers, as + well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: "Label to which the resulting string is written + in a replacement. \n It is mandatory for `Replace`, + `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and + `DropEqual` actions. \n Regex capture groups are available." + type: string + type: object + type: array + oauth2: + description: "`oauth2` configures the OAuth2 settings to use + when scraping the target. \n It requires Prometheus >= 2.27.0. + \n Cannot be set at the same time as `authorization`, or `basicAuth`." + properties: + clientId: + description: '`clientId` specifies a key of a Secret or + ConfigMap containing the OAuth2 client''s ID.' + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: '`clientSecret` specifies a key of a Secret + containing the OAuth2 client''s secret.' + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: '`endpointParams` configures the HTTP parameters + to append to the token URL.' + type: object + scopes: + description: '`scopes` defines the OAuth2 scopes used for + the token request.' + items: + type: string + type: array + tokenUrl: + description: '`tokenURL` configures the URL to fetch the + token from.' + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + params: + additionalProperties: + items: + type: string + type: array + description: params define optional HTTP URL parameters. + type: object + path: + description: "HTTP path from which to scrape for metrics. \n + If empty, Prometheus uses the default value (e.g. `/metrics`)." + type: string + port: + description: "Name of the Service port which this endpoint refers + to. \n It takes precedence over `targetPort`." + type: string + proxyUrl: + description: '`proxyURL` configures the HTTP Proxy URL (e.g. + "http://proxyserver:2195") to go through when scraping the + target.' + type: string + relabelings: + description: "`relabelings` configures the relabeling rules + to apply the target's metadata labels. \n The Operator automatically + adds relabelings for a few standard Kubernetes fields. \n + The original scrape job's name is available via the `__tmp_prometheus_job_name` + label. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config" + items: + description: "RelabelConfig allows dynamic rewriting of the + label set for targets, alerts, scraped samples and remote + write samples. \n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config" + properties: + action: + default: replace + description: "Action to perform based on the regex matching. + \n `Uppercase` and `Lowercase` actions require Prometheus + >= v2.36.0. `DropEqual` and `KeepEqual` actions require + Prometheus >= v2.41.0. \n Default: \"Replace\"" + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + - keepequal + - KeepEqual + - dropequal + - DropEqual + type: string + modulus: + description: "Modulus to take of the hash of the source + label values. \n Only applicable when the action is + `HashMod`." + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. + type: string + replacement: + description: "Replacement value against which a Replace + action is performed if the regular expression matches. + \n Regex capture groups are available." + type: string + separator: + description: Separator is the string between concatenated + SourceLabels. + type: string + sourceLabels: + description: The source labels select values from existing + labels. Their content is concatenated using the configured + Separator and matched against the configured regular + expression. + items: + description: LabelName is a valid Prometheus label name + which may only contain ASCII letters, numbers, as + well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: "Label to which the resulting string is written + in a replacement. \n It is mandatory for `Replace`, + `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and + `DropEqual` actions. \n Regex capture groups are available." + type: string + type: object + type: array + scheme: + description: "HTTP scheme to use for scraping. \n `http` and + `https` are the expected values unless you rewrite the `__scheme__` + label via relabeling. \n If empty, Prometheus uses the default + value `http`." + enum: + - http + - https + type: string + scrapeTimeout: + description: "Timeout after which Prometheus considers the scrape + to be failed. \n If empty, Prometheus uses the global scrape + timeout unless it is less than the target's scrape interval + value in which the latter is used." + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + targetPort: + anyOf: + - type: integer + - type: string + description: "Name or number of the target port of the `Pod` + object behind the Service, the port must be specified with + container port property. \n Deprecated: use `port` instead." + x-kubernetes-int-or-string: true + tlsConfig: + description: TLS configuration to use when scraping the target. + properties: + ca: + description: Certificate authority used when verifying server + certificates. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + caFile: + description: Path to the CA cert in the Prometheus container + to use for the targets. + type: string + cert: + description: Client certificate to present when doing client-authentication. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + certFile: + description: Path to the client cert file in the Prometheus + container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus + container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the + targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + trackTimestampsStaleness: + description: "`trackTimestampsStaleness` defines whether Prometheus + tracks staleness of the metrics that have an explicit timestamp + present in scraped data. Has no effect if `honorTimestamps` + is false. \n It requires Prometheus >= v2.48.0." + type: boolean + type: object + type: array + jobLabel: + description: "`jobLabel` selects the label from the associated Kubernetes + `Service` object which will be used as the `job` label for all metrics. + \n For example if `jobLabel` is set to `foo` and the Kubernetes + `Service` object is labeled with `foo: bar`, then Prometheus adds + the `job=\"bar\"` label to all ingested metrics. \n If the value + of this field is empty or if the label doesn't exist for the given + Service, the `job` label of the metrics defaults to the name of + the associated Kubernetes `Service`." + type: string + keepDroppedTargets: + description: "Per-scrape limit on the number of targets dropped by + relabeling that will be kept in memory. 0 means no limit. \n It + requires Prometheus >= v2.47.0." + format: int64 + type: integer + labelLimit: + description: "Per-scrape limit on number of labels that will be accepted + for a sample. \n It requires Prometheus >= v2.27.0." + format: int64 + type: integer + labelNameLengthLimit: + description: "Per-scrape limit on length of labels name that will + be accepted for a sample. \n It requires Prometheus >= v2.27.0." + format: int64 + type: integer + labelValueLengthLimit: + description: "Per-scrape limit on length of labels value that will + be accepted for a sample. \n It requires Prometheus >= v2.27.0." + format: int64 + type: integer + namespaceSelector: + description: Selector to select which namespaces the Kubernetes `Endpoints` + objects are discovered from. + properties: + any: + description: Boolean describing whether all namespaces are selected + in contrast to a list restricting them. + type: boolean + matchNames: + description: List of namespace names to select from. + items: + type: string + type: array + type: object + podTargetLabels: + description: '`podTargetLabels` defines the labels which are transferred + from the associated Kubernetes `Pod` object onto the ingested metrics.' + items: + type: string + type: array + sampleLimit: + description: '`sampleLimit` defines a per-scrape limit on the number + of scraped samples that will be accepted.' + format: int64 + type: integer + selector: + description: Label selector to select the Kubernetes `Endpoints` objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + targetLabels: + description: '`targetLabels` defines the labels which are transferred + from the associated Kubernetes `Service` object onto the ingested + metrics.' + items: + type: string + type: array + targetLimit: + description: '`targetLimit` defines a limit on the number of scraped + targets that will be accepted.' + format: int64 + type: integer + required: + - selector + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + categories: + - prometheus-operator + kind: ServiceMonitor + listKind: ServiceMonitorList + plural: servicemonitors + shortNames: + - smon + singular: servicemonitor + conditions: + - lastTransitionTime: "2021-07-01T20:30:00Z" + message: no conflicts found + reason: NoConflicts + status: "True" + type: NamesAccepted + - lastTransitionTime: "2021-07-01T20:30:00Z" + message: the initial names have been accepted + reason: InitialNamesAccepted + status: "True" + type: Established + storedVersions: + - v1 diff --git a/pods/defaults.go b/pods/defaults.go new file mode 100644 index 000000000..87a1051ed --- /dev/null +++ b/pods/defaults.go @@ -0,0 +1,125 @@ +package pods + +import ( + "fmt" + "sort" + + "github.com/aws/jsii-runtime-go" + "github.com/smartcontractkit/pods/imports/k8s" +) + +func S(s string) *string { return jsii.String(s) } +func I(s int) *float64 { return jsii.Number(s) } + +func SortedKeys(m map[string]*string) []string { + keys := make([]string, 0, len(m)) + for key := range m { + keys = append(keys, key) + } + sort.Strings(keys) + return keys +} + +func CheckHostPort(host, port string) *k8s.Probe { + return &k8s.Probe{ + Exec: &k8s.ExecAction{ + Command: &[]*string{S("timeout"), S("1"), S("bash"), S("-ClientSet"), S("echo"), S(">"), S(fmt.Sprintf("/dev/tcp/%s/%s", host, port)), S("&&"), S("exit"), S("0"), S("||"), S("exit"), S("1")}, + }, + InitialDelaySeconds: I(5), + FailureThreshold: I(10), + PeriodSeconds: I(1), + TimeoutSeconds: I(2), + } +} + +// Resources is a helper function to define container resources +func Resources(cpu, mem string) map[string]k8s.Quantity { + return map[string]k8s.Quantity{ + "cpu": k8s.Quantity_FromString(S(cpu)), + "memory": k8s.Quantity_FromString(S(mem)), + } +} + +func ResourcesSmall() map[string]k8s.Quantity { + return map[string]k8s.Quantity{ + "cpu": k8s.Quantity_FromString(S("250m")), + "memory": k8s.Quantity_FromString(S("1Gi")), + } +} + +func ResourcesMedium() map[string]k8s.Quantity { + return map[string]k8s.Quantity{ + "cpu": k8s.Quantity_FromString(S("4")), + "memory": k8s.Quantity_FromString(S("4Gi")), + } +} + +func CLUserContainerSecurityCtx() *k8s.SecurityContext { // coverage-ignore + return &k8s.SecurityContext{ + RunAsNonRoot: jsii.Bool(true), + RunAsUser: jsii.Number(14933), + RunAsGroup: jsii.Number(999), + } +} + +func PostgreSQL(name string, image string, requests, limits map[string]k8s.Quantity, dbSize *string) *PodConfig { // coverage-ignore + p := &PodConfig{ + Name: S(name), + Image: S(image), + Ports: []string{"5432:5432"}, + Env: &[]*k8s.EnvVar{ + { + Name: S("POSTGRES_USER"), + Value: S("chainlink"), + }, + { + Name: S("POSTGRES_PASSWORD"), + Value: S("thispasswordislongenough"), + }, + { + Name: S("POSTGRES_DB"), + Value: S("chainlink"), + }, + }, + Limits: requests, + Requests: limits, + // 999 is the default postgres user + ContainerSecurityContext: &k8s.SecurityContext{ + RunAsUser: jsii.Number(999), + RunAsGroup: jsii.Number(999), + }, + PodSecurityContext: &k8s.PodSecurityContext{ + FsGroup: jsii.Number(999), + }, + ConfigMap: map[string]*string{ + "init.sql": S(` +ALTER USER chainlink WITH SUPERUSER; +`), + }, + ConfigMapMountPath: map[string]*string{ + "init.sql": S("/docker-entrypoint-initdb.d/init.sql"), + }, + } + if dbSize != nil { + p.VolumeClaimTemplates = SizedVolumeClaim(dbSize) + } + return p +} + +func SizedVolumeClaim(size *string) []*k8s.KubePersistentVolumeClaimProps { // coverage-ignore + return []*k8s.KubePersistentVolumeClaimProps{ + { + Metadata: &k8s.ObjectMeta{ + Name: S("data"), + }, + Spec: &k8s.PersistentVolumeClaimSpec{ + AccessModes: &[]*string{S("ReadWriteOnce")}, + Resources: &k8s.VolumeResourceRequirements{ + Requests: &map[string]k8s.Quantity{ + "storage": k8s.Quantity_FromString(size), + }, + }, + }, + }, + } +} diff --git a/pods/devbox.json b/pods/devbox.json new file mode 100644 index 000000000..683ec5ed2 --- /dev/null +++ b/pods/devbox.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.13.5/.schema/devbox.schema.json", + "packages": [ + "kind@0.26.0", + "kubernetes-helm@3.17.0", + "kubectl@1.32.1", + "k9s@0.32.7", + "nodePackages.cdk8s-cli@2.198.334", + "actionlint@1.6.26", + "golangci-lint@1.64.5", + "just@1.39.0", + "shellcheck@0.10.0", + "jq@latest", + "typos@latest", + "awscli2@latest", + "kubefwd@1.22.5" + ], + "shell": { + "init_hook": [ + "echo 'Welcome to devbox!' > /dev/null" + ], + "scripts": { + "up": [ + "kind create cluster --name pods --config kind.yml" + ], + "down": [ + "kind delete cluster --name pods" + ], + "context": [ + "kubectl config use-context kind-pods" + ] + } + } +} diff --git a/pods/devbox.lock b/pods/devbox.lock new file mode 100644 index 000000000..8a49c1526 --- /dev/null +++ b/pods/devbox.lock @@ -0,0 +1,844 @@ +{ + "lockfile_version": "1", + "packages": { + "actionlint@1.6.26": { + "last_modified": "2024-02-10T18:15:24Z", + "resolved": "github:NixOS/nixpkgs/10b813040df67c4039086db0f6eaf65c536886c6#actionlint", + "source": "devbox-search", + "version": "1.6.26", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/9vws70qh2y6nni0gnm858iclbqd421k4-actionlint-1.6.26", + "default": true + } + ], + "store_path": "/nix/store/9vws70qh2y6nni0gnm858iclbqd421k4-actionlint-1.6.26" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/a2gpifxi08qvfhwi8w3w1g0g44q4gcd2-actionlint-1.6.26", + "default": true + } + ], + "store_path": "/nix/store/a2gpifxi08qvfhwi8w3w1g0g44q4gcd2-actionlint-1.6.26" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/x79xm5x8wzvnx8mq63p56yhxw3d0m5wa-actionlint-1.6.26", + "default": true + } + ], + "store_path": "/nix/store/x79xm5x8wzvnx8mq63p56yhxw3d0m5wa-actionlint-1.6.26" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/rfs8z7ppizqg4kph9wp6845k2k421hr3-actionlint-1.6.26", + "default": true + } + ], + "store_path": "/nix/store/rfs8z7ppizqg4kph9wp6845k2k421hr3-actionlint-1.6.26" + } + } + }, + "awscli2@latest": { + "last_modified": "2025-03-16T16:17:41Z", + "resolved": "github:NixOS/nixpkgs/8f76cf16b17c51ae0cc8e55488069593f6dab645#awscli2", + "source": "devbox-search", + "version": "2.24.22", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/wz8q35z6g1ijx2qkwzgbmnixpjcx0af2-awscli2-2.24.22", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/5rrvg886p3x88y81srlyzqi9a5h3xzp3-awscli2-2.24.22-dist" + } + ], + "store_path": "/nix/store/wz8q35z6g1ijx2qkwzgbmnixpjcx0af2-awscli2-2.24.22" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/hjkdcx9nhyzq28pp2h158s6bwy18a7kk-awscli2-2.24.22", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/p0nr2ydai7h3p92kpmfhr4wbq4kiiyrl-awscli2-2.24.22-dist" + } + ], + "store_path": "/nix/store/hjkdcx9nhyzq28pp2h158s6bwy18a7kk-awscli2-2.24.22" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/agx73c9mf6203myj4jd1cqmvz430af3s-awscli2-2.24.22", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/1s69i07wfj53im8grq1lmd50sd4gydwv-awscli2-2.24.22-dist" + } + ], + "store_path": "/nix/store/agx73c9mf6203myj4jd1cqmvz430af3s-awscli2-2.24.22" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/bgvyzav4ybv0b47535rdsmngsrwcj1ih-awscli2-2.24.22", + "default": true + }, + { + "name": "dist", + "path": "/nix/store/x6smm4ccvhsn3n2880vg0x6jja0xdby8-awscli2-2.24.22-dist" + } + ], + "store_path": "/nix/store/bgvyzav4ybv0b47535rdsmngsrwcj1ih-awscli2-2.24.22" + } + } + }, + "github:NixOS/nixpkgs/nixpkgs-unstable": { + "resolved": "github:NixOS/nixpkgs/3549532663732bfd89993204d40543e9edaec4f2?lastModified=1742272065&narHash=sha256-ud8vcSzJsZ%2FCK%2Br8%2Fv0lyf4yUntVmDq6Z0A41ODfWbE%3D" + }, + "golangci-lint@1.64.5": { + "last_modified": "2025-02-16T21:44:05Z", + "resolved": "github:NixOS/nixpkgs/f0204ef4baa3b6317dee1c84ddeffbd293638836#golangci-lint", + "source": "devbox-search", + "version": "1.64.5", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/jh2f466rbi0pgk6f3w8jdzy4qyccybz3-golangci-lint-1.64.5", + "default": true + } + ], + "store_path": "/nix/store/jh2f466rbi0pgk6f3w8jdzy4qyccybz3-golangci-lint-1.64.5" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/63mvzwlqana7bfcy8jzmn3fvkn46k0p6-golangci-lint-1.64.5", + "default": true + } + ], + "store_path": "/nix/store/63mvzwlqana7bfcy8jzmn3fvkn46k0p6-golangci-lint-1.64.5" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/d662i9k8p2alplmxc3bqypc646x7wy1b-golangci-lint-1.64.5", + "default": true + } + ], + "store_path": "/nix/store/d662i9k8p2alplmxc3bqypc646x7wy1b-golangci-lint-1.64.5" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/25732rsdh49iwjrik69sb9cfhiza00b5-golangci-lint-1.64.5", + "default": true + } + ], + "store_path": "/nix/store/25732rsdh49iwjrik69sb9cfhiza00b5-golangci-lint-1.64.5" + } + } + }, + "jq@latest": { + "last_modified": "2025-03-16T23:54:35Z", + "resolved": "github:NixOS/nixpkgs/5d9b5431f967007b3952c057fc92af49a4c5f3b2#jq", + "source": "devbox-search", + "version": "1.7.1", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/a0d5735pbpxr817gjzvv6bdy2ycj38nf-jq-1.7.1-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/id3vbyr5wqz7ljylcdqjvrpdsiv4a02v-jq-1.7.1-man", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/yhykv5iafas7lp327w3xkj1gxkhifcbk-jq-1.7.1-dev" + }, + { + "name": "doc", + "path": "/nix/store/rqjr3mln9jmidha6izp07fq9fp30y4sx-jq-1.7.1-doc" + }, + { + "name": "out", + "path": "/nix/store/m0kqs2n6b4idvhpzcqad9jfz1cbwib2n-jq-1.7.1" + } + ], + "store_path": "/nix/store/a0d5735pbpxr817gjzvv6bdy2ycj38nf-jq-1.7.1-bin" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/64k31kawylkwbjh4r1bwxfq8zb0yzqyi-jq-1.7.1-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/w29k8y3v6rfyy4kvx95dc79lyfcq7ikf-jq-1.7.1-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/mhfyqmwvnqihqs5av778m4lic0p15hyf-jq-1.7.1-doc" + }, + { + "name": "out", + "path": "/nix/store/y3sdsgvnpmwp42d2kd9rq3d5anraccpy-jq-1.7.1" + }, + { + "name": "dev", + "path": "/nix/store/r5wikmfi7na32gcx46p3ncxmzns1f5xz-jq-1.7.1-dev" + } + ], + "store_path": "/nix/store/64k31kawylkwbjh4r1bwxfq8zb0yzqyi-jq-1.7.1-bin" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/p6ph78v4kf373vnsigwaqh7j3dlapnny-jq-1.7.1-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/83f3x5240k5kqc8bw758nq4q6d3j7l5p-jq-1.7.1-man", + "default": true + }, + { + "name": "dev", + "path": "/nix/store/6lhl23njgh2pjh3sypxv4s0g6n0zdmqk-jq-1.7.1-dev" + }, + { + "name": "doc", + "path": "/nix/store/5md80wrj52gklrxwsf68dkqc9igmq928-jq-1.7.1-doc" + }, + { + "name": "out", + "path": "/nix/store/fbv7k9csv3m2af8chfblxzlv2mgaz8i0-jq-1.7.1" + } + ], + "store_path": "/nix/store/p6ph78v4kf373vnsigwaqh7j3dlapnny-jq-1.7.1-bin" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/134m2q047vsr9miwh5l227j7sh9jb130-jq-1.7.1-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/8vlqxykb9959nn5bl5vph99d2c4np9wg-jq-1.7.1-man", + "default": true + }, + { + "name": "out", + "path": "/nix/store/6zy1hkwlwq9r97swjy616vf096dccrsr-jq-1.7.1" + }, + { + "name": "dev", + "path": "/nix/store/94yz5x26ssx2pqn7gamlngp306s8mz60-jq-1.7.1-dev" + }, + { + "name": "doc", + "path": "/nix/store/byqqs2ayp67zvmd6dqi4jahwm1f779cj-jq-1.7.1-doc" + } + ], + "store_path": "/nix/store/134m2q047vsr9miwh5l227j7sh9jb130-jq-1.7.1-bin" + } + } + }, + "just@1.39.0": { + "last_modified": "2025-03-17T10:12:08Z", + "resolved": "github:NixOS/nixpkgs/096478927c360bc18ea80c8274f013709cf7bdcd#just", + "source": "devbox-search", + "version": "1.39.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/rsrpzvacsxab9r2kcijcdhz3k3sv0hr4-just-1.39.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/0xrvy26jc785hasvar4nkv6vgayljha7-just-1.39.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/8ia8s6fswr3xssckiv7iw1pvd9lks8a0-just-1.39.0-doc" + } + ], + "store_path": "/nix/store/rsrpzvacsxab9r2kcijcdhz3k3sv0hr4-just-1.39.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/nrna4lsqfbqppzi4rkqx1lxhz76a8dpf-just-1.39.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/r4cks6hdif2ldgpgk16ymiww71xyi9gm-just-1.39.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/1ij71rygj6hap754rl06paavm1p58q82-just-1.39.0-doc" + } + ], + "store_path": "/nix/store/nrna4lsqfbqppzi4rkqx1lxhz76a8dpf-just-1.39.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/5r4b6163w6y6b20pks5jg4927pq5sy4w-just-1.39.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/a62hvcrsl8hjbirizav9cbc3r1daaxr3-just-1.39.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/7kisy4m2f4zc3nnhwx7rygkic6c3a360-just-1.39.0-doc" + } + ], + "store_path": "/nix/store/5r4b6163w6y6b20pks5jg4927pq5sy4w-just-1.39.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/xpk2z6s2p98pp6xm0zyl5f4x7aibw6vv-just-1.39.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/m7ab9fghr4zp84l02842n5b2j7xhgiyq-just-1.39.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/3y8hj3rhxfhjmr96lcjx1q10cy8q070s-just-1.39.0-doc" + } + ], + "store_path": "/nix/store/xpk2z6s2p98pp6xm0zyl5f4x7aibw6vv-just-1.39.0" + } + } + }, + "k9s@0.32.7": { + "last_modified": "2025-02-07T11:26:36Z", + "resolved": "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d#k9s", + "source": "devbox-search", + "version": "0.32.7", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/dmcaki17jwvl5aq739xggmrs1clbi7qb-k9s-0.32.7", + "default": true + } + ], + "store_path": "/nix/store/dmcaki17jwvl5aq739xggmrs1clbi7qb-k9s-0.32.7" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/395g1bn9zajq8fsy8aa5973rwb7npip7-k9s-0.32.7", + "default": true + } + ], + "store_path": "/nix/store/395g1bn9zajq8fsy8aa5973rwb7npip7-k9s-0.32.7" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/6dgy1bnjblsq5fyrs8rvqbzhk5c4zgfm-k9s-0.32.7", + "default": true + } + ], + "store_path": "/nix/store/6dgy1bnjblsq5fyrs8rvqbzhk5c4zgfm-k9s-0.32.7" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/g9kqq0fi8y9gmzmvskr5z2wp6fw2xpvm-k9s-0.32.7", + "default": true + } + ], + "store_path": "/nix/store/g9kqq0fi8y9gmzmvskr5z2wp6fw2xpvm-k9s-0.32.7" + } + } + }, + "kind@0.26.0": { + "last_modified": "2025-02-07T11:26:36Z", + "resolved": "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d#kind", + "source": "devbox-search", + "version": "0.26.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/nfg8wv5jycm6bfzkwr4igwb0byhnhrr1-kind-0.26.0", + "default": true + } + ], + "store_path": "/nix/store/nfg8wv5jycm6bfzkwr4igwb0byhnhrr1-kind-0.26.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/qz66d0bs6f7q96k0ryzb1jgfdg06w3ib-kind-0.26.0", + "default": true + } + ], + "store_path": "/nix/store/qz66d0bs6f7q96k0ryzb1jgfdg06w3ib-kind-0.26.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/km5n2c910bv3js6ln19y4fydwfq04w0a-kind-0.26.0", + "default": true + } + ], + "store_path": "/nix/store/km5n2c910bv3js6ln19y4fydwfq04w0a-kind-0.26.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/6fbf8jslw3a81wcnram5w9dwhwk452m1-kind-0.26.0", + "default": true + } + ], + "store_path": "/nix/store/6fbf8jslw3a81wcnram5w9dwhwk452m1-kind-0.26.0" + } + } + }, + "kubectl@1.32.1": { + "last_modified": "2025-02-07T11:26:36Z", + "resolved": "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d#kubectl", + "source": "devbox-search", + "version": "1.32.1", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/bxnmjl64ys4blg5gmd7v6i93j627a37z-kubectl-1.32.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/0fp6a3jphb7l2qymdhyc8zfci49dwwq8-kubectl-1.32.1-man", + "default": true + }, + { + "name": "convert", + "path": "/nix/store/jjjx71bfqir3ra9m4ja8sr0y6r27j1di-kubectl-1.32.1-convert" + } + ], + "store_path": "/nix/store/bxnmjl64ys4blg5gmd7v6i93j627a37z-kubectl-1.32.1" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/965671cha74xnwimnp0mp3810z981fg3-kubectl-1.32.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/h5phzzl23d2n2rck2g3p8gi1n9rpw39z-kubectl-1.32.1-man", + "default": true + }, + { + "name": "convert", + "path": "/nix/store/47y2qv2v0yjcbdl8p4ir1l35n50vcgk6-kubectl-1.32.1-convert" + } + ], + "store_path": "/nix/store/965671cha74xnwimnp0mp3810z981fg3-kubectl-1.32.1" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/amx4pha2xrlbjgl1cgsm2aw6889nlc58-kubectl-1.32.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/6ic0ah864m9ybaavzpn4549bkqjgs63m-kubectl-1.32.1-man", + "default": true + }, + { + "name": "convert", + "path": "/nix/store/xvaxw41bzksd38lqnfm7r8w34yk2wcgs-kubectl-1.32.1-convert" + } + ], + "store_path": "/nix/store/amx4pha2xrlbjgl1cgsm2aw6889nlc58-kubectl-1.32.1" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/zph6v36yrnyixil25mnysr82i933kx6i-kubectl-1.32.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/q843mipr11308vvvp7465yc7y4k5mg06-kubectl-1.32.1-man", + "default": true + }, + { + "name": "convert", + "path": "/nix/store/y3l02a82n3zzzdipccb1xpdw3yz68cb0-kubectl-1.32.1-convert" + } + ], + "store_path": "/nix/store/zph6v36yrnyixil25mnysr82i933kx6i-kubectl-1.32.1" + } + } + }, + "kubefwd@1.22.5": { + "last_modified": "2025-03-11T17:52:14Z", + "resolved": "github:NixOS/nixpkgs/0d534853a55b5d02a4ababa1d71921ce8f0aee4c#kubefwd", + "source": "devbox-search", + "version": "1.22.5", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/1i3nbbcalbdga3kj7yipri98vfgxwzm3-kubefwd-1.22.5", + "default": true + } + ], + "store_path": "/nix/store/1i3nbbcalbdga3kj7yipri98vfgxwzm3-kubefwd-1.22.5" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/ryzlc6zv4yx96jxncj3x5yhd4ik5h9fa-kubefwd-1.22.5", + "default": true + } + ], + "store_path": "/nix/store/ryzlc6zv4yx96jxncj3x5yhd4ik5h9fa-kubefwd-1.22.5" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/lzr0x4nnj8svy0dnr85w7n2ilacvm22a-kubefwd-1.22.5", + "default": true + } + ], + "store_path": "/nix/store/lzr0x4nnj8svy0dnr85w7n2ilacvm22a-kubefwd-1.22.5" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/5q2j35875gkzwwwl0h8nc2kiw4w9p2z0-kubefwd-1.22.5", + "default": true + } + ], + "store_path": "/nix/store/5q2j35875gkzwwwl0h8nc2kiw4w9p2z0-kubefwd-1.22.5" + } + } + }, + "kubernetes-helm@3.17.0": { + "last_modified": "2025-02-07T11:26:36Z", + "resolved": "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d#kubernetes-helm", + "source": "devbox-search", + "version": "3.17.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/mqm6vkrs31c8rx8phivl274ja5iq6h47-kubernetes-helm-3.17.0", + "default": true + } + ], + "store_path": "/nix/store/mqm6vkrs31c8rx8phivl274ja5iq6h47-kubernetes-helm-3.17.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/sfjsrsx7wavzdq3pxx66np9db265chvg-kubernetes-helm-3.17.0", + "default": true + } + ], + "store_path": "/nix/store/sfjsrsx7wavzdq3pxx66np9db265chvg-kubernetes-helm-3.17.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/539izwrsfhkbs0j8llrfkg2m6kikc9jk-kubernetes-helm-3.17.0", + "default": true + } + ], + "store_path": "/nix/store/539izwrsfhkbs0j8llrfkg2m6kikc9jk-kubernetes-helm-3.17.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/lph6vddfs1x2dgb5bkkv0mhjkph220is-kubernetes-helm-3.17.0", + "default": true + } + ], + "store_path": "/nix/store/lph6vddfs1x2dgb5bkkv0mhjkph220is-kubernetes-helm-3.17.0" + } + } + }, + "nodePackages.cdk8s-cli@2.198.334": { + "last_modified": "2025-03-11T17:52:14Z", + "resolved": "github:NixOS/nixpkgs/0d534853a55b5d02a4ababa1d71921ce8f0aee4c#nodePackages.cdk8s-cli", + "source": "devbox-search", + "version": "2.198.334", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/9zq08li76b0m3zw5d6kvyn9r9gb9i5cq-cdk8s-cli-2.198.334", + "default": true + } + ], + "store_path": "/nix/store/9zq08li76b0m3zw5d6kvyn9r9gb9i5cq-cdk8s-cli-2.198.334" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/bb5nai825hmhmmgmq1mk0n78hhgq1lbn-cdk8s-cli-2.198.334", + "default": true + } + ], + "store_path": "/nix/store/bb5nai825hmhmmgmq1mk0n78hhgq1lbn-cdk8s-cli-2.198.334" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/n9r87p6ckm1a4k31c35w5kd68yrxsb69-cdk8s-cli-2.198.334", + "default": true + } + ], + "store_path": "/nix/store/n9r87p6ckm1a4k31c35w5kd68yrxsb69-cdk8s-cli-2.198.334" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/0rn56230vhbv5fhx98711lpcwbxdv4q7-cdk8s-cli-2.198.334", + "default": true + } + ], + "store_path": "/nix/store/0rn56230vhbv5fhx98711lpcwbxdv4q7-cdk8s-cli-2.198.334" + } + } + }, + "shellcheck@0.10.0": { + "last_modified": "2025-03-11T17:52:14Z", + "resolved": "github:NixOS/nixpkgs/0d534853a55b5d02a4ababa1d71921ce8f0aee4c#shellcheck", + "source": "devbox-search", + "version": "0.10.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/325gxaqj2jf8is7bl9l76xrg4lshm72f-shellcheck-0.10.0-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/g62azyf0p9xj0d9j90dr7yhasbdnm7dk-shellcheck-0.10.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/rjln13sbb4g1i6izlymwdj0ns5mlkdk9-shellcheck-0.10.0-doc", + "default": true + }, + { + "name": "out", + "path": "/nix/store/ch4cq7jdr08fm5anfwj9jr559v8lq5i2-shellcheck-0.10.0" + } + ], + "store_path": "/nix/store/325gxaqj2jf8is7bl9l76xrg4lshm72f-shellcheck-0.10.0-bin" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/yb6v9wm9d42xdgjw7s2vn4iv0p0qvd05-shellcheck-0.10.0-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/q7fiw7hvhmnirv6c925sscwc4984rwf3-shellcheck-0.10.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/hk2vyk916nadycvfwa1m1y70lrh218jl-shellcheck-0.10.0-doc", + "default": true + }, + { + "name": "out", + "path": "/nix/store/7jm454lj1y0cy90a843wj82ywr5fxmg5-shellcheck-0.10.0" + } + ], + "store_path": "/nix/store/yb6v9wm9d42xdgjw7s2vn4iv0p0qvd05-shellcheck-0.10.0-bin" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/k17i8v7crc5hv7lzi490hjg40rc1xmvz-shellcheck-0.10.0-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/cim6ifqys4d38wqx71gkiw9s7wm3m0vh-shellcheck-0.10.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/hc649lnlbbwzy50kg81ib3h0bwadv70w-shellcheck-0.10.0-doc", + "default": true + }, + { + "name": "out", + "path": "/nix/store/vxih59dn7w40cny8v5r28ca5g8kmahvl-shellcheck-0.10.0" + } + ], + "store_path": "/nix/store/k17i8v7crc5hv7lzi490hjg40rc1xmvz-shellcheck-0.10.0-bin" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "bin", + "path": "/nix/store/zpsn5p7h5bkp6x8dwvlipgrqp9y57q7r-shellcheck-0.10.0-bin", + "default": true + }, + { + "name": "man", + "path": "/nix/store/div4481mhzjf4278aqv6bv3zcd0ms9q7-shellcheck-0.10.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/nncljxvssag7w1krwbsl0yf8csvdy3y5-shellcheck-0.10.0-doc", + "default": true + }, + { + "name": "out", + "path": "/nix/store/7rs2gic77z9hjp5ssxf4vlwfqxq4qww6-shellcheck-0.10.0" + } + ], + "store_path": "/nix/store/zpsn5p7h5bkp6x8dwvlipgrqp9y57q7r-shellcheck-0.10.0-bin" + } + } + }, + "typos@latest": { + "last_modified": "2025-03-16T16:17:41Z", + "resolved": "github:NixOS/nixpkgs/8f76cf16b17c51ae0cc8e55488069593f6dab645#typos", + "source": "devbox-search", + "version": "1.30.2", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/k2p0xxlcfqrkwzq56fhfks2shpdr9292-typos-1.30.2", + "default": true + } + ], + "store_path": "/nix/store/k2p0xxlcfqrkwzq56fhfks2shpdr9292-typos-1.30.2" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/zhcbx9zw65mv218mw6vkavvq2zwmx5y3-typos-1.30.2", + "default": true + } + ], + "store_path": "/nix/store/zhcbx9zw65mv218mw6vkavvq2zwmx5y3-typos-1.30.2" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/v00yv8rqhycjf698fid8523ms8a4i8vi-typos-1.30.2", + "default": true + } + ], + "store_path": "/nix/store/v00yv8rqhycjf698fid8523ms8a4i8vi-typos-1.30.2" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/50rpb6v4f5bnwzvhjk8pb0azda9yfyz8-typos-1.30.2", + "default": true + } + ], + "store_path": "/nix/store/50rpb6v4f5bnwzvhjk8pb0azda9yfyz8-typos-1.30.2" + } + } + } + } +} diff --git a/pods/environment/Justfile b/pods/environment/Justfile new file mode 100644 index 000000000..a66a708c5 --- /dev/null +++ b/pods/environment/Justfile @@ -0,0 +1,28 @@ +# Print all the commands +default: + @just --list + +# Create a local Kind environment +kind-up: + kind create cluster --name pods --config kind.yml + kind load docker-image job-distributor:local --name pods + +# Destroy a local Kind environment +kind-down: + kind delete cluster --name pods + +# Switch K8s context to local Kind environment +ctx: + kubectl config use-context kind-pods + +# Start environment example +start: + go run environment.go + +# Stop environment example +stop: + kubectl delete ns pods + +# Forwards all services ports using Kubefwd +forward namespace: + sudo kubefwd -n {{namespace}} svc diff --git a/pods/environment/README.md b/pods/environment/README.md new file mode 100644 index 000000000..870ef25a8 --- /dev/null +++ b/pods/environment/README.md @@ -0,0 +1,6 @@ +# Real-world API Usage Example + +```bash +just kind-up && just ctx + +``` \ No newline at end of file diff --git a/pods/environment/environment.go b/pods/environment/environment.go new file mode 100644 index 000000000..2a0e75f73 --- /dev/null +++ b/pods/environment/environment.go @@ -0,0 +1,147 @@ +package main + +import ( + "fmt" + "strconv" + "time" + + p "github.com/smartcontractkit/pods" + + "github.com/smartcontractkit/chainlink-testing-framework/framework/clclient" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components/clnode" +) + +func main() { + if err := NewEnvironment(); err != nil { + panic(err) + } + + time.Sleep(5 * time.Minute) + + c, err := clclient.New([]*clnode.Output{ + {Node: &clnode.NodeOut{APIAuthUser: clnode.DefaultAPIUser, APIAuthPassword: clnode.DefaultAPIPassword, ExternalURL: "http://localhost:6688"}}, + {Node: &clnode.NodeOut{APIAuthUser: clnode.DefaultAPIUser, APIAuthPassword: clnode.DefaultAPIPassword, ExternalURL: "http://localhost:6689"}}, + }) + if err != nil { + panic(err) + } + for _, n := range c { + _, resp, err := n.GetForwarders() + if err != nil { + panic(err) + } + fmt.Println(resp) + } +} + +func NewEnvironment() error { + ns := "pods" + chainlinkImg := "public.ecr.aws/chainlink/chainlink:v2.17.0" + pgImg := "postgres:15" + + cfg := &p.Config{ + Namespace: p.S(ns), + Pods: []*p.PodConfig{ + { + Name: p.S("anvil"), + Labels: map[string]string{"chain.link/component": "anvil"}, + Image: p.S("ghcr.io/foundry-rs/foundry:stable"), + Ports: []string{"8545:8545"}, + Command: p.S("anvil --host=0.0.0.0 -b=1 --mixed-mining"), + }, + }, + } + + k8sDeployment := p.New(cfg) + err := k8sDeployment.CreateNamespace(ns) + if err != nil { + return err + } + err = k8sDeployment.Apply() + if err != nil { + return err + } + k8sDeployment.ResetPodsConfig() + + for i := 0; i < 2; i++ { + cfg.Pods = append(cfg.Pods, &p.PodConfig{ + Name: p.S(fmt.Sprintf("node-%d", i)), + Labels: map[string]string{"chain.link/component": "cl", "instance": strconv.Itoa(i)}, + ContainerSecurityContext: p.CLUserContainerSecurityCtx(), + Image: p.S(chainlinkImg), + Ports: []string{"6688:6688", "6690:6690"}, + ConfigMap: map[string]*string{ + "config.toml": p.S(` + [WebServer] + AllowOrigins = "*" + HTTPWriteTimeout = "3m0s" + HTTPPort = 6688 + SecureCookies = false + SessionTimeout = "999h0m0s" + [WebServer.TLS] + HTTPSPort = 0 + [Feature] + LogPoller = true + [OCR2] + Enabled = true + DatabaseTimeout = '1s' + [P2P.V2] + Enabled = true + ListenAddresses = ['0.0.0.0:5001'] + [[EVM]] + ChainID = "31337" + AutoCreateKey = true + FinalityDepth = 1 + MinContractPayment = "0" + [[EVM.Nodes]] + Name = "Anvil" + WSURL = "ws://anvil-svc:8545" + HTTPURL = "http://anvil-svc:8545" + `), + "apicredentials": p.S(fmt.Sprintf(`%s + %s`, clnode.DefaultAPIUser, clnode.DefaultAPIPassword)), + }, + ConfigMapMountPath: map[string]*string{ + "config.toml": p.S("/config.toml"), + "apicredentials": p.S("/apicredentials"), + }, + Secrets: map[string]*string{"secrets.toml": p.S(fmt.Sprintf(` + [Database] + URL = 'postgresql://chainlink:thispasswordislongenough@postgres-%d-svc:5432/chainlink?sslmode=disable' + [Password] + Keystore = 'thispasswordislongenough' + `, i))}, + SecretsMountPath: map[string]*string{"secrets.toml": p.S("/secrets.toml")}, + Command: p.S("chainlink -c /config.toml -s /secrets.toml node start -d -a /apicredentials"), + }) + cfg.Pods = append(cfg.Pods, p.PostgreSQL(fmt.Sprintf("postgres-%d", i), pgImg, p.ResourcesSmall(), p.ResourcesSmall(), p.S("10Gi"))) + } + + err = k8sDeployment.Apply() + if err != nil { + return err + } + + return p.NewForwarder(k8sDeployment.API). + Forward([]p.PortForwardConfig{ + { + ServiceName: "anvil-svc", + LocalPort: 8545, + ContainerPort: 8545, + Namespace: ns, + }, + { + ServiceName: "node-0-svc", + LocalPort: 6688, + ContainerPort: 6688, + Namespace: ns, + }, + { + ServiceName: "node-1-svc", + LocalPort: 6689, + ContainerPort: 6688, + Namespace: ns, + }, + }, + ) +} diff --git a/pods/environment/go.mod b/pods/environment/go.mod new file mode 100644 index 000000000..685bfc1ca --- /dev/null +++ b/pods/environment/go.mod @@ -0,0 +1,158 @@ +module github.com/smartcontractkit/pods/example-env + +go 1.24.3 + +replace github.com/smartcontractkit/pods => ../ + +require ( + github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 + github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 +) + +require ( + dario.cat/mergo v1.0.1 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/avast/retry-go/v4 v4.6.1 // indirect + github.com/aws/aws-sdk-go-v2 v1.31.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.27.39 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.37 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.23.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 // indirect + github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect + github.com/aws/jsii-runtime-go v1.108.0 // indirect + github.com/aws/smithy-go v1.21.0 // indirect + github.com/bits-and-blooms/bitset v1.17.0 // indirect + github.com/block-vision/sui-go-sdk v1.0.6 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/consensys/bavard v0.1.22 // indirect + github.com/consensys/gnark-crypto v0.14.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v1.0.0-rc.1 // indirect + github.com/cpuguy83/dockercfg v0.3.2 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect + github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/distribution/reference v0.6.0 // indirect + github.com/docker/docker v28.0.4+incompatible // indirect + github.com/docker/go-connections v0.5.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/ebitengine/purego v0.8.2 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-ethereum v1.15.0 // indirect + github.com/ethereum/go-verkle v0.2.2 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.6 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.22.1 // indirect + github.com/go-resty/resty/v2 v2.15.3 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.9 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/holiman/uint256 v1.3.2 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.11 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.10 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect + github.com/moby/sys/user v0.3.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect + github.com/moby/term v0.5.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/shirou/gopsutil/v4 v4.25.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/testify v1.11.1 // indirect + github.com/supranational/blst v0.3.13 // indirect + github.com/testcontainers/testcontainers-go v0.37.0 // indirect + github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/yuin/goldmark v1.4.13 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.opentelemetry.io/proto/otlp v1.8.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.35.0 // indirect + google.golang.org/protobuf v1.36.8 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/guregu/null.v4 v4.0.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) diff --git a/pods/environment/go.sum b/pods/environment/go.sum new file mode 100644 index 000000000..9cd1abadc --- /dev/null +++ b/pods/environment/go.sum @@ -0,0 +1,446 @@ +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= +github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= +github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= +github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= +github.com/aws/aws-sdk-go-v2/config v1.27.39 h1:FCylu78eTGzW1ynHcongXK9YHtoXD5AiiUqq3YfJYjU= +github.com/aws/aws-sdk-go-v2/config v1.27.39/go.mod h1:wczj2hbyskP4LjMKBEZwPRO1shXY+GsQleab+ZXT2ik= +github.com/aws/aws-sdk-go-v2/credentials v1.17.37 h1:G2aOH01yW8X373JK419THj5QVqu9vKEwxSEsGxihoW0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.37/go.mod h1:0ecCjlb7htYCptRD45lXJ6aJDQac6D2NlKGpZqyTG6A= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.3 h1:W2M3kQSuN1+FXgV2wMv1JMWPxw/37wBN87QHYDuTV0Y= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.3/go.mod h1:WyLS5qwXHtjKAONYZq/4ewdd+hcVsa3LBu77Ow5uj3k= +github.com/aws/aws-sdk-go-v2/service/sso v1.23.3 h1:rs4JCczF805+FDv2tRhZ1NU0RB2H6ryAvsWPanAr72Y= +github.com/aws/aws-sdk-go-v2/service/sso v1.23.3/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 h1:S7EPdMVZod8BGKQQPTBK+FcX9g7bKR7c4+HxWqHP7Vg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= +github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8= +github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= +github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= +github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/block-vision/sui-go-sdk v1.0.6 h1:FysCc4TJC8v4BEBbCjJPDR4iR5eKqJT1dxGwsT67etg= +github.com/block-vision/sui-go-sdk v1.0.6/go.mod h1:FyK1vGE8lWm9QA1fdQpf1agfXQSMbPT8AV1BICgx6d8= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A= +github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E= +github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E= +github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= +github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= +github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= +github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= +github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/docker v28.0.4+incompatible h1:JNNkBctYKurkw6FrHfKqY0nKIDf5nrbxjVBtS+cdcok= +github.com/docker/docker v28.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= +github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv09/1ME4= +github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= +github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= +github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= +github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= +github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= +github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= +github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA= +github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8= +github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= +github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= +github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= +github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= +github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 h1:i8+fR76yn0yxAFAkdhy7BgIB2VJgwec9BqnSPp6fZ7M= +github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24/go.mod h1:gdW2dlrvHcTawMCtAIXQYZcZ9Ggx16L55kA7wONvzJ4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= +github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= +github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= +go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= +google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/guregu/null.v4 v4.0.0 h1:1Wm3S1WEA2I26Kq+6vcW+w0gcDo44YKYD7YIEJNHDjg= +gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pods/environment/kind.yml b/pods/environment/kind.yml new file mode 100644 index 000000000..b14515232 --- /dev/null +++ b/pods/environment/kind.yml @@ -0,0 +1,9 @@ +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +nodes: + - role: control-plane + image: kindest/node:v1.32.0 + - role: worker + image: kindest/node:v1.32.0 + - role: worker + image: kindest/node:v1.32.0 \ No newline at end of file diff --git a/pods/forward.go b/pods/forward.go new file mode 100644 index 000000000..02731f902 --- /dev/null +++ b/pods/forward.go @@ -0,0 +1,325 @@ +package pods + +import ( + "context" + "fmt" + "net/http" + "sync" + "time" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/portforward" + "k8s.io/client-go/transport/spdy" +) + +const ( + RetryDelay = 1 * time.Second +) + +// PortForwardConfig represents a single port forward configuration +type PortForwardConfig struct { + ServiceName string + LocalPort int + ContainerPort int + Namespace string +} + +func (c PortForwardConfig) validate() error { + if c.Namespace == "" { + return fmt.Errorf("empty K8s namespace") + } + if c.LocalPort == 0 { + return fmt.Errorf("empty local port") + } + if c.ContainerPort == 0 { + return fmt.Errorf("empty container port") + } + if c.ServiceName == "" { + return fmt.Errorf("empty service name") + } + return nil +} + +// PortForwardManager manages multiple port forwards +type PortForwardManager struct { + cs *kubernetes.Clientset + config *rest.Config + // key in format serviceName:localPort + forwards map[string]*forwardInfo + mu sync.Mutex +} + +// forwardInfo holds information about a running port forward +type forwardInfo struct { + stopChan chan struct{} + cleanup func() +} + +// NewForwarder creates a new manager for multiple port forwards +func NewForwarder(api *API) *PortForwardManager { + return &PortForwardManager{ + cs: api.ClientSet, + config: api.RESTConfig, + forwards: make(map[string]*forwardInfo), + } +} + +// startForwardService starts forwarding a single service port with retry logic +func (m *PortForwardManager) startForwardService(cfg PortForwardConfig) { + key := fmt.Sprintf("%s:%d", cfg.ServiceName, cfg.LocalPort) + stopChan := make(chan struct{}) + + m.mu.Lock() + m.forwards[key] = &forwardInfo{ + stopChan: stopChan, + cleanup: func() { close(stopChan) }, + } + m.mu.Unlock() + + go m.forwardAndRetry(cfg, stopChan) +} + +// forwardAndRetry continuously attempts to forward the port with retries +func (m *PortForwardManager) forwardAndRetry(cfg PortForwardConfig, stopChan <-chan struct{}) { + key := fmt.Sprintf("%s:%d", cfg.ServiceName, cfg.LocalPort) + consecutiveFailures := 0 + + for { + select { + case <-stopChan: + L.Info().Msgf("Stopped retry loop for %s", key) + return + default: + L.Info(). + Str("ServiceName", cfg.ServiceName). + Int("LocalPort", cfg.LocalPort). + Msg("Starting forwarder") + err := m.attemptForward(cfg) + + if err != nil { + // Connection failed or broke - retry + consecutiveFailures++ + L.Error(). + Err(err). + Str("Key", key). + Int("Attempt", consecutiveFailures). + Msg("Port forward failed") + L.Info().Msgf("Retrying %s in %v", key, RetryDelay) + select { + case <-stopChan: + return + case <-time.After(RetryDelay): + continue + } + } else { + // attemptForward returned nil = clean stop requested + L.Info().Msgf("Port forward %s stopped cleanly", key) + return + } + } + } +} + +// attemptForward establishes and monitors a single port forward connection +func (m *PortForwardManager) attemptForward(cfg PortForwardConfig) error { + namespace := cfg.Namespace + if namespace == "" { + namespace = "default" + } + + // Get target pod for forwarding + targetPod, targetPort, err := m.getTargetPodAndPort(cfg, namespace) + if err != nil { + return fmt.Errorf("failed to get target: %w", err) + } + + l := L.With(). + Str("ServiceName", cfg.ServiceName). + Int("LocalPort", cfg.LocalPort).Logger() + + l.Info().Msgf("Forwarding service %s:%d -> pod %s:%d -> localhost:%d", + cfg.ServiceName, cfg.ContainerPort, targetPod.Name, targetPort, cfg.LocalPort) + + // run port forward + stopChan := make(chan struct{}) + readyChan := make(chan struct{}) + errChan := make(chan error, 1) + + restClient := m.cs.CoreV1().RESTClient() + url := restClient.Post(). + Resource("pods"). + Namespace(namespace). + Name(targetPod.Name). + SubResource("portforward"). + URL() + + transport, upgrader, err := spdy.RoundTripperFor(m.config) + if err != nil { + return fmt.Errorf("failed to create SPDY transport: %w", err) + } + + dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, "POST", url) + ports := []string{fmt.Sprintf("%d:%d", cfg.LocalPort, targetPort)} + + pf, err := portforward.New(dialer, ports, stopChan, readyChan, nil, nil) + if err != nil { + return fmt.Errorf("failed to create port forwarder: %w", err) + } + + go func() { + errChan <- pf.ForwardPorts() + }() + + // monitor the connection + select { + case <-readyChan: + l.Info(). + Msg("🟢 established connection for %s:%d") + // error is received when someone is trying to call the local port + // and connection is broken, it is not proactively checked + select { + case err := <-errChan: + // Connection terminated (error or network issue) + close(stopChan) + if err != nil { + l.Warn(). + Err(err).Msg("🟡 lost connection") + } + return err + case <-stopChan: + l.Info().Msg("🔴 Stop method was called, stopping forwarder") + return nil + } + + case err := <-errChan: + close(stopChan) + l.Error(). + Err(err).Msg("🔴 Port forward FAILED to establish for %s:%d") + return fmt.Errorf("failed to establish: %w", err) + + case <-time.After(10 * time.Second): + close(stopChan) + l.Error().Msg("⏱️Port forward timeout") + return fmt.Errorf("timeout establishing connection") + } +} + +// getTargetPodAndPort finds the target pod and resolves the port +func (m *PortForwardManager) getTargetPodAndPort(cfg PortForwardConfig, namespace string) (*corev1.Pod, int, error) { + service, err := m.cs.CoreV1().Services(namespace).Get(context.TODO(), cfg.ServiceName, metav1.GetOptions{}) + if err != nil { + return nil, 0, fmt.Errorf("failed to get service: %w", err) + } + + if len(service.Spec.Selector) == 0 { + return nil, 0, fmt.Errorf("service %s has no selector", cfg.ServiceName) + } + pods, err := m.cs.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{ + LabelSelector: labels.FormatLabels(service.Spec.Selector), + }) + if err != nil { + return nil, 0, fmt.Errorf("failed to find pods: %w", err) + } + + if len(pods.Items) == 0 { + return nil, 0, fmt.Errorf("no pods found for service %s", cfg.ServiceName) + } + + // Find running pod + var targetPod *corev1.Pod + for i := range pods.Items { + if pods.Items[i].Status.Phase == corev1.PodRunning { + targetPod = &pods.Items[i] + break + } + } + if targetPod == nil { + return nil, 0, fmt.Errorf("no running pods found for service %s", cfg.ServiceName) + } + targetPort, err := m.resolveServicePort(service, cfg.ContainerPort, targetPod) + if err != nil { + return nil, 0, fmt.Errorf("failed to resolve port: %w", err) + } + return targetPod, targetPort, nil +} + +// Forward starts multiple port forwards concurrently +func (m *PortForwardManager) Forward(configs []PortForwardConfig) error { + for _, cfg := range configs { + if err := cfg.validate(); err != nil { + return err + } + m.startForwardService(cfg) + } + return nil +} + +// StopAll stops all active port forwards +func (m *PortForwardManager) StopAll() { + m.mu.Lock() + defer m.mu.Unlock() + + for key, info := range m.forwards { + info.cleanup() + delete(m.forwards, key) + L.Info().Msgf("Stopped port forwarding: %s", key) + } +} + +// Stop stops a specific port forward +func (m *PortForwardManager) Stop(serviceName string, localPort int) { + key := fmt.Sprintf("%s:%d", serviceName, localPort) + + m.mu.Lock() + defer m.mu.Unlock() + + if info, exists := m.forwards[key]; exists { + info.cleanup() + delete(m.forwards, key) + L.Info().Msgf("Stopped port forward: %s", key) + } +} + +// List returns all active port forwards +func (m *PortForwardManager) List() []string { + m.mu.Lock() + defer m.mu.Unlock() + + var result []string + for key := range m.forwards { + result = append(result, key) + } + return result +} + +// resolveServicePort resolves service port to container port +func (m *PortForwardManager) resolveServicePort(service *corev1.Service, servicePort int, pod *corev1.Pod) (int, error) { + for _, port := range service.Spec.Ports { + if int(port.Port) == servicePort { + if port.TargetPort.IntValue() != 0 { + return port.TargetPort.IntValue(), nil + } + if port.TargetPort.StrVal != "" { + return m.findNamedPort(pod, port.TargetPort.StrVal) + } + return servicePort, nil + } + } + return 0, fmt.Errorf("service port %d not found", servicePort) +} + +// findNamedPort finds a named port in a pod's containers +func (m *PortForwardManager) findNamedPort(pod *corev1.Pod, portName string) (int, error) { + for _, container := range pod.Spec.Containers { + for _, port := range container.Ports { + if port.Name == portName { + return int(port.ContainerPort), nil + } + } + } + return 0, fmt.Errorf("named port %s not found in pod %s", portName, pod.Name) +} diff --git a/pods/go.mod b/pods/go.mod new file mode 100644 index 000000000..6f22356c7 --- /dev/null +++ b/pods/go.mod @@ -0,0 +1,80 @@ +module github.com/smartcontractkit/pods + +go 1.24.0 + +require ( + github.com/aws/constructs-go/constructs/v10 v10.4.2 + github.com/aws/jsii-runtime-go v1.108.0 + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 + github.com/gkampitakis/go-snaps v0.5.11 + github.com/rs/zerolog v1.33.0 + github.com/stretchr/testify v1.10.0 + k8s.io/api v0.32.3 + k8s.io/apimachinery v0.32.3 + k8s.io/client-go v0.32.3 +) + +require ( + github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/gkampitakis/ciinfo v0.3.1 // indirect + github.com/gkampitakis/go-diff v1.3.2 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/goccy/go-yaml v1.15.13 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/maruel/natural v1.1.1 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/moby/spdystream v0.5.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tidwall/sjson v1.2.5 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/yuin/goldmark v1.4.13 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mod v0.23.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/term v0.29.0 // indirect + golang.org/x/text v0.22.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.30.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) diff --git a/pods/go.sum b/pods/go.sum new file mode 100644 index 000000000..8cd7dab43 --- /dev/null +++ b/pods/go.sum @@ -0,0 +1,218 @@ +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= +github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= +github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= +github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pods/imports/k8s/Affinity.go b/pods/imports/k8s/Affinity.go new file mode 100644 index 000000000..210023e96 --- /dev/null +++ b/pods/imports/k8s/Affinity.go @@ -0,0 +1,11 @@ +package k8s + +// Affinity is a group of affinity scheduling rules. +type Affinity struct { + // Describes node affinity scheduling rules for the pod. + NodeAffinity *NodeAffinity `field:"optional" json:"nodeAffinity" yaml:"nodeAffinity"` + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + PodAffinity *PodAffinity `field:"optional" json:"podAffinity" yaml:"podAffinity"` + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + PodAntiAffinity *PodAntiAffinity `field:"optional" json:"podAntiAffinity" yaml:"podAntiAffinity"` +} diff --git a/pods/imports/k8s/AggregationRule.go b/pods/imports/k8s/AggregationRule.go new file mode 100644 index 000000000..911a3e422 --- /dev/null +++ b/pods/imports/k8s/AggregationRule.go @@ -0,0 +1,9 @@ +package k8s + +// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole. +type AggregationRule struct { + // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. + // + // If any of the selectors match, then the ClusterRole's permissions will be added. + ClusterRoleSelectors *[]*LabelSelector `field:"optional" json:"clusterRoleSelectors" yaml:"clusterRoleSelectors"` +} diff --git a/pods/imports/k8s/ApiServiceSpec.go b/pods/imports/k8s/ApiServiceSpec.go new file mode 100644 index 000000000..8d0b5d451 --- /dev/null +++ b/pods/imports/k8s/ApiServiceSpec.go @@ -0,0 +1,33 @@ +package k8s + +// APIServiceSpec contains information for locating and communicating with a server. +// +// Only https is supported, though you are able to disable certificate verification. +type ApiServiceSpec struct { + // GroupPriorityMinimum is the priority this group should have at least. + // + // Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s + GroupPriorityMinimum *float64 `field:"required" json:"groupPriorityMinimum" yaml:"groupPriorityMinimum"` + // VersionPriority controls the ordering of this API version inside of its group. + // + // Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version), then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. + VersionPriority *float64 `field:"required" json:"versionPriority" yaml:"versionPriority"` + // CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. + // + // If unspecified, system trust roots on the apiserver are used. + CaBundle *string `field:"optional" json:"caBundle" yaml:"caBundle"` + // Group is the API group name this server hosts. + Group *string `field:"optional" json:"group" yaml:"group"` + // InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. + // + // This is strongly discouraged. You should use the CABundle instead. + InsecureSkipTlsVerify *bool `field:"optional" json:"insecureSkipTlsVerify" yaml:"insecureSkipTlsVerify"` + // Service is a reference to the service for this API server. + // + // It must communicate on port 443. If the Service is nil, that means the handling for the API groupversion is handled locally on this server. The call will simply delegate to the normal handler chain to be fulfilled. + Service *ServiceReference `field:"optional" json:"service" yaml:"service"` + // Version is the API version this server hosts. + // + // For example, "v1". + Version *string `field:"optional" json:"version" yaml:"version"` +} diff --git a/pods/imports/k8s/AppArmorProfile.go b/pods/imports/k8s/AppArmorProfile.go new file mode 100644 index 000000000..5050a6b91 --- /dev/null +++ b/pods/imports/k8s/AppArmorProfile.go @@ -0,0 +1,16 @@ +package k8s + +// AppArmorProfile defines a pod or container's AppArmor settings. +type AppArmorProfile struct { + // type indicates which kind of AppArmor profile will be applied. + // + // Valid options are: + // Localhost - a profile pre-loaded on the node. + // RuntimeDefault - the container runtime's default profile. + // Unconfined - no AppArmor enforcement. + Type *string `field:"required" json:"type" yaml:"type"` + // localhostProfile indicates a profile loaded on the node that should be used. + // + // The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is "Localhost". + LocalhostProfile *string `field:"optional" json:"localhostProfile" yaml:"localhostProfile"` +} diff --git a/pods/imports/k8s/ApplyConfigurationV1Alpha1.go b/pods/imports/k8s/ApplyConfigurationV1Alpha1.go new file mode 100644 index 000000000..6e7da9a4c --- /dev/null +++ b/pods/imports/k8s/ApplyConfigurationV1Alpha1.go @@ -0,0 +1,34 @@ +package k8s + +// ApplyConfiguration defines the desired configuration values of an object. +type ApplyConfigurationV1Alpha1 struct { + // expression will be evaluated by CEL to create an apply configuration. ref: https://github.com/google/cel-spec. + // + // Apply configurations are declared in CEL using object initialization. For example, this CEL expression returns an apply configuration to set a single field: + // + // Object{ + // spec: Object.spec{ + // serviceAccountName: "example" + // } + // } + // + // Apply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of values not included in the apply configuration. + // + // CEL expressions have access to the object types needed to create apply configurations: + // + // - 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers') + // + // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables: + // + // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + // For example, a variable named 'foo' can be accessed as 'variables.foo'. + // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // + // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. + // + // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required. + Expression *string `field:"optional" json:"expression" yaml:"expression"` +} diff --git a/pods/imports/k8s/AuditAnnotation.go b/pods/imports/k8s/AuditAnnotation.go new file mode 100644 index 000000000..2b80c4d1c --- /dev/null +++ b/pods/imports/k8s/AuditAnnotation.go @@ -0,0 +1,23 @@ +package k8s + +// AuditAnnotation describes how to produce an audit annotation for an API request. +type AuditAnnotation struct { + // key specifies the audit annotation key. + // + // The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. + // + // The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". + // + // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. + // + // Required. + Key *string `field:"required" json:"key" yaml:"key"` + // valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. + // + // The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. + // + // If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. + // + // Required. + ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` +} diff --git a/pods/imports/k8s/AuditAnnotationV1Beta1.go b/pods/imports/k8s/AuditAnnotationV1Beta1.go new file mode 100644 index 000000000..ae8921bc4 --- /dev/null +++ b/pods/imports/k8s/AuditAnnotationV1Beta1.go @@ -0,0 +1,23 @@ +package k8s + +// AuditAnnotation describes how to produce an audit annotation for an API request. +type AuditAnnotationV1Beta1 struct { + // key specifies the audit annotation key. + // + // The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. + // + // The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". + // + // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. + // + // Required. + Key *string `field:"required" json:"key" yaml:"key"` + // valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. + // + // The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. + // + // If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. + // + // Required. + ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` +} diff --git a/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go b/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go new file mode 100644 index 000000000..569783226 --- /dev/null +++ b/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling. +type AwsElasticBlockStoreVolumeSource struct { + // volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` + // fsType is the filesystem type of the volume that you want to mount. + // + // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // partition is the partition in the volume that you want to mount. + // + // If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + Partition *float64 `field:"optional" json:"partition" yaml:"partition"` + // readOnly value true will force the readOnly setting in VolumeMounts. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/AzureDiskVolumeSource.go b/pods/imports/k8s/AzureDiskVolumeSource.go new file mode 100644 index 000000000..6297151e0 --- /dev/null +++ b/pods/imports/k8s/AzureDiskVolumeSource.go @@ -0,0 +1,25 @@ +package k8s + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +type AzureDiskVolumeSource struct { + // diskName is the Name of the data disk in the blob storage. + DiskName *string `field:"required" json:"diskName" yaml:"diskName"` + // diskURI is the URI of data disk in the blob storage. + DiskUri *string `field:"required" json:"diskUri" yaml:"diskUri"` + // cachingMode is the Host Caching mode: None, Read Only, Read Write. + CachingMode *string `field:"optional" json:"cachingMode" yaml:"cachingMode"` + // fsType is Filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). + // + // defaults to shared. + Kind *string `field:"optional" json:"kind" yaml:"kind"` + // readOnly Defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/AzureFilePersistentVolumeSource.go b/pods/imports/k8s/AzureFilePersistentVolumeSource.go new file mode 100644 index 000000000..541f7df9d --- /dev/null +++ b/pods/imports/k8s/AzureFilePersistentVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFilePersistentVolumeSource struct { + // secretName is the name of secret that contains Azure Storage Account Name and Key. + SecretName *string `field:"required" json:"secretName" yaml:"secretName"` + // shareName is the azure Share Name. + ShareName *string `field:"required" json:"shareName" yaml:"shareName"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod. + SecretNamespace *string `field:"optional" json:"secretNamespace" yaml:"secretNamespace"` +} diff --git a/pods/imports/k8s/AzureFileVolumeSource.go b/pods/imports/k8s/AzureFileVolumeSource.go new file mode 100644 index 000000000..5e058cd36 --- /dev/null +++ b/pods/imports/k8s/AzureFileVolumeSource.go @@ -0,0 +1,13 @@ +package k8s + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFileVolumeSource struct { + // secretName is the name of secret that contains Azure Storage Account Name and Key. + SecretName *string `field:"required" json:"secretName" yaml:"secretName"` + // shareName is the azure share Name. + ShareName *string `field:"required" json:"shareName" yaml:"shareName"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/BasicDeviceV1Alpha3.go b/pods/imports/k8s/BasicDeviceV1Alpha3.go new file mode 100644 index 000000000..13be3db8a --- /dev/null +++ b/pods/imports/k8s/BasicDeviceV1Alpha3.go @@ -0,0 +1,17 @@ +package k8s + +// BasicDevice defines one device instance. +type BasicDeviceV1Alpha3 struct { + // Attributes defines the set of attributes for this device. + // + // The name of each attribute must be unique in that set. + // + // The maximum number of attributes and capacities combined is 32. + Attributes *map[string]*DeviceAttributeV1Alpha3 `field:"optional" json:"attributes" yaml:"attributes"` + // Capacity defines the set of capacities for this device. + // + // The name of each capacity must be unique in that set. + // + // The maximum number of attributes and capacities combined is 32. + Capacity *map[string]Quantity `field:"optional" json:"capacity" yaml:"capacity"` +} diff --git a/pods/imports/k8s/BasicDeviceV1Beta1.go b/pods/imports/k8s/BasicDeviceV1Beta1.go new file mode 100644 index 000000000..d8f079e31 --- /dev/null +++ b/pods/imports/k8s/BasicDeviceV1Beta1.go @@ -0,0 +1,17 @@ +package k8s + +// BasicDevice defines one device instance. +type BasicDeviceV1Beta1 struct { + // Attributes defines the set of attributes for this device. + // + // The name of each attribute must be unique in that set. + // + // The maximum number of attributes and capacities combined is 32. + Attributes *map[string]*DeviceAttributeV1Beta1 `field:"optional" json:"attributes" yaml:"attributes"` + // Capacity defines the set of capacities for this device. + // + // The name of each capacity must be unique in that set. + // + // The maximum number of attributes and capacities combined is 32. + Capacity *map[string]*DeviceCapacityV1Beta1 `field:"optional" json:"capacity" yaml:"capacity"` +} diff --git a/pods/imports/k8s/BoundObjectReference.go b/pods/imports/k8s/BoundObjectReference.go new file mode 100644 index 000000000..8d09a183d --- /dev/null +++ b/pods/imports/k8s/BoundObjectReference.go @@ -0,0 +1,15 @@ +package k8s + +// BoundObjectReference is a reference to an object that a token is bound to. +type BoundObjectReference struct { + // API version of the referent. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // Kind of the referent. + // + // Valid kinds are 'Pod' and 'Secret'. + Kind *string `field:"optional" json:"kind" yaml:"kind"` + // Name of the referent. + Name *string `field:"optional" json:"name" yaml:"name"` + // UID of the referent. + Uid *string `field:"optional" json:"uid" yaml:"uid"` +} diff --git a/pods/imports/k8s/Capabilities.go b/pods/imports/k8s/Capabilities.go new file mode 100644 index 000000000..96534f5c9 --- /dev/null +++ b/pods/imports/k8s/Capabilities.go @@ -0,0 +1,9 @@ +package k8s + +// Adds and removes POSIX capabilities from running containers. +type Capabilities struct { + // Added capabilities. + Add *[]*string `field:"optional" json:"add" yaml:"add"` + // Removed capabilities. + Drop *[]*string `field:"optional" json:"drop" yaml:"drop"` +} diff --git a/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go b/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go new file mode 100644 index 000000000..f24d60d26 --- /dev/null +++ b/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go @@ -0,0 +1,37 @@ +package k8s + +// CELDeviceSelector contains a CEL expression for selecting a device. +type CelDeviceSelectorV1Alpha3 struct { + // Expression is a CEL expression which evaluates a single device. + // + // It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort. + // + // The expression's input is an object named "device", which carries the following properties: + // - driver (string): the name of the driver which defines this device. + // - attributes (map[string]object): the device's attributes, grouped by prefix + // (e.g. device.attributes["dra.example.com"] evaluates to an object with all + // of the attributes which were prefixed by "dra.example.com". + // - capacity (map[string]object): the device's capacities, grouped by prefix. + // + // Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields: + // + // device.driver + // device.attributes["dra.example.com"].model + // device.attributes["ext.example.com"].family + // device.capacity["dra.example.com"].modules + // + // The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers. + // + // The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity. + // + // If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort. + // + // A robust expression should check for the existence of attributes before referencing them. + // + // For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example: + // + // cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool) + // + // The length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps. + Expression *string `field:"required" json:"expression" yaml:"expression"` +} diff --git a/pods/imports/k8s/CelDeviceSelectorV1Beta1.go b/pods/imports/k8s/CelDeviceSelectorV1Beta1.go new file mode 100644 index 000000000..60ce979ce --- /dev/null +++ b/pods/imports/k8s/CelDeviceSelectorV1Beta1.go @@ -0,0 +1,37 @@ +package k8s + +// CELDeviceSelector contains a CEL expression for selecting a device. +type CelDeviceSelectorV1Beta1 struct { + // Expression is a CEL expression which evaluates a single device. + // + // It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort. + // + // The expression's input is an object named "device", which carries the following properties: + // - driver (string): the name of the driver which defines this device. + // - attributes (map[string]object): the device's attributes, grouped by prefix + // (e.g. device.attributes["dra.example.com"] evaluates to an object with all + // of the attributes which were prefixed by "dra.example.com". + // - capacity (map[string]object): the device's capacities, grouped by prefix. + // + // Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields: + // + // device.driver + // device.attributes["dra.example.com"].model + // device.attributes["ext.example.com"].family + // device.capacity["dra.example.com"].modules + // + // The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers. + // + // The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity. + // + // If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort. + // + // A robust expression should check for the existence of attributes before referencing them. + // + // For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example: + // + // cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool) + // + // The length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps. + Expression *string `field:"required" json:"expression" yaml:"expression"` +} diff --git a/pods/imports/k8s/CephFsPersistentVolumeSource.go b/pods/imports/k8s/CephFsPersistentVolumeSource.go new file mode 100644 index 000000000..de5ef89ad --- /dev/null +++ b/pods/imports/k8s/CephFsPersistentVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFsPersistentVolumeSource struct { + // monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. + Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` + // path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /. + Path *string `field:"optional" json:"path" yaml:"path"` + // readOnly is Optional: Defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. + SecretFile *string `field:"optional" json:"secretFile" yaml:"secretFile"` + // secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. + // + // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` + // user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/CephFsVolumeSource.go b/pods/imports/k8s/CephFsVolumeSource.go new file mode 100644 index 000000000..b9189d8f6 --- /dev/null +++ b/pods/imports/k8s/CephFsVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFsVolumeSource struct { + // monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. + Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` + // path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /. + Path *string `field:"optional" json:"path" yaml:"path"` + // readOnly is Optional: Defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. + SecretFile *string `field:"optional" json:"secretFile" yaml:"secretFile"` + // secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. + // + // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` + // user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/CertificateSigningRequestSpec.go b/pods/imports/k8s/CertificateSigningRequestSpec.go new file mode 100644 index 000000000..71c38e66c --- /dev/null +++ b/pods/imports/k8s/CertificateSigningRequestSpec.go @@ -0,0 +1,77 @@ +package k8s + +// CertificateSigningRequestSpec contains the certificate request. +type CertificateSigningRequestSpec struct { + // request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. + // + // When serialized as JSON or YAML, the data is additionally base64-encoded. + Request *string `field:"required" json:"request" yaml:"request"` + // signerName indicates the requested signer, and is a qualified name. + // + // List/watch requests for CertificateSigningRequests can filter on this field using a "spec.signerName=NAME" fieldSelector. + // + // Well-known Kubernetes signers are: + // 1. "kubernetes.io/kube-apiserver-client": issues client certificates that can be used to authenticate to kube-apiserver. + // Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the "csrsigning" controller in kube-controller-manager. + // 2. "kubernetes.io/kube-apiserver-client-kubelet": issues client certificates that kubelets use to authenticate to kube-apiserver. + // Requests for this signer can be auto-approved by the "csrapproving" controller in kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager. + // 3. "kubernetes.io/kubelet-serving" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely. + // Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager. + // + // More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers + // + // Custom signerNames can also be specified. The signer defines: + // 1. Trust distribution: how trust (CA bundles) are distributed. + // 2. Permitted subjects: and behavior when a disallowed subject is requested. + // 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested. + // 4. Required, permitted, or forbidden key usages / extended key usages. + // 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin. + // 6. Whether or not requests for CA certificates are allowed. + SignerName *string `field:"required" json:"signerName" yaml:"signerName"` + // expirationSeconds is the requested duration of validity of the issued certificate. + // + // The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration. + // + // The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager. + // + // Certificate signers may not honor this field for various reasons: + // + // 1. Old signer that is unaware of the field (such as the in-tree + // implementations prior to v1.22) + // 2. Signer whose configured maximum is shorter than the requested duration + // 3. Signer whose configured minimum is longer than the requested duration + // + // The minimum valid value for expirationSeconds is 600, i.e. 10 minutes. + ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` + // extra contains extra attributes of the user that created the CertificateSigningRequest. + // + // Populated by the API server on creation and immutable. + Extra *map[string]*[]*string `field:"optional" json:"extra" yaml:"extra"` + // groups contains group membership of the user that created the CertificateSigningRequest. + // + // Populated by the API server on creation and immutable. + Groups *[]*string `field:"optional" json:"groups" yaml:"groups"` + // uid contains the uid of the user that created the CertificateSigningRequest. + // + // Populated by the API server on creation and immutable. + Uid *string `field:"optional" json:"uid" yaml:"uid"` + // usages specifies a set of key usages requested in the issued certificate. + // + // Requests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth". + // + // Requests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth". + // + // Valid values are: + // "signing", "digital signature", "content commitment", + // "key encipherment", "key agreement", "data encipherment", + // "cert sign", "crl sign", "encipher only", "decipher only", "any", + // "server auth", "client auth", + // "code signing", "email protection", "s/mime", + // "ipsec end system", "ipsec tunnel", "ipsec user", + // "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc". + Usages *[]*string `field:"optional" json:"usages" yaml:"usages"` + // username contains the name of the user that created the CertificateSigningRequest. + // + // Populated by the API server on creation and immutable. + Username *string `field:"optional" json:"username" yaml:"username"` +} diff --git a/pods/imports/k8s/CinderPersistentVolumeSource.go b/pods/imports/k8s/CinderPersistentVolumeSource.go new file mode 100644 index 000000000..d3ce1ea5b --- /dev/null +++ b/pods/imports/k8s/CinderPersistentVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Represents a cinder volume resource in Openstack. +// +// A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. +type CinderPersistentVolumeSource struct { + // volumeID used to identify the volume in cinder. + // + // More info: https://examples.k8s.io/mysql-cinder-pd/README.md + VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` + // fsType Filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // readOnly is Optional: Defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack. + SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/CinderVolumeSource.go b/pods/imports/k8s/CinderVolumeSource.go new file mode 100644 index 000000000..8c6f772dd --- /dev/null +++ b/pods/imports/k8s/CinderVolumeSource.go @@ -0,0 +1,21 @@ +package k8s + +// Represents a cinder volume resource in Openstack. +// +// A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. +type CinderVolumeSource struct { + // volumeID used to identify the volume in cinder. + // + // More info: https://examples.k8s.io/mysql-cinder-pd/README.md + VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/ClientIpConfig.go b/pods/imports/k8s/ClientIpConfig.go new file mode 100644 index 000000000..82dabd0c1 --- /dev/null +++ b/pods/imports/k8s/ClientIpConfig.go @@ -0,0 +1,9 @@ +package k8s + +// ClientIPConfig represents the configurations of Client IP based session affinity. +type ClientIpConfig struct { + // timeoutSeconds specifies the seconds of ClientIP type session sticky time. + // + // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). + TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` +} diff --git a/pods/imports/k8s/ClusterTrustBundleProjection.go b/pods/imports/k8s/ClusterTrustBundleProjection.go new file mode 100644 index 000000000..55948645a --- /dev/null +++ b/pods/imports/k8s/ClusterTrustBundleProjection.go @@ -0,0 +1,23 @@ +package k8s + +// ClusterTrustBundleProjection describes how to select a set of ClusterTrustBundle objects and project their contents into the pod filesystem. +type ClusterTrustBundleProjection struct { + // Relative path from the volume root to write the bundle. + Path *string `field:"required" json:"path" yaml:"path"` + // Select all ClusterTrustBundles that match this label selector. + // + // Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + LabelSelector *LabelSelector `field:"optional" json:"labelSelector" yaml:"labelSelector"` + // Select a single ClusterTrustBundle by object name. + // + // Mutually-exclusive with signerName and labelSelector. + Name *string `field:"optional" json:"name" yaml:"name"` + // If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. + // + // If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` + // Select all ClusterTrustBundles that match this signer name. + // + // Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. + SignerName *string `field:"optional" json:"signerName" yaml:"signerName"` +} diff --git a/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go b/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go new file mode 100644 index 000000000..1942921a9 --- /dev/null +++ b/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go @@ -0,0 +1,21 @@ +package k8s + +// ClusterTrustBundleSpec contains the signer and trust anchors. +type ClusterTrustBundleSpecV1Alpha1 struct { + // trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates. + // + // The data must consist only of PEM certificate blocks that parse as valid X.509 certificates. Each certificate must include a basic constraints extension with the CA bit set. The API server will reject objects that contain duplicate certificates, or that use PEM block headers. + // + // Users of ClusterTrustBundles, including Kubelet, are free to reorder and deduplicate certificate blocks in this file according to their own logic, as well as to drop PEM block headers and inter-block data. + TrustBundle *string `field:"required" json:"trustBundle" yaml:"trustBundle"` + // signerName indicates the associated signer, if any. + // + // In order to create or update a ClusterTrustBundle that sets signerName, you must have the following cluster-scoped permission: group=certificates.k8s.io resource=signers resourceName= verb=attest. + // + // If signerName is not empty, then the ClusterTrustBundle object must be named with the signer name as a prefix (translating slashes to colons). For example, for the signer name `example.com/foo`, valid ClusterTrustBundle object names include `example.com:foo:abc` and `example.com:foo:v1`. + // + // If signerName is empty, then the ClusterTrustBundle object's name must not have such a prefix. + // + // List/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector. + SignerName *string `field:"optional" json:"signerName" yaml:"signerName"` +} diff --git a/pods/imports/k8s/ComponentCondition.go b/pods/imports/k8s/ComponentCondition.go new file mode 100644 index 000000000..6df69a1d5 --- /dev/null +++ b/pods/imports/k8s/ComponentCondition.go @@ -0,0 +1,21 @@ +package k8s + +// Information about the condition of a component. +type ComponentCondition struct { + // Status of the condition for a component. + // + // Valid values for "Healthy": "True", "False", or "Unknown". + Status *string `field:"required" json:"status" yaml:"status"` + // Type of condition for a component. + // + // Valid value: "Healthy". + Type *string `field:"required" json:"type" yaml:"type"` + // Condition error code for a component. + // + // For example, a health check error code. + Error *string `field:"optional" json:"error" yaml:"error"` + // Message about the condition for a component. + // + // For example, information about a health check. + Message *string `field:"optional" json:"message" yaml:"message"` +} diff --git a/pods/imports/k8s/ConfigMapEnvSource.go b/pods/imports/k8s/ConfigMapEnvSource.go new file mode 100644 index 000000000..78f4c264a --- /dev/null +++ b/pods/imports/k8s/ConfigMapEnvSource.go @@ -0,0 +1,13 @@ +package k8s + +// ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. +// +// The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables. +type ConfigMapEnvSource struct { + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the ConfigMap must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/ConfigMapKeySelector.go b/pods/imports/k8s/ConfigMapKeySelector.go new file mode 100644 index 000000000..4494fe4ed --- /dev/null +++ b/pods/imports/k8s/ConfigMapKeySelector.go @@ -0,0 +1,13 @@ +package k8s + +// Selects a key from a ConfigMap. +type ConfigMapKeySelector struct { + // The key to select. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the ConfigMap or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/ConfigMapNodeConfigSource.go b/pods/imports/k8s/ConfigMapNodeConfigSource.go new file mode 100644 index 000000000..d5f879b3c --- /dev/null +++ b/pods/imports/k8s/ConfigMapNodeConfigSource.go @@ -0,0 +1,17 @@ +package k8s + +// ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node. +// +// This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration +type ConfigMapNodeConfigSource struct { + // KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases. + KubeletConfigKey *string `field:"required" json:"kubeletConfigKey" yaml:"kubeletConfigKey"` + // Name is the metadata.name of the referenced ConfigMap. This field is required in all cases. + Name *string `field:"required" json:"name" yaml:"name"` + // Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases. + Namespace *string `field:"required" json:"namespace" yaml:"namespace"` + // ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. + ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` + // UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. + Uid *string `field:"optional" json:"uid" yaml:"uid"` +} diff --git a/pods/imports/k8s/ConfigMapProjection.go b/pods/imports/k8s/ConfigMapProjection.go new file mode 100644 index 000000000..f0b02da9a --- /dev/null +++ b/pods/imports/k8s/ConfigMapProjection.go @@ -0,0 +1,17 @@ +package k8s + +// Adapts a ConfigMap into a projected volume. +// +// The contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode. +type ConfigMapProjection struct { + // items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. + // + // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // optional specify whether the ConfigMap or its keys must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/ConfigMapVolumeSource.go b/pods/imports/k8s/ConfigMapVolumeSource.go new file mode 100644 index 000000000..cfe8c4631 --- /dev/null +++ b/pods/imports/k8s/ConfigMapVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling. +type ConfigMapVolumeSource struct { + // defaultMode is optional: mode bits used to set permissions on created files by default. + // + // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + // Default: 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + // + DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` + // items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. + // + // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // optional specify whether the ConfigMap or its keys must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/Container.go b/pods/imports/k8s/Container.go new file mode 100644 index 000000000..47085db10 --- /dev/null +++ b/pods/imports/k8s/Container.go @@ -0,0 +1,109 @@ +package k8s + +// A single application container that you want to run within a pod. +type Container struct { + // Name of the container specified as a DNS_LABEL. + // + // Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + Name *string `field:"required" json:"name" yaml:"name"` + // Arguments to the entrypoint. + // + // The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Args *[]*string `field:"optional" json:"args" yaml:"args"` + // Entrypoint array. + // + // Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Command *[]*string `field:"optional" json:"command" yaml:"command"` + // List of environment variables to set in the container. + // + // Cannot be updated. + Env *[]*EnvVar `field:"optional" json:"env" yaml:"env"` + // List of sources to populate environment variables in the container. + // + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + EnvFrom *[]*EnvFromSource `field:"optional" json:"envFrom" yaml:"envFrom"` + // Container image name. + // + // More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. + Image *string `field:"optional" json:"image" yaml:"image"` + // Image pull policy. + // + // One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // Default: Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // + ImagePullPolicy *string `field:"optional" json:"imagePullPolicy" yaml:"imagePullPolicy"` + // Actions that the management system should take in response to container lifecycle events. + // + // Cannot be updated. + Lifecycle *Lifecycle `field:"optional" json:"lifecycle" yaml:"lifecycle"` + // Periodic probe of container liveness. + // + // Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + LivenessProbe *Probe `field:"optional" json:"livenessProbe" yaml:"livenessProbe"` + // List of ports to expose from the container. + // + // Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. + Ports *[]*ContainerPort `field:"optional" json:"ports" yaml:"ports"` + // Periodic probe of container service readiness. + // + // Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + ReadinessProbe *Probe `field:"optional" json:"readinessProbe" yaml:"readinessProbe"` + // Resources resize policy for the container. + ResizePolicy *[]*ContainerResizePolicy `field:"optional" json:"resizePolicy" yaml:"resizePolicy"` + // Compute Resources required by this container. + // + // Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Resources *ResourceRequirements `field:"optional" json:"resources" yaml:"resources"` + // RestartPolicy defines the restart behavior of individual containers in a pod. + // + // This field may only be set for init containers, and the only allowed value is "Always". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as "Always" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy "Always" will be shut down. This lifecycle differs from normal init containers and is often referred to as a "sidecar" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed. + RestartPolicy *string `field:"optional" json:"restartPolicy" yaml:"restartPolicy"` + // SecurityContext defines the security options the container should be run with. + // + // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + SecurityContext *SecurityContext `field:"optional" json:"securityContext" yaml:"securityContext"` + // StartupProbe indicates that the Pod has successfully initialized. + // + // If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + StartupProbe *Probe `field:"optional" json:"startupProbe" yaml:"startupProbe"` + // Whether this container should allocate a buffer for stdin in the container runtime. + // + // If this is not set, reads from stdin in the container will always result in EOF. Default is false. + // Default: false. + // + Stdin *bool `field:"optional" json:"stdin" yaml:"stdin"` + // Whether the container runtime should close the stdin channel after it has been opened by a single attach. + // + // When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + // Default: false. + // + StdinOnce *bool `field:"optional" json:"stdinOnce" yaml:"stdinOnce"` + // Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. + // + // Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. + // Default: dev/termination-log. Cannot be updated. + // + TerminationMessagePath *string `field:"optional" json:"terminationMessagePath" yaml:"terminationMessagePath"` + // Indicate how the termination message should be populated. + // + // File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + // Default: File. Cannot be updated. + // + TerminationMessagePolicy *string `field:"optional" json:"terminationMessagePolicy" yaml:"terminationMessagePolicy"` + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // + // Default is false. + // Default: false. + // + Tty *bool `field:"optional" json:"tty" yaml:"tty"` + // volumeDevices is the list of block devices to be used by the container. + VolumeDevices *[]*VolumeDevice `field:"optional" json:"volumeDevices" yaml:"volumeDevices"` + // Pod volumes to mount into the container's filesystem. + // + // Cannot be updated. + VolumeMounts *[]*VolumeMount `field:"optional" json:"volumeMounts" yaml:"volumeMounts"` + // Container's working directory. + // + // If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + WorkingDir *string `field:"optional" json:"workingDir" yaml:"workingDir"` +} diff --git a/pods/imports/k8s/ContainerPort.go b/pods/imports/k8s/ContainerPort.go new file mode 100644 index 000000000..763ab4be0 --- /dev/null +++ b/pods/imports/k8s/ContainerPort.go @@ -0,0 +1,25 @@ +package k8s + +// ContainerPort represents a network port in a single container. +type ContainerPort struct { + // Number of port to expose on the pod's IP address. + // + // This must be a valid port number, 0 < x < 65536. + ContainerPort *float64 `field:"required" json:"containerPort" yaml:"containerPort"` + // What host IP to bind the external port to. + HostIp *string `field:"optional" json:"hostIp" yaml:"hostIp"` + // Number of port to expose on the host. + // + // If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + HostPort *float64 `field:"optional" json:"hostPort" yaml:"hostPort"` + // If specified, this must be an IANA_SVC_NAME and unique within the pod. + // + // Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + Name *string `field:"optional" json:"name" yaml:"name"` + // Protocol for port. + // + // Must be UDP, TCP, or SCTP. Defaults to "TCP". + // Default: TCP". + // + Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` +} diff --git a/pods/imports/k8s/ContainerResizePolicy.go b/pods/imports/k8s/ContainerResizePolicy.go new file mode 100644 index 000000000..f424907e7 --- /dev/null +++ b/pods/imports/k8s/ContainerResizePolicy.go @@ -0,0 +1,13 @@ +package k8s + +// ContainerResizePolicy represents resource resize policy for the container. +type ContainerResizePolicy struct { + // Name of the resource to which this resource resize policy applies. + // + // Supported values: cpu, memory. + ResourceName *string `field:"required" json:"resourceName" yaml:"resourceName"` + // Restart policy to apply when specified resource is resized. + // + // If not specified, it defaults to NotRequired. + RestartPolicy *string `field:"required" json:"restartPolicy" yaml:"restartPolicy"` +} diff --git a/pods/imports/k8s/ContainerResourceMetricSourceV2.go b/pods/imports/k8s/ContainerResourceMetricSourceV2.go new file mode 100644 index 000000000..f3640ba49 --- /dev/null +++ b/pods/imports/k8s/ContainerResourceMetricSourceV2.go @@ -0,0 +1,11 @@ +package k8s + +// ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set. +type ContainerResourceMetricSourceV2 struct { + // container is the name of the container in the pods of the scaling target. + Container *string `field:"required" json:"container" yaml:"container"` + // name is the name of the resource in question. + Name *string `field:"required" json:"name" yaml:"name"` + // target specifies the target value for the given metric. + Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` +} diff --git a/pods/imports/k8s/CronJobSpec.go b/pods/imports/k8s/CronJobSpec.go new file mode 100644 index 000000000..f0f83d990 --- /dev/null +++ b/pods/imports/k8s/CronJobSpec.go @@ -0,0 +1,37 @@ +package k8s + +// CronJobSpec describes how the job execution will look like and when it will actually run. +type CronJobSpec struct { + // Specifies the job that will be created when executing a CronJob. + JobTemplate *JobTemplateSpec `field:"required" json:"jobTemplate" yaml:"jobTemplate"` + // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + Schedule *string `field:"required" json:"schedule" yaml:"schedule"` + // Specifies how to treat concurrent executions of a Job. Valid values are:. + // + // - "Allow" (default): allows CronJobs to run concurrently; - "Forbid": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - "Replace": cancels currently running job and replaces it with a new one. + ConcurrencyPolicy *string `field:"optional" json:"concurrencyPolicy" yaml:"concurrencyPolicy"` + // The number of failed finished jobs to retain. + // + // Value must be non-negative integer. Defaults to 1. + // Default: 1. + // + FailedJobsHistoryLimit *float64 `field:"optional" json:"failedJobsHistoryLimit" yaml:"failedJobsHistoryLimit"` + // Optional deadline in seconds for starting the job if it misses scheduled time for any reason. + // + // Missed jobs executions will be counted as failed ones. + StartingDeadlineSeconds *float64 `field:"optional" json:"startingDeadlineSeconds" yaml:"startingDeadlineSeconds"` + // The number of successful finished jobs to retain. + // + // Value must be non-negative integer. Defaults to 3. + // Default: 3. + // + SuccessfulJobsHistoryLimit *float64 `field:"optional" json:"successfulJobsHistoryLimit" yaml:"successfulJobsHistoryLimit"` + // This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. + // + // Defaults to false. + // Default: false. + // + Suspend *bool `field:"optional" json:"suspend" yaml:"suspend"` + // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones. + TimeZone *string `field:"optional" json:"timeZone" yaml:"timeZone"` +} diff --git a/pods/imports/k8s/CrossVersionObjectReference.go b/pods/imports/k8s/CrossVersionObjectReference.go new file mode 100644 index 000000000..65112e816 --- /dev/null +++ b/pods/imports/k8s/CrossVersionObjectReference.go @@ -0,0 +1,15 @@ +package k8s + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // kind is the kind of the referent; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Kind *string `field:"required" json:"kind" yaml:"kind"` + // name is the name of the referent; + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"required" json:"name" yaml:"name"` + // apiVersion is the API version of the referent. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` +} diff --git a/pods/imports/k8s/CrossVersionObjectReferenceV2.go b/pods/imports/k8s/CrossVersionObjectReferenceV2.go new file mode 100644 index 000000000..703c3a959 --- /dev/null +++ b/pods/imports/k8s/CrossVersionObjectReferenceV2.go @@ -0,0 +1,15 @@ +package k8s + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReferenceV2 struct { + // kind is the kind of the referent; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Kind *string `field:"required" json:"kind" yaml:"kind"` + // name is the name of the referent; + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"required" json:"name" yaml:"name"` + // apiVersion is the API version of the referent. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` +} diff --git a/pods/imports/k8s/CsiDriverSpec.go b/pods/imports/k8s/CsiDriverSpec.go new file mode 100644 index 000000000..d0479e1a8 --- /dev/null +++ b/pods/imports/k8s/CsiDriverSpec.go @@ -0,0 +1,80 @@ +package k8s + +// CSIDriverSpec is the specification of a CSIDriver. +type CsiDriverSpec struct { + // attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. + // + // The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called. + // + // This field is immutable. + AttachRequired *bool `field:"optional" json:"attachRequired" yaml:"attachRequired"` + // fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. + // + // Refer to the specific FSGroupPolicy values for additional details. + // + // This field was immutable in Kubernetes < 1.29 and now is mutable. + // + // Defaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce. + // Default: ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce. + // + FsGroupPolicy *string `field:"optional" json:"fsGroupPolicy" yaml:"fsGroupPolicy"` + // podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false. + // + // The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. + // + // The following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": "true" if the volume is an ephemeral inline volume + // defined by a CSIVolumeSource, otherwise "false" + // + // "csi.storage.k8s.io/ephemeral" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the "Persistent" and "Ephemeral" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver. + // + // This field was immutable in Kubernetes < 1.29 and now is mutable. + // Default: false. + // + PodInfoOnMount *bool `field:"optional" json:"podInfoOnMount" yaml:"podInfoOnMount"` + // requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. + // + // This field defaults to false. + // + // Note: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container. + RequiresRepublish *bool `field:"optional" json:"requiresRepublish" yaml:"requiresRepublish"` + // seLinuxMount specifies if the CSI driver supports "-o context" mount option. + // + // When "true", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with "-o context=xyz" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context. + // + // When "false", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem. + // + // Default is "false". + // Default: false". + // + SeLinuxMount *bool `field:"optional" json:"seLinuxMount" yaml:"seLinuxMount"` + // storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true. + // + // The check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object. + // + // Alternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published. + // + // This field was immutable in Kubernetes <= 1.22 and now is mutable. + StorageCapacity *bool `field:"optional" json:"storageCapacity" yaml:"storageCapacity"` + // tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. + // + // Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { + // "": { + // "token": , + // "expirationTimestamp": , + // }, + // ... + // } + // + // Note: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically. + TokenRequests *[]*TokenRequest `field:"optional" json:"tokenRequests" yaml:"tokenRequests"` + // volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. + // + // The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. + // + // The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. + // + // For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. + // + // This field is beta. This field is immutable. + VolumeLifecycleModes *[]*string `field:"optional" json:"volumeLifecycleModes" yaml:"volumeLifecycleModes"` +} diff --git a/pods/imports/k8s/CsiNodeDriver.go b/pods/imports/k8s/CsiNodeDriver.go new file mode 100644 index 000000000..5e3c14783 --- /dev/null +++ b/pods/imports/k8s/CsiNodeDriver.go @@ -0,0 +1,21 @@ +package k8s + +// CSINodeDriver holds information about the specification of one CSI driver installed on a node. +type CsiNodeDriver struct { + // name represents the name of the CSI driver that this object refers to. + // + // This MUST be the same name returned by the CSI GetPluginName() call for that driver. + Name *string `field:"required" json:"name" yaml:"name"` + // nodeID of the node from the driver point of view. + // + // This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as "node1", but the storage system may refer to the same node as "nodeA". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. "nodeA" instead of "node1". This field is required. + NodeId *string `field:"required" json:"nodeId" yaml:"nodeId"` + // allocatable represents the volume resources of a node that are available for scheduling. + // + // This field is beta. + Allocatable *VolumeNodeResources `field:"optional" json:"allocatable" yaml:"allocatable"` + // topologyKeys is the list of keys supported by the driver. + // + // When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology. + TopologyKeys *[]*string `field:"optional" json:"topologyKeys" yaml:"topologyKeys"` +} diff --git a/pods/imports/k8s/CsiNodeSpec.go b/pods/imports/k8s/CsiNodeSpec.go new file mode 100644 index 000000000..d2e67dfb7 --- /dev/null +++ b/pods/imports/k8s/CsiNodeSpec.go @@ -0,0 +1,9 @@ +package k8s + +// CSINodeSpec holds information about the specification of all CSI drivers installed on a node. +type CsiNodeSpec struct { + // drivers is a list of information of all CSI Drivers existing on a node. + // + // If all drivers in the list are uninstalled, this can become empty. + Drivers *[]*CsiNodeDriver `field:"required" json:"drivers" yaml:"drivers"` +} diff --git a/pods/imports/k8s/CsiPersistentVolumeSource.go b/pods/imports/k8s/CsiPersistentVolumeSource.go new file mode 100644 index 000000000..6dfe77370 --- /dev/null +++ b/pods/imports/k8s/CsiPersistentVolumeSource.go @@ -0,0 +1,45 @@ +package k8s + +// Represents storage that is managed by an external CSI volume driver. +type CsiPersistentVolumeSource struct { + // driver is the name of the driver to use for this volume. + // + // Required. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. + // + // Required. + VolumeHandle *string `field:"required" json:"volumeHandle" yaml:"volumeHandle"` + // controllerExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerExpandVolume call. + // + // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. + ControllerExpandSecretRef *SecretReference `field:"optional" json:"controllerExpandSecretRef" yaml:"controllerExpandSecretRef"` + // controllerPublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerPublishVolume and ControllerUnpublishVolume calls. + // + // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. + ControllerPublishSecretRef *SecretReference `field:"optional" json:"controllerPublishSecretRef" yaml:"controllerPublishSecretRef"` + // fsType to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // nodeExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeExpandVolume call. + // + // This field is optional, may be omitted if no secret is required. If the secret object contains more than one secret, all secrets are passed. + NodeExpandSecretRef *SecretReference `field:"optional" json:"nodeExpandSecretRef" yaml:"nodeExpandSecretRef"` + // nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. + // + // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. + NodePublishSecretRef *SecretReference `field:"optional" json:"nodePublishSecretRef" yaml:"nodePublishSecretRef"` + // nodeStageSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume and NodeStageVolume and NodeUnstageVolume calls. + // + // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. + NodeStageSecretRef *SecretReference `field:"optional" json:"nodeStageSecretRef" yaml:"nodeStageSecretRef"` + // readOnly value to pass to ControllerPublishVolumeRequest. + // + // Defaults to false (read/write). + // Default: false (read/write). + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // volumeAttributes of the volume to publish. + VolumeAttributes *map[string]*string `field:"optional" json:"volumeAttributes" yaml:"volumeAttributes"` +} diff --git a/pods/imports/k8s/CsiVolumeSource.go b/pods/imports/k8s/CsiVolumeSource.go new file mode 100644 index 000000000..fb72fc040 --- /dev/null +++ b/pods/imports/k8s/CsiVolumeSource.go @@ -0,0 +1,27 @@ +package k8s + +// Represents a source location of a volume to mount, managed by an external CSI driver. +type CsiVolumeSource struct { + // driver is the name of the CSI driver that handles this volume. + // + // Consult with your admin for the correct name as registered in the cluster. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // fsType to mount. + // + // Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. + // + // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + NodePublishSecretRef *LocalObjectReference `field:"optional" json:"nodePublishSecretRef" yaml:"nodePublishSecretRef"` + // readOnly specifies a read-only configuration for the volume. + // + // Defaults to false (read/write). + // Default: false (read/write). + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // volumeAttributes stores driver-specific properties that are passed to the CSI driver. + // + // Consult your driver's documentation for supported values. + VolumeAttributes *map[string]*string `field:"optional" json:"volumeAttributes" yaml:"volumeAttributes"` +} diff --git a/pods/imports/k8s/CustomResourceColumnDefinition.go b/pods/imports/k8s/CustomResourceColumnDefinition.go new file mode 100644 index 000000000..61f047c28 --- /dev/null +++ b/pods/imports/k8s/CustomResourceColumnDefinition.go @@ -0,0 +1,23 @@ +package k8s + +// CustomResourceColumnDefinition specifies a column for server side printing. +type CustomResourceColumnDefinition struct { + // jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column. + JsonPath *string `field:"required" json:"jsonPath" yaml:"jsonPath"` + // name is a human readable name for the column. + Name *string `field:"required" json:"name" yaml:"name"` + // type is an OpenAPI type definition for this column. + // + // See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. + Type *string `field:"required" json:"type" yaml:"type"` + // description is a human readable description of this column. + Description *string `field:"optional" json:"description" yaml:"description"` + // format is an optional OpenAPI type definition for this column. + // + // The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. + Format *string `field:"optional" json:"format" yaml:"format"` + // priority is an integer defining the relative importance of this column compared to others. + // + // Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0. + Priority *float64 `field:"optional" json:"priority" yaml:"priority"` +} diff --git a/pods/imports/k8s/CustomResourceConversion.go b/pods/imports/k8s/CustomResourceConversion.go new file mode 100644 index 000000000..628cebdc4 --- /dev/null +++ b/pods/imports/k8s/CustomResourceConversion.go @@ -0,0 +1,14 @@ +package k8s + +// CustomResourceConversion describes how to convert different versions of a CR. +type CustomResourceConversion struct { + // strategy specifies how custom resources are converted between versions. + // + // Allowed values are: - `"None"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - `"Webhook"`: API Server will call to an external webhook to do the conversion. Additional information + // is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set. + Strategy *string `field:"required" json:"strategy" yaml:"strategy"` + // webhook describes how to call the conversion webhook. + // + // Required when `strategy` is set to `"Webhook"`. + Webhook *WebhookConversion `field:"optional" json:"webhook" yaml:"webhook"` +} diff --git a/pods/imports/k8s/CustomResourceDefinitionNames.go b/pods/imports/k8s/CustomResourceDefinitionNames.go new file mode 100644 index 000000000..bf7bfd302 --- /dev/null +++ b/pods/imports/k8s/CustomResourceDefinitionNames.go @@ -0,0 +1,31 @@ +package k8s + +// CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition. +type CustomResourceDefinitionNames struct { + // kind is the serialized kind of the resource. + // + // It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // plural is the plural name of the resource to serve. + // + // The custom resources are served under `/apis///.../`. Must match the name of the CustomResourceDefinition (in the form `.`). Must be all lowercase. + Plural *string `field:"required" json:"plural" yaml:"plural"` + // categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`. + Categories *[]*string `field:"optional" json:"categories" yaml:"categories"` + // listKind is the serialized kind of the list for this resource. + // + // Defaults to "`kind`List". + // Default: kind`List". + // + ListKind *string `field:"optional" json:"listKind" yaml:"listKind"` + // shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get `. + // + // It must be all lowercase. + ShortNames *[]*string `field:"optional" json:"shortNames" yaml:"shortNames"` + // singular is the singular name of the resource. + // + // It must be all lowercase. Defaults to lowercased `kind`. + // Default: lowercased `kind`. + // + Singular *string `field:"optional" json:"singular" yaml:"singular"` +} diff --git a/pods/imports/k8s/CustomResourceDefinitionSpec.go b/pods/imports/k8s/CustomResourceDefinitionSpec.go new file mode 100644 index 000000000..faa52d152 --- /dev/null +++ b/pods/imports/k8s/CustomResourceDefinitionSpec.go @@ -0,0 +1,25 @@ +package k8s + +// CustomResourceDefinitionSpec describes how a user wants their resource to appear. +type CustomResourceDefinitionSpec struct { + // group is the API group of the defined custom resource. + // + // The custom resources are served under `/apis//...`. Must match the name of the CustomResourceDefinition (in the form `.`). + Group *string `field:"required" json:"group" yaml:"group"` + // names specify the resource and kind names for the custom resource. + Names *CustomResourceDefinitionNames `field:"required" json:"names" yaml:"names"` + // scope indicates whether the defined custom resource is cluster- or namespace-scoped. + // + // Allowed values are `Cluster` and `Namespaced`. + Scope *string `field:"required" json:"scope" yaml:"scope"` + // versions is the list of all API versions of the defined custom resource. + // + // Version names are used to compute the order in which served versions are listed in API discovery. If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version), then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. + Versions *[]*CustomResourceDefinitionVersion `field:"required" json:"versions" yaml:"versions"` + // conversion defines conversion settings for the CRD. + Conversion *CustomResourceConversion `field:"optional" json:"conversion" yaml:"conversion"` + // preserveUnknownFields indicates that object fields which are not specified in the OpenAPI schema should be preserved when persisting to storage. + // + // apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details. + PreserveUnknownFields *bool `field:"optional" json:"preserveUnknownFields" yaml:"preserveUnknownFields"` +} diff --git a/pods/imports/k8s/CustomResourceDefinitionVersion.go b/pods/imports/k8s/CustomResourceDefinitionVersion.go new file mode 100644 index 000000000..ceee62ff3 --- /dev/null +++ b/pods/imports/k8s/CustomResourceDefinitionVersion.go @@ -0,0 +1,35 @@ +package k8s + +// CustomResourceDefinitionVersion describes a version for CRD. +type CustomResourceDefinitionVersion struct { + // name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis///...` if `served` is true. + Name *string `field:"required" json:"name" yaml:"name"` + // served is a flag enabling/disabling this version from being served via REST APIs. + Served *bool `field:"required" json:"served" yaml:"served"` + // storage indicates this version should be used when persisting custom resources to storage. + // + // There must be exactly one version with storage=true. + Storage *bool `field:"required" json:"storage" yaml:"storage"` + // additionalPrinterColumns specifies additional columns returned in Table output. + // + // See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If no columns are specified, a single column displaying the age of the custom resource is used. + AdditionalPrinterColumns *[]*CustomResourceColumnDefinition `field:"optional" json:"additionalPrinterColumns" yaml:"additionalPrinterColumns"` + // deprecated indicates this version of the custom resource API is deprecated. + // + // When set to true, API requests to this version receive a warning header in the server response. Defaults to false. + // Default: false. + // + Deprecated *bool `field:"optional" json:"deprecated" yaml:"deprecated"` + // deprecationWarning overrides the default warning returned to API clients. + // + // May only be set when `deprecated` is true. The default warning indicates this version is deprecated and recommends use of the newest served version of equal or greater stability, if one exists. + DeprecationWarning *string `field:"optional" json:"deprecationWarning" yaml:"deprecationWarning"` + // schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource. + Schema *CustomResourceValidation `field:"optional" json:"schema" yaml:"schema"` + // selectableFields specifies paths to fields that may be used as field selectors. + // + // A maximum of 8 selectable fields are allowed. See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors + SelectableFields *[]*SelectableField `field:"optional" json:"selectableFields" yaml:"selectableFields"` + // subresources specify what subresources this version of the defined custom resource have. + Subresources *CustomResourceSubresources `field:"optional" json:"subresources" yaml:"subresources"` +} diff --git a/pods/imports/k8s/CustomResourceSubresourceScale.go b/pods/imports/k8s/CustomResourceSubresourceScale.go new file mode 100644 index 000000000..fda8cbf5e --- /dev/null +++ b/pods/imports/k8s/CustomResourceSubresourceScale.go @@ -0,0 +1,11 @@ +package k8s + +// CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources. +type CustomResourceSubresourceScale struct { + // specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET. + SpecReplicasPath *string `field:"required" json:"specReplicasPath" yaml:"specReplicasPath"` + // statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status`. If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource will default to 0. + StatusReplicasPath *string `field:"required" json:"statusReplicasPath" yaml:"statusReplicasPath"` + // labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string. + LabelSelectorPath *string `field:"optional" json:"labelSelectorPath" yaml:"labelSelectorPath"` +} diff --git a/pods/imports/k8s/CustomResourceSubresources.go b/pods/imports/k8s/CustomResourceSubresources.go new file mode 100644 index 000000000..0b0603e5b --- /dev/null +++ b/pods/imports/k8s/CustomResourceSubresources.go @@ -0,0 +1,11 @@ +package k8s + +// CustomResourceSubresources defines the status and scale subresources for CustomResources. +type CustomResourceSubresources struct { + // scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object. + Scale *CustomResourceSubresourceScale `field:"optional" json:"scale" yaml:"scale"` + // status indicates the custom resource should serve a `/status` subresource. + // + // When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object. + Status interface{} `field:"optional" json:"status" yaml:"status"` +} diff --git a/pods/imports/k8s/CustomResourceValidation.go b/pods/imports/k8s/CustomResourceValidation.go new file mode 100644 index 000000000..1e8258039 --- /dev/null +++ b/pods/imports/k8s/CustomResourceValidation.go @@ -0,0 +1,7 @@ +package k8s + +// CustomResourceValidation is a list of validation methods for CustomResources. +type CustomResourceValidation struct { + // openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning. + OpenApiv3Schema *JsonSchemaProps `field:"optional" json:"openApiv3Schema" yaml:"openApiv3Schema"` +} diff --git a/pods/imports/k8s/DaemonSetSpec.go b/pods/imports/k8s/DaemonSetSpec.go new file mode 100644 index 000000000..9f7027a1c --- /dev/null +++ b/pods/imports/k8s/DaemonSetSpec.go @@ -0,0 +1,27 @@ +package k8s + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // A label query over pods that are managed by the daemon set. + // + // Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` + // An object that describes the pod that will be created. + // + // The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). The only allowed template.spec.restartPolicy value is "Always". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` + // The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. + // + // Defaults to 0 (pod will be considered available as soon as it is ready). + // Default: 0 (pod will be considered available as soon as it is ready). + // + MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` + // The number of old history to retain to allow rollback. + // + // This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. + // Default: 10. + // + RevisionHistoryLimit *float64 `field:"optional" json:"revisionHistoryLimit" yaml:"revisionHistoryLimit"` + // An update strategy to replace existing DaemonSet pods with new pods. + UpdateStrategy *DaemonSetUpdateStrategy `field:"optional" json:"updateStrategy" yaml:"updateStrategy"` +} diff --git a/pods/imports/k8s/DaemonSetUpdateStrategy.go b/pods/imports/k8s/DaemonSetUpdateStrategy.go new file mode 100644 index 000000000..749d9cde1 --- /dev/null +++ b/pods/imports/k8s/DaemonSetUpdateStrategy.go @@ -0,0 +1,15 @@ +package k8s + +// DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet. +type DaemonSetUpdateStrategy struct { + // Rolling update config params. + // + // Present only if type = "RollingUpdate". + RollingUpdate *RollingUpdateDaemonSet `field:"optional" json:"rollingUpdate" yaml:"rollingUpdate"` + // Type of daemon set update. + // + // Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate. + // Default: RollingUpdate. + // + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/DeleteOptions.go b/pods/imports/k8s/DeleteOptions.go new file mode 100644 index 000000000..5a9e1057c --- /dev/null +++ b/pods/imports/k8s/DeleteOptions.go @@ -0,0 +1,37 @@ +package k8s + +// DeleteOptions may be provided when deleting an API object. +type DeleteOptions struct { + // APIVersion defines the versioned schema of this representation of an object. + // + // Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // When present, indicates that modifications should not be persisted. + // + // An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed + DryRun *[]*string `field:"optional" json:"dryRun" yaml:"dryRun"` + // The duration in seconds before the object should be deleted. + // + // Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. + // Default: a per object value if not specified. zero means delete immediately. + // + GracePeriodSeconds *float64 `field:"optional" json:"gracePeriodSeconds" yaml:"gracePeriodSeconds"` + // if set to true, it will trigger an unsafe deletion of the resource in case the normal deletion flow fails with a corrupt object error. + // + // A resource is considered corrupt if it can not be retrieved from the underlying storage successfully because of a) its data can not be transformed e.g. decryption failure, or b) it fails to decode into an object. NOTE: unsafe deletion ignores finalizer constraints, skips precondition checks, and removes the object from the storage. WARNING: This may potentially break the cluster if the workload associated with the resource being unsafe-deleted relies on normal deletion flow. Use only if you REALLY know what you are doing. The default value is false, and the user must opt in to enable it + IgnoreStoreReadErrorWithClusterBreakingPotential *bool `field:"optional" json:"ignoreStoreReadErrorWithClusterBreakingPotential" yaml:"ignoreStoreReadErrorWithClusterBreakingPotential"` + // Kind is a string value representing the REST resource this object represents. + // + // Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Kind IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind `field:"optional" json:"kind" yaml:"kind"` + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. + OrphanDependents *bool `field:"optional" json:"orphanDependents" yaml:"orphanDependents"` + // Must be fulfilled before a deletion is carried out. + // + // If not possible, a 409 Conflict status will be returned. + Preconditions *Preconditions `field:"optional" json:"preconditions" yaml:"preconditions"` + // Whether and how garbage collection will be performed. + // + // Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. + PropagationPolicy *string `field:"optional" json:"propagationPolicy" yaml:"propagationPolicy"` +} diff --git a/pods/imports/k8s/DeploymentSpec.go b/pods/imports/k8s/DeploymentSpec.go new file mode 100644 index 000000000..73b7322bf --- /dev/null +++ b/pods/imports/k8s/DeploymentSpec.go @@ -0,0 +1,41 @@ +package k8s + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +type DeploymentSpec struct { + // Label selector for pods. + // + // Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels. + Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` + // Template describes the pods that will be created. + // + // The only allowed template.spec.restartPolicy value is "Always". + Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` + // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. + // + // Defaults to 0 (pod will be considered available as soon as it is ready). + // Default: 0 (pod will be considered available as soon as it is ready). + // + MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` + // Indicates that the deployment is paused. + Paused *bool `field:"optional" json:"paused" yaml:"paused"` + // The maximum time in seconds for a deployment to make progress before it is considered to be failed. + // + // The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s. + // Default: 600s. + // + ProgressDeadlineSeconds *float64 `field:"optional" json:"progressDeadlineSeconds" yaml:"progressDeadlineSeconds"` + // Number of desired pods. + // + // This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. + // Default: 1. + // + Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` + // The number of old ReplicaSets to retain to allow rollback. + // + // This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. + // Default: 10. + // + RevisionHistoryLimit *float64 `field:"optional" json:"revisionHistoryLimit" yaml:"revisionHistoryLimit"` + // The deployment strategy to use to replace existing pods with new ones. + Strategy *DeploymentStrategy `field:"optional" json:"strategy" yaml:"strategy"` +} diff --git a/pods/imports/k8s/DeploymentStrategy.go b/pods/imports/k8s/DeploymentStrategy.go new file mode 100644 index 000000000..a2a83ad33 --- /dev/null +++ b/pods/imports/k8s/DeploymentStrategy.go @@ -0,0 +1,15 @@ +package k8s + +// DeploymentStrategy describes how to replace existing pods with new ones. +type DeploymentStrategy struct { + // Rolling update config params. + // + // Present only if DeploymentStrategyType = RollingUpdate. + RollingUpdate *RollingUpdateDeployment `field:"optional" json:"rollingUpdate" yaml:"rollingUpdate"` + // Type of deployment. + // + // Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // Default: RollingUpdate. + // + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/DeviceAttributeV1Alpha3.go b/pods/imports/k8s/DeviceAttributeV1Alpha3.go new file mode 100644 index 000000000..d337d95e2 --- /dev/null +++ b/pods/imports/k8s/DeviceAttributeV1Alpha3.go @@ -0,0 +1,15 @@ +package k8s + +// DeviceAttribute must have exactly one field set. +type DeviceAttributeV1Alpha3 struct { + // BoolValue is a true/false value. + Bool *bool `field:"optional" json:"bool" yaml:"bool"` + // IntValue is a number. + Int *float64 `field:"optional" json:"int" yaml:"int"` + // StringValue is a string. + // + // Must not be longer than 64 characters. + String *string `field:"optional" json:"string" yaml:"string"` + // VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters. + Version *string `field:"optional" json:"version" yaml:"version"` +} diff --git a/pods/imports/k8s/DeviceAttributeV1Beta1.go b/pods/imports/k8s/DeviceAttributeV1Beta1.go new file mode 100644 index 000000000..2c3816dff --- /dev/null +++ b/pods/imports/k8s/DeviceAttributeV1Beta1.go @@ -0,0 +1,15 @@ +package k8s + +// DeviceAttribute must have exactly one field set. +type DeviceAttributeV1Beta1 struct { + // BoolValue is a true/false value. + Bool *bool `field:"optional" json:"bool" yaml:"bool"` + // IntValue is a number. + Int *float64 `field:"optional" json:"int" yaml:"int"` + // StringValue is a string. + // + // Must not be longer than 64 characters. + String *string `field:"optional" json:"string" yaml:"string"` + // VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters. + Version *string `field:"optional" json:"version" yaml:"version"` +} diff --git a/pods/imports/k8s/DeviceCapacityV1Beta1.go b/pods/imports/k8s/DeviceCapacityV1Beta1.go new file mode 100644 index 000000000..eedd6450b --- /dev/null +++ b/pods/imports/k8s/DeviceCapacityV1Beta1.go @@ -0,0 +1,7 @@ +package k8s + +// DeviceCapacity describes a quantity associated with a device. +type DeviceCapacityV1Beta1 struct { + // Value defines how much of a certain device capacity is available. + Value Quantity `field:"required" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go b/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go new file mode 100644 index 000000000..3851cb23f --- /dev/null +++ b/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go @@ -0,0 +1,11 @@ +package k8s + +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim. +type DeviceClaimConfigurationV1Alpha3 struct { + // Opaque provides driver-specific configuration parameters. + Opaque *OpaqueDeviceConfigurationV1Alpha3 `field:"optional" json:"opaque" yaml:"opaque"` + // Requests lists the names of requests where the configuration applies. + // + // If empty, it applies to all requests. + Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go b/pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go new file mode 100644 index 000000000..cbe950054 --- /dev/null +++ b/pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go @@ -0,0 +1,11 @@ +package k8s + +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim. +type DeviceClaimConfigurationV1Beta1 struct { + // Opaque provides driver-specific configuration parameters. + Opaque *OpaqueDeviceConfigurationV1Beta1 `field:"optional" json:"opaque" yaml:"opaque"` + // Requests lists the names of requests where the configuration applies. + // + // If empty, it applies to all requests. + Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/DeviceClaimV1Alpha3.go b/pods/imports/k8s/DeviceClaimV1Alpha3.go new file mode 100644 index 000000000..d65661f50 --- /dev/null +++ b/pods/imports/k8s/DeviceClaimV1Alpha3.go @@ -0,0 +1,15 @@ +package k8s + +// DeviceClaim defines how to request devices with a ResourceClaim. +type DeviceClaimV1Alpha3 struct { + // This field holds configuration for multiple potential drivers which could satisfy requests in this claim. + // + // It is ignored while allocating the claim. + Config *[]*DeviceClaimConfigurationV1Alpha3 `field:"optional" json:"config" yaml:"config"` + // These constraints must be satisfied by the set of devices that get allocated for the claim. + Constraints *[]*DeviceConstraintV1Alpha3 `field:"optional" json:"constraints" yaml:"constraints"` + // Requests represent individual requests for distinct devices which must all be satisfied. + // + // If empty, nothing needs to be allocated. + Requests *[]*DeviceRequestV1Alpha3 `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/DeviceClaimV1Beta1.go b/pods/imports/k8s/DeviceClaimV1Beta1.go new file mode 100644 index 000000000..8853d071e --- /dev/null +++ b/pods/imports/k8s/DeviceClaimV1Beta1.go @@ -0,0 +1,15 @@ +package k8s + +// DeviceClaim defines how to request devices with a ResourceClaim. +type DeviceClaimV1Beta1 struct { + // This field holds configuration for multiple potential drivers which could satisfy requests in this claim. + // + // It is ignored while allocating the claim. + Config *[]*DeviceClaimConfigurationV1Beta1 `field:"optional" json:"config" yaml:"config"` + // These constraints must be satisfied by the set of devices that get allocated for the claim. + Constraints *[]*DeviceConstraintV1Beta1 `field:"optional" json:"constraints" yaml:"constraints"` + // Requests represent individual requests for distinct devices which must all be satisfied. + // + // If empty, nothing needs to be allocated. + Requests *[]*DeviceRequestV1Beta1 `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go b/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go new file mode 100644 index 000000000..0e5c08c61 --- /dev/null +++ b/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go @@ -0,0 +1,7 @@ +package k8s + +// DeviceClassConfiguration is used in DeviceClass. +type DeviceClassConfigurationV1Alpha3 struct { + // Opaque provides driver-specific configuration parameters. + Opaque *OpaqueDeviceConfigurationV1Alpha3 `field:"optional" json:"opaque" yaml:"opaque"` +} diff --git a/pods/imports/k8s/DeviceClassConfigurationV1Beta1.go b/pods/imports/k8s/DeviceClassConfigurationV1Beta1.go new file mode 100644 index 000000000..adc171ed7 --- /dev/null +++ b/pods/imports/k8s/DeviceClassConfigurationV1Beta1.go @@ -0,0 +1,7 @@ +package k8s + +// DeviceClassConfiguration is used in DeviceClass. +type DeviceClassConfigurationV1Beta1 struct { + // Opaque provides driver-specific configuration parameters. + Opaque *OpaqueDeviceConfigurationV1Beta1 `field:"optional" json:"opaque" yaml:"opaque"` +} diff --git a/pods/imports/k8s/DeviceClassSpecV1Alpha3.go b/pods/imports/k8s/DeviceClassSpecV1Alpha3.go new file mode 100644 index 000000000..d6c4a3bd6 --- /dev/null +++ b/pods/imports/k8s/DeviceClassSpecV1Alpha3.go @@ -0,0 +1,13 @@ +package k8s + +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it. +type DeviceClassSpecV1Alpha3 struct { + // Config defines configuration parameters that apply to each device that is claimed via this class. + // + // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver. + // + // They are passed to the driver, but are not considered while allocating the claim. + Config *[]*DeviceClassConfigurationV1Alpha3 `field:"optional" json:"config" yaml:"config"` + // Each selector must be satisfied by a device which is claimed via this class. + Selectors *[]*DeviceSelectorV1Alpha3 `field:"optional" json:"selectors" yaml:"selectors"` +} diff --git a/pods/imports/k8s/DeviceClassSpecV1Beta1.go b/pods/imports/k8s/DeviceClassSpecV1Beta1.go new file mode 100644 index 000000000..ee3d201f1 --- /dev/null +++ b/pods/imports/k8s/DeviceClassSpecV1Beta1.go @@ -0,0 +1,13 @@ +package k8s + +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it. +type DeviceClassSpecV1Beta1 struct { + // Config defines configuration parameters that apply to each device that is claimed via this class. + // + // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver. + // + // They are passed to the driver, but are not considered while allocating the claim. + Config *[]*DeviceClassConfigurationV1Beta1 `field:"optional" json:"config" yaml:"config"` + // Each selector must be satisfied by a device which is claimed via this class. + Selectors *[]*DeviceSelectorV1Beta1 `field:"optional" json:"selectors" yaml:"selectors"` +} diff --git a/pods/imports/k8s/DeviceConstraintV1Alpha3.go b/pods/imports/k8s/DeviceConstraintV1Alpha3.go new file mode 100644 index 000000000..8925bdb95 --- /dev/null +++ b/pods/imports/k8s/DeviceConstraintV1Alpha3.go @@ -0,0 +1,15 @@ +package k8s + +// DeviceConstraint must have exactly one field set besides Requests. +type DeviceConstraintV1Alpha3 struct { + // MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices. + // + // For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen. + // + // Must include the domain qualifier. + MatchAttribute *string `field:"optional" json:"matchAttribute" yaml:"matchAttribute"` + // Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. + // + // If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim. + Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/DeviceConstraintV1Beta1.go b/pods/imports/k8s/DeviceConstraintV1Beta1.go new file mode 100644 index 000000000..fd400974c --- /dev/null +++ b/pods/imports/k8s/DeviceConstraintV1Beta1.go @@ -0,0 +1,15 @@ +package k8s + +// DeviceConstraint must have exactly one field set besides Requests. +type DeviceConstraintV1Beta1 struct { + // MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices. + // + // For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen. + // + // Must include the domain qualifier. + MatchAttribute *string `field:"optional" json:"matchAttribute" yaml:"matchAttribute"` + // Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. + // + // If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim. + Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/DeviceRequestV1Alpha3.go b/pods/imports/k8s/DeviceRequestV1Alpha3.go new file mode 100644 index 000000000..19d656c74 --- /dev/null +++ b/pods/imports/k8s/DeviceRequestV1Alpha3.go @@ -0,0 +1,47 @@ +package k8s + +// DeviceRequest is a request for devices required for a claim. +// +// This is typically a request for a single resource like a device, but can also ask for several identical devices. +// +// A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request. +type DeviceRequestV1Alpha3 struct { + // DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request. + // + // A class is required. Which classes are available depends on the cluster. + // + // Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference. + DeviceClassName *string `field:"required" json:"deviceClassName" yaml:"deviceClassName"` + // Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim. + // + // Must be a DNS label. + Name *string `field:"required" json:"name" yaml:"name"` + // AdminAccess indicates that this is a claim for administrative access to the device(s). + // + // Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations. + // + // This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled. + AdminAccess *bool `field:"optional" json:"adminAccess" yaml:"adminAccess"` + // AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:. + // + // - ExactCount: This request is for a specific number of devices. + // This is the default. The exact number is provided in the + // count field. + // + // - All: This request is for all of the matching devices in a pool. + // Allocation will fail if some devices are already allocated, + // unless adminAccess is requested. + // + // If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field. + // + // More modes may get added in the future. Clients must refuse to handle requests with unknown modes. + AllocationMode *string `field:"optional" json:"allocationMode" yaml:"allocationMode"` + // Count is used only when the count mode is "ExactCount". + // + // Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one. + Count *float64 `field:"optional" json:"count" yaml:"count"` + // Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. + // + // All selectors must be satisfied for a device to be considered. + Selectors *[]*DeviceSelectorV1Alpha3 `field:"optional" json:"selectors" yaml:"selectors"` +} diff --git a/pods/imports/k8s/DeviceRequestV1Beta1.go b/pods/imports/k8s/DeviceRequestV1Beta1.go new file mode 100644 index 000000000..0110fae09 --- /dev/null +++ b/pods/imports/k8s/DeviceRequestV1Beta1.go @@ -0,0 +1,47 @@ +package k8s + +// DeviceRequest is a request for devices required for a claim. +// +// This is typically a request for a single resource like a device, but can also ask for several identical devices. +// +// A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request. +type DeviceRequestV1Beta1 struct { + // DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request. + // + // A class is required. Which classes are available depends on the cluster. + // + // Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference. + DeviceClassName *string `field:"required" json:"deviceClassName" yaml:"deviceClassName"` + // Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim. + // + // Must be a DNS label. + Name *string `field:"required" json:"name" yaml:"name"` + // AdminAccess indicates that this is a claim for administrative access to the device(s). + // + // Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations. + // + // This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled. + AdminAccess *bool `field:"optional" json:"adminAccess" yaml:"adminAccess"` + // AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:. + // + // - ExactCount: This request is for a specific number of devices. + // This is the default. The exact number is provided in the + // count field. + // + // - All: This request is for all of the matching devices in a pool. + // Allocation will fail if some devices are already allocated, + // unless adminAccess is requested. + // + // If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field. + // + // More modes may get added in the future. Clients must refuse to handle requests with unknown modes. + AllocationMode *string `field:"optional" json:"allocationMode" yaml:"allocationMode"` + // Count is used only when the count mode is "ExactCount". + // + // Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one. + Count *float64 `field:"optional" json:"count" yaml:"count"` + // Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. + // + // All selectors must be satisfied for a device to be considered. + Selectors *[]*DeviceSelectorV1Beta1 `field:"optional" json:"selectors" yaml:"selectors"` +} diff --git a/pods/imports/k8s/DeviceSelectorV1Alpha3.go b/pods/imports/k8s/DeviceSelectorV1Alpha3.go new file mode 100644 index 000000000..93cf12484 --- /dev/null +++ b/pods/imports/k8s/DeviceSelectorV1Alpha3.go @@ -0,0 +1,7 @@ +package k8s + +// DeviceSelector must have exactly one field set. +type DeviceSelectorV1Alpha3 struct { + // CEL contains a CEL expression for selecting a device. + Cel *CelDeviceSelectorV1Alpha3 `field:"optional" json:"cel" yaml:"cel"` +} diff --git a/pods/imports/k8s/DeviceSelectorV1Beta1.go b/pods/imports/k8s/DeviceSelectorV1Beta1.go new file mode 100644 index 000000000..f16954af5 --- /dev/null +++ b/pods/imports/k8s/DeviceSelectorV1Beta1.go @@ -0,0 +1,7 @@ +package k8s + +// DeviceSelector must have exactly one field set. +type DeviceSelectorV1Beta1 struct { + // CEL contains a CEL expression for selecting a device. + Cel *CelDeviceSelectorV1Beta1 `field:"optional" json:"cel" yaml:"cel"` +} diff --git a/pods/imports/k8s/DeviceV1Alpha3.go b/pods/imports/k8s/DeviceV1Alpha3.go new file mode 100644 index 000000000..f70ac9de6 --- /dev/null +++ b/pods/imports/k8s/DeviceV1Alpha3.go @@ -0,0 +1,13 @@ +package k8s + +// Device represents one individual hardware instance that can be selected based on its attributes. +// +// Besides the name, exactly one field must be set. +type DeviceV1Alpha3 struct { + // Name is unique identifier among all devices managed by the driver in the pool. + // + // It must be a DNS label. + Name *string `field:"required" json:"name" yaml:"name"` + // Basic defines one device instance. + Basic *BasicDeviceV1Alpha3 `field:"optional" json:"basic" yaml:"basic"` +} diff --git a/pods/imports/k8s/DeviceV1Beta1.go b/pods/imports/k8s/DeviceV1Beta1.go new file mode 100644 index 000000000..3cfc65eb2 --- /dev/null +++ b/pods/imports/k8s/DeviceV1Beta1.go @@ -0,0 +1,13 @@ +package k8s + +// Device represents one individual hardware instance that can be selected based on its attributes. +// +// Besides the name, exactly one field must be set. +type DeviceV1Beta1 struct { + // Name is unique identifier among all devices managed by the driver in the pool. + // + // It must be a DNS label. + Name *string `field:"required" json:"name" yaml:"name"` + // Basic defines one device instance. + Basic *BasicDeviceV1Beta1 `field:"optional" json:"basic" yaml:"basic"` +} diff --git a/pods/imports/k8s/DownwardApiProjection.go b/pods/imports/k8s/DownwardApiProjection.go new file mode 100644 index 000000000..68b48cf97 --- /dev/null +++ b/pods/imports/k8s/DownwardApiProjection.go @@ -0,0 +1,9 @@ +package k8s + +// Represents downward API info for projecting into a projected volume. +// +// Note that this is identical to a downwardAPI volume source without the default mode. +type DownwardApiProjection struct { + // Items is a list of DownwardAPIVolume file. + Items *[]*DownwardApiVolumeFile `field:"optional" json:"items" yaml:"items"` +} diff --git a/pods/imports/k8s/DownwardApiVolumeFile.go b/pods/imports/k8s/DownwardApiVolumeFile.go new file mode 100644 index 000000000..2191aa25b --- /dev/null +++ b/pods/imports/k8s/DownwardApiVolumeFile.go @@ -0,0 +1,17 @@ +package k8s + +// DownwardAPIVolumeFile represents information to create the file containing the pod field. +type DownwardApiVolumeFile struct { + // Required: Path is the relative path name of the file to be created. + // + // Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + Path *string `field:"required" json:"path" yaml:"path"` + // Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. + FieldRef *ObjectFieldSelector `field:"optional" json:"fieldRef" yaml:"fieldRef"` + // Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + // + // YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + Mode *float64 `field:"optional" json:"mode" yaml:"mode"` + // Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + ResourceFieldRef *ResourceFieldSelector `field:"optional" json:"resourceFieldRef" yaml:"resourceFieldRef"` +} diff --git a/pods/imports/k8s/DownwardApiVolumeSource.go b/pods/imports/k8s/DownwardApiVolumeSource.go new file mode 100644 index 000000000..89f15f92a --- /dev/null +++ b/pods/imports/k8s/DownwardApiVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// DownwardAPIVolumeSource represents a volume containing downward API info. +// +// Downward API volumes support ownership management and SELinux relabeling. +type DownwardApiVolumeSource struct { + // Optional: mode bits to use on created files by default. + // + // Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + // Default: 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + // + DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` + // Items is a list of downward API volume file. + Items *[]*DownwardApiVolumeFile `field:"optional" json:"items" yaml:"items"` +} diff --git a/pods/imports/k8s/EmptyDirVolumeSource.go b/pods/imports/k8s/EmptyDirVolumeSource.go new file mode 100644 index 000000000..2f8adf05f --- /dev/null +++ b/pods/imports/k8s/EmptyDirVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// Represents an empty directory for a pod. +// +// Empty directory volumes support ownership management and SELinux relabeling. +type EmptyDirVolumeSource struct { + // medium represents what type of storage medium should back this directory. + // + // The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + Medium *string `field:"optional" json:"medium" yaml:"medium"` + // sizeLimit is the total amount of local storage required for this EmptyDir volume. + // + // The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + SizeLimit Quantity `field:"optional" json:"sizeLimit" yaml:"sizeLimit"` +} diff --git a/pods/imports/k8s/Endpoint.go b/pods/imports/k8s/Endpoint.go new file mode 100644 index 000000000..6c96e0684 --- /dev/null +++ b/pods/imports/k8s/Endpoint.go @@ -0,0 +1,29 @@ +package k8s + +// Endpoint represents a single logical "backend" implementing a service. +type Endpoint struct { + // addresses of this endpoint. + // + // The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267 + Addresses *[]*string `field:"required" json:"addresses" yaml:"addresses"` + // conditions contains information about the current status of the endpoint. + Conditions *EndpointConditions `field:"optional" json:"conditions" yaml:"conditions"` + // deprecatedTopology contains topology information part of the v1beta1 API. + // + // This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead. + DeprecatedTopology *map[string]*string `field:"optional" json:"deprecatedTopology" yaml:"deprecatedTopology"` + // hints contains information associated with how an endpoint should be consumed. + Hints *EndpointHints `field:"optional" json:"hints" yaml:"hints"` + // hostname of this endpoint. + // + // This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation. + Hostname *string `field:"optional" json:"hostname" yaml:"hostname"` + // nodeName represents the name of the Node hosting this endpoint. + // + // This can be used to determine endpoints local to a Node. + NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` + // targetRef is a reference to a Kubernetes object that represents this endpoint. + TargetRef *ObjectReference `field:"optional" json:"targetRef" yaml:"targetRef"` + // zone is the name of the Zone this endpoint exists in. + Zone *string `field:"optional" json:"zone" yaml:"zone"` +} diff --git a/pods/imports/k8s/EndpointAddress.go b/pods/imports/k8s/EndpointAddress.go new file mode 100644 index 000000000..025b6db2a --- /dev/null +++ b/pods/imports/k8s/EndpointAddress.go @@ -0,0 +1,17 @@ +package k8s + +// EndpointAddress is a tuple that describes single IP address. +type EndpointAddress struct { + // The IP of this endpoint. + // + // May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16). + Ip *string `field:"required" json:"ip" yaml:"ip"` + // The Hostname of this endpoint. + Hostname *string `field:"optional" json:"hostname" yaml:"hostname"` + // Optional: Node hosting this endpoint. + // + // This can be used to determine endpoints local to a node. + NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` + // Reference to object providing the endpoint. + TargetRef *ObjectReference `field:"optional" json:"targetRef" yaml:"targetRef"` +} diff --git a/pods/imports/k8s/EndpointConditions.go b/pods/imports/k8s/EndpointConditions.go new file mode 100644 index 000000000..325ea4125 --- /dev/null +++ b/pods/imports/k8s/EndpointConditions.go @@ -0,0 +1,17 @@ +package k8s + +// EndpointConditions represents the current condition of an endpoint. +type EndpointConditions struct { + // ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. + // + // A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag. + Ready *bool `field:"optional" json:"ready" yaml:"ready"` + // serving is identical to ready except that it is set regardless of the terminating state of endpoints. + // + // This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. + Serving *bool `field:"optional" json:"serving" yaml:"serving"` + // terminating indicates that this endpoint is terminating. + // + // A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. + Terminating *bool `field:"optional" json:"terminating" yaml:"terminating"` +} diff --git a/pods/imports/k8s/EndpointHints.go b/pods/imports/k8s/EndpointHints.go new file mode 100644 index 000000000..d7b763365 --- /dev/null +++ b/pods/imports/k8s/EndpointHints.go @@ -0,0 +1,7 @@ +package k8s + +// EndpointHints provides hints describing how an endpoint should be consumed. +type EndpointHints struct { + // forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. + ForZones *[]*ForZone `field:"optional" json:"forZones" yaml:"forZones"` +} diff --git a/pods/imports/k8s/EndpointPort.go b/pods/imports/k8s/EndpointPort.go new file mode 100644 index 000000000..1ce62b6b1 --- /dev/null +++ b/pods/imports/k8s/EndpointPort.go @@ -0,0 +1,30 @@ +package k8s + +// EndpointPort is a tuple that describes a single port. +type EndpointPort struct { + // The port number of the endpoint. + Port *float64 `field:"required" json:"port" yaml:"port"` + // The application protocol for this port. + // + // This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: + // + // * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). + // + // * Kubernetes-defined prefixed names: + // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- + // * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 + // * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 + // + // * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. + AppProtocol *string `field:"optional" json:"appProtocol" yaml:"appProtocol"` + // The name of this port. + // + // This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined. + Name *string `field:"optional" json:"name" yaml:"name"` + // The IP protocol for this port. + // + // Must be UDP, TCP, or SCTP. Default is TCP. + // Default: TCP. + // + Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` +} diff --git a/pods/imports/k8s/EndpointSubset.go b/pods/imports/k8s/EndpointSubset.go new file mode 100644 index 000000000..2ad7646c5 --- /dev/null +++ b/pods/imports/k8s/EndpointSubset.go @@ -0,0 +1,25 @@ +package k8s + +// EndpointSubset is a group of addresses with a common set of ports. +// +// The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given: +// +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// +// The resulting set of endpoints can be viewed as: +// +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +type EndpointSubset struct { + // IP addresses which offer the related ports that are marked as ready. + // + // These endpoints should be considered safe for load balancers and clients to utilize. + Addresses *[]*EndpointAddress `field:"optional" json:"addresses" yaml:"addresses"` + // IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check. + NotReadyAddresses *[]*EndpointAddress `field:"optional" json:"notReadyAddresses" yaml:"notReadyAddresses"` + // Port numbers available on the related IP addresses. + Ports *[]*EndpointPort `field:"optional" json:"ports" yaml:"ports"` +} diff --git a/pods/imports/k8s/EnvFromSource.go b/pods/imports/k8s/EnvFromSource.go new file mode 100644 index 000000000..41b7276a5 --- /dev/null +++ b/pods/imports/k8s/EnvFromSource.go @@ -0,0 +1,13 @@ +package k8s + +// EnvFromSource represents the source of a set of ConfigMaps. +type EnvFromSource struct { + // The ConfigMap to select from. + ConfigMapRef *ConfigMapEnvSource `field:"optional" json:"configMapRef" yaml:"configMapRef"` + // An optional identifier to prepend to each key in the ConfigMap. + // + // Must be a C_IDENTIFIER. + Prefix *string `field:"optional" json:"prefix" yaml:"prefix"` + // The Secret to select from. + SecretRef *SecretEnvSource `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/EnvVar.go b/pods/imports/k8s/EnvVar.go new file mode 100644 index 000000000..c409353f4 --- /dev/null +++ b/pods/imports/k8s/EnvVar.go @@ -0,0 +1,19 @@ +package k8s + +// EnvVar represents an environment variable present in a Container. +type EnvVar struct { + // Name of the environment variable. + // + // Must be a C_IDENTIFIER. + Name *string `field:"required" json:"name" yaml:"name"` + // Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. + // + // If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + // Default: . + // + Value *string `field:"optional" json:"value" yaml:"value"` + // Source for the environment variable's value. + // + // Cannot be used if value is not empty. + ValueFrom *EnvVarSource `field:"optional" json:"valueFrom" yaml:"valueFrom"` +} diff --git a/pods/imports/k8s/EnvVarSource.go b/pods/imports/k8s/EnvVarSource.go new file mode 100644 index 000000000..a16fa2f58 --- /dev/null +++ b/pods/imports/k8s/EnvVarSource.go @@ -0,0 +1,13 @@ +package k8s + +// EnvVarSource represents a source for the value of an EnvVar. +type EnvVarSource struct { + // Selects a key of a ConfigMap. + ConfigMapKeyRef *ConfigMapKeySelector `field:"optional" json:"configMapKeyRef" yaml:"configMapKeyRef"` + // Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + FieldRef *ObjectFieldSelector `field:"optional" json:"fieldRef" yaml:"fieldRef"` + // Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + ResourceFieldRef *ResourceFieldSelector `field:"optional" json:"resourceFieldRef" yaml:"resourceFieldRef"` + // Selects a key of a secret in the pod's namespace. + SecretKeyRef *SecretKeySelector `field:"optional" json:"secretKeyRef" yaml:"secretKeyRef"` +} diff --git a/pods/imports/k8s/EphemeralContainer.go b/pods/imports/k8s/EphemeralContainer.go new file mode 100644 index 000000000..985a6c198 --- /dev/null +++ b/pods/imports/k8s/EphemeralContainer.go @@ -0,0 +1,109 @@ +package k8s + +// An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. +// +// Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation. +// +// To add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted. +type EphemeralContainer struct { + // Name of the ephemeral container specified as a DNS_LABEL. + // + // This name must be unique among all containers, init containers and ephemeral containers. + Name *string `field:"required" json:"name" yaml:"name"` + // Arguments to the entrypoint. + // + // The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Args *[]*string `field:"optional" json:"args" yaml:"args"` + // Entrypoint array. + // + // Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Command *[]*string `field:"optional" json:"command" yaml:"command"` + // List of environment variables to set in the container. + // + // Cannot be updated. + Env *[]*EnvVar `field:"optional" json:"env" yaml:"env"` + // List of sources to populate environment variables in the container. + // + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + EnvFrom *[]*EnvFromSource `field:"optional" json:"envFrom" yaml:"envFrom"` + // Container image name. + // + // More info: https://kubernetes.io/docs/concepts/containers/images + Image *string `field:"optional" json:"image" yaml:"image"` + // Image pull policy. + // + // One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // Default: Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // + ImagePullPolicy *string `field:"optional" json:"imagePullPolicy" yaml:"imagePullPolicy"` + // Lifecycle is not allowed for ephemeral containers. + Lifecycle *Lifecycle `field:"optional" json:"lifecycle" yaml:"lifecycle"` + // Probes are not allowed for ephemeral containers. + LivenessProbe *Probe `field:"optional" json:"livenessProbe" yaml:"livenessProbe"` + // Ports are not allowed for ephemeral containers. + Ports *[]*ContainerPort `field:"optional" json:"ports" yaml:"ports"` + // Probes are not allowed for ephemeral containers. + ReadinessProbe *Probe `field:"optional" json:"readinessProbe" yaml:"readinessProbe"` + // Resources resize policy for the container. + ResizePolicy *[]*ContainerResizePolicy `field:"optional" json:"resizePolicy" yaml:"resizePolicy"` + // Resources are not allowed for ephemeral containers. + // + // Ephemeral containers use spare resources already allocated to the pod. + Resources *ResourceRequirements `field:"optional" json:"resources" yaml:"resources"` + // Restart policy for the container to manage the restart behavior of each container within a pod. + // + // This may only be set for init containers. You cannot set this field on ephemeral containers. + RestartPolicy *string `field:"optional" json:"restartPolicy" yaml:"restartPolicy"` + // Optional: SecurityContext defines the security options the ephemeral container should be run with. + // + // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. + SecurityContext *SecurityContext `field:"optional" json:"securityContext" yaml:"securityContext"` + // Probes are not allowed for ephemeral containers. + StartupProbe *Probe `field:"optional" json:"startupProbe" yaml:"startupProbe"` + // Whether this container should allocate a buffer for stdin in the container runtime. + // + // If this is not set, reads from stdin in the container will always result in EOF. Default is false. + // Default: false. + // + Stdin *bool `field:"optional" json:"stdin" yaml:"stdin"` + // Whether the container runtime should close the stdin channel after it has been opened by a single attach. + // + // When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + // Default: false. + // + StdinOnce *bool `field:"optional" json:"stdinOnce" yaml:"stdinOnce"` + // If set, the name of the container from PodSpec that this ephemeral container targets. + // + // The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec. + // + // The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined. + TargetContainerName *string `field:"optional" json:"targetContainerName" yaml:"targetContainerName"` + // Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. + // + // Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. + // Default: dev/termination-log. Cannot be updated. + // + TerminationMessagePath *string `field:"optional" json:"terminationMessagePath" yaml:"terminationMessagePath"` + // Indicate how the termination message should be populated. + // + // File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + // Default: File. Cannot be updated. + // + TerminationMessagePolicy *string `field:"optional" json:"terminationMessagePolicy" yaml:"terminationMessagePolicy"` + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // + // Default is false. + // Default: false. + // + Tty *bool `field:"optional" json:"tty" yaml:"tty"` + // volumeDevices is the list of block devices to be used by the container. + VolumeDevices *[]*VolumeDevice `field:"optional" json:"volumeDevices" yaml:"volumeDevices"` + // Pod volumes to mount into the container's filesystem. + // + // Subpath mounts are not allowed for ephemeral containers. Cannot be updated. + VolumeMounts *[]*VolumeMount `field:"optional" json:"volumeMounts" yaml:"volumeMounts"` + // Container's working directory. + // + // If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + WorkingDir *string `field:"optional" json:"workingDir" yaml:"workingDir"` +} diff --git a/pods/imports/k8s/EphemeralVolumeSource.go b/pods/imports/k8s/EphemeralVolumeSource.go new file mode 100644 index 000000000..ab11eab0b --- /dev/null +++ b/pods/imports/k8s/EphemeralVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// Represents an ephemeral volume that is handled by a normal storage driver. +type EphemeralVolumeSource struct { + // Will be used to create a stand-alone PVC to provision the volume. + // + // The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). + // + // An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. + // + // This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. + // + // Required, must not be nil. + VolumeClaimTemplate *PersistentVolumeClaimTemplate `field:"optional" json:"volumeClaimTemplate" yaml:"volumeClaimTemplate"` +} diff --git a/pods/imports/k8s/EventSeries.go b/pods/imports/k8s/EventSeries.go new file mode 100644 index 000000000..ac43d5b7e --- /dev/null +++ b/pods/imports/k8s/EventSeries.go @@ -0,0 +1,13 @@ +package k8s + +import ( + "time" +) + +// EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. How often to update the EventSeries is up to the event reporters. The default event reporter in "k8s.io/client-go/tools/events/event_broadcaster.go" shows how this struct is updated on heartbeats and can guide customized reporter implementations. +type EventSeries struct { + // count is the number of occurrences in this series up to the last heartbeat time. + Count *float64 `field:"required" json:"count" yaml:"count"` + // lastObservedTime is the time when last Event from the series was seen before last heartbeat. + LastObservedTime *time.Time `field:"required" json:"lastObservedTime" yaml:"lastObservedTime"` +} diff --git a/pods/imports/k8s/EventSource.go b/pods/imports/k8s/EventSource.go new file mode 100644 index 000000000..49e4283bf --- /dev/null +++ b/pods/imports/k8s/EventSource.go @@ -0,0 +1,9 @@ +package k8s + +// EventSource contains information for an event. +type EventSource struct { + // Component from which the event is generated. + Component *string `field:"optional" json:"component" yaml:"component"` + // Node name on which the event is generated. + Host *string `field:"optional" json:"host" yaml:"host"` +} diff --git a/pods/imports/k8s/ExecAction.go b/pods/imports/k8s/ExecAction.go new file mode 100644 index 000000000..e6ebc1726 --- /dev/null +++ b/pods/imports/k8s/ExecAction.go @@ -0,0 +1,9 @@ +package k8s + +// ExecAction describes a "run in container" action. +type ExecAction struct { + // Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. + // + // The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + Command *[]*string `field:"optional" json:"command" yaml:"command"` +} diff --git a/pods/imports/k8s/ExemptPriorityLevelConfiguration.go b/pods/imports/k8s/ExemptPriorityLevelConfiguration.go new file mode 100644 index 000000000..552800bb0 --- /dev/null +++ b/pods/imports/k8s/ExemptPriorityLevelConfiguration.go @@ -0,0 +1,21 @@ +package k8s + +// ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. +// +// In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. +type ExemptPriorityLevelConfiguration struct { + // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. + // + // This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. + // + // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) + LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` + // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. + // + // This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: + // + // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) + // + // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. + NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` +} diff --git a/pods/imports/k8s/ExternalDocumentation.go b/pods/imports/k8s/ExternalDocumentation.go new file mode 100644 index 000000000..f0b57755d --- /dev/null +++ b/pods/imports/k8s/ExternalDocumentation.go @@ -0,0 +1,7 @@ +package k8s + +// ExternalDocumentation allows referencing an external resource for extended documentation. +type ExternalDocumentation struct { + Description *string `field:"optional" json:"description" yaml:"description"` + Url *string `field:"optional" json:"url" yaml:"url"` +} diff --git a/pods/imports/k8s/ExternalMetricSourceV2.go b/pods/imports/k8s/ExternalMetricSourceV2.go new file mode 100644 index 000000000..5caf70507 --- /dev/null +++ b/pods/imports/k8s/ExternalMetricSourceV2.go @@ -0,0 +1,9 @@ +package k8s + +// ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). +type ExternalMetricSourceV2 struct { + // metric identifies the target metric by name and selector. + Metric *MetricIdentifierV2 `field:"required" json:"metric" yaml:"metric"` + // target specifies the target value for the given metric. + Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` +} diff --git a/pods/imports/k8s/FcVolumeSource.go b/pods/imports/k8s/FcVolumeSource.go new file mode 100644 index 000000000..64411ad45 --- /dev/null +++ b/pods/imports/k8s/FcVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Represents a Fibre Channel volume. +// +// Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling. +type FcVolumeSource struct { + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // lun is Optional: FC target lun number. + Lun *float64 `field:"optional" json:"lun" yaml:"lun"` + // readOnly is Optional: Defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // targetWWNs is Optional: FC target worldwide names (WWNs). + TargetWwNs *[]*string `field:"optional" json:"targetWwNs" yaml:"targetWwNs"` + // wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + Wwids *[]*string `field:"optional" json:"wwids" yaml:"wwids"` +} diff --git a/pods/imports/k8s/FieldSelectorAttributes.go b/pods/imports/k8s/FieldSelectorAttributes.go new file mode 100644 index 000000000..2658000e1 --- /dev/null +++ b/pods/imports/k8s/FieldSelectorAttributes.go @@ -0,0 +1,15 @@ +package k8s + +// FieldSelectorAttributes indicates a field limited access. +// +// Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid. +type FieldSelectorAttributes struct { + // rawSelector is the serialization of a field selector that would be included in a query parameter. + // + // Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present. + RawSelector *string `field:"optional" json:"rawSelector" yaml:"rawSelector"` + // requirements is the parsed interpretation of a field selector. + // + // All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood. + Requirements *[]*FieldSelectorRequirement `field:"optional" json:"requirements" yaml:"requirements"` +} diff --git a/pods/imports/k8s/FieldSelectorRequirement.go b/pods/imports/k8s/FieldSelectorRequirement.go new file mode 100644 index 000000000..808fa03f6 --- /dev/null +++ b/pods/imports/k8s/FieldSelectorRequirement.go @@ -0,0 +1,15 @@ +package k8s + +// FieldSelectorRequirement is a selector that contains values, a key, and an operator that relates the key and values. +type FieldSelectorRequirement struct { + // key is the field selector key that the requirement applies to. + Key *string `field:"required" json:"key" yaml:"key"` + // operator represents a key's relationship to a set of values. + // + // Valid operators are In, NotIn, Exists, DoesNotExist. The list of operators may grow in the future. + Operator *string `field:"required" json:"operator" yaml:"operator"` + // values is an array of string values. + // + // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. + Values *[]*string `field:"optional" json:"values" yaml:"values"` +} diff --git a/pods/imports/k8s/FlexPersistentVolumeSource.go b/pods/imports/k8s/FlexPersistentVolumeSource.go new file mode 100644 index 000000000..8aa5b1153 --- /dev/null +++ b/pods/imports/k8s/FlexPersistentVolumeSource.go @@ -0,0 +1,21 @@ +package k8s + +// FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin. +type FlexPersistentVolumeSource struct { + // driver is the name of the driver to use for this volume. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // fsType is the Filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // options is Optional: this field holds extra command options if any. + Options *map[string]*string `field:"optional" json:"options" yaml:"options"` + // readOnly is Optional: defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. + // + // This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/FlexVolumeSource.go b/pods/imports/k8s/FlexVolumeSource.go new file mode 100644 index 000000000..17a5d612a --- /dev/null +++ b/pods/imports/k8s/FlexVolumeSource.go @@ -0,0 +1,21 @@ +package k8s + +// FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. +type FlexVolumeSource struct { + // driver is the name of the driver to use for this volume. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // options is Optional: this field holds extra command options if any. + Options *map[string]*string `field:"optional" json:"options" yaml:"options"` + // readOnly is Optional: defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. + // + // This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/FlockerVolumeSource.go b/pods/imports/k8s/FlockerVolumeSource.go new file mode 100644 index 000000000..7da9c18e1 --- /dev/null +++ b/pods/imports/k8s/FlockerVolumeSource.go @@ -0,0 +1,13 @@ +package k8s + +// Represents a Flocker volume mounted by the Flocker agent. +// +// One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling. +type FlockerVolumeSource struct { + // datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated. + DatasetName *string `field:"optional" json:"datasetName" yaml:"datasetName"` + // datasetUUID is the UUID of the dataset. + // + // This is unique identifier of a Flocker dataset. + DatasetUuid *string `field:"optional" json:"datasetUuid" yaml:"datasetUuid"` +} diff --git a/pods/imports/k8s/FlowDistinguisherMethod.go b/pods/imports/k8s/FlowDistinguisherMethod.go new file mode 100644 index 000000000..7cf8e6a0a --- /dev/null +++ b/pods/imports/k8s/FlowDistinguisherMethod.go @@ -0,0 +1,9 @@ +package k8s + +// FlowDistinguisherMethod specifies the method of a flow distinguisher. +type FlowDistinguisherMethod struct { + // `type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". + // + // Required. + Type *string `field:"required" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/FlowSchemaSpec.go b/pods/imports/k8s/FlowSchemaSpec.go new file mode 100644 index 000000000..6a375e077 --- /dev/null +++ b/pods/imports/k8s/FlowSchemaSpec.go @@ -0,0 +1,21 @@ +package k8s + +// FlowSchemaSpec describes how the FlowSchema's specification looks like. +type FlowSchemaSpec struct { + // `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. + // + // If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required. + PriorityLevelConfiguration *PriorityLevelConfigurationReference `field:"required" json:"priorityLevelConfiguration" yaml:"priorityLevelConfiguration"` + // `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. + // + // `nil` specifies that the distinguisher is disabled and thus will always be the empty string. + DistinguisherMethod *FlowDistinguisherMethod `field:"optional" json:"distinguisherMethod" yaml:"distinguisherMethod"` + // `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. + // + // The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. + MatchingPrecedence *float64 `field:"optional" json:"matchingPrecedence" yaml:"matchingPrecedence"` + // `rules` describes which requests will match this flow schema. + // + // This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. + Rules *[]*PolicyRulesWithSubjects `field:"optional" json:"rules" yaml:"rules"` +} diff --git a/pods/imports/k8s/ForZone.go b/pods/imports/k8s/ForZone.go new file mode 100644 index 000000000..6bd51ef6e --- /dev/null +++ b/pods/imports/k8s/ForZone.go @@ -0,0 +1,7 @@ +package k8s + +// ForZone provides information about which zones should consume this endpoint. +type ForZone struct { + // name represents the name of the zone. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/GcePersistentDiskVolumeSource.go b/pods/imports/k8s/GcePersistentDiskVolumeSource.go new file mode 100644 index 000000000..ed82af8e2 --- /dev/null +++ b/pods/imports/k8s/GcePersistentDiskVolumeSource.go @@ -0,0 +1,25 @@ +package k8s + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling. +type GcePersistentDiskVolumeSource struct { + // pdName is unique name of the PD resource in GCE. + // + // Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + PdName *string `field:"required" json:"pdName" yaml:"pdName"` + // fsType is filesystem type of the volume that you want to mount. + // + // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // partition is the partition in the volume that you want to mount. + // + // If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + Partition *float64 `field:"optional" json:"partition" yaml:"partition"` + // readOnly here will force the ReadOnly setting in VolumeMounts. + // + // Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // Default: false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/GitRepoVolumeSource.go b/pods/imports/k8s/GitRepoVolumeSource.go new file mode 100644 index 000000000..08a0dc0fe --- /dev/null +++ b/pods/imports/k8s/GitRepoVolumeSource.go @@ -0,0 +1,17 @@ +package k8s + +// Represents a volume that is populated with the contents of a git repository. +// +// Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling. +// +// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. +type GitRepoVolumeSource struct { + // repository is the URL. + Repository *string `field:"required" json:"repository" yaml:"repository"` + // directory is the target directory name. + // + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + Directory *string `field:"optional" json:"directory" yaml:"directory"` + // revision is the commit hash for the specified revision. + Revision *string `field:"optional" json:"revision" yaml:"revision"` +} diff --git a/pods/imports/k8s/GlusterfsPersistentVolumeSource.go b/pods/imports/k8s/GlusterfsPersistentVolumeSource.go new file mode 100644 index 000000000..e7258f767 --- /dev/null +++ b/pods/imports/k8s/GlusterfsPersistentVolumeSource.go @@ -0,0 +1,25 @@ +package k8s + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// +// Glusterfs volumes do not support ownership management or SELinux relabeling. +type GlusterfsPersistentVolumeSource struct { + // endpoints is the endpoint name that details Glusterfs topology. + // + // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + Endpoints *string `field:"required" json:"endpoints" yaml:"endpoints"` + // path is the Glusterfs volume path. + // + // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + Path *string `field:"required" json:"path" yaml:"path"` + // endpointsNamespace is the namespace that contains Glusterfs endpoint. + // + // If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + EndpointsNamespace *string `field:"optional" json:"endpointsNamespace" yaml:"endpointsNamespace"` + // readOnly here will force the Glusterfs volume to be mounted with read-only permissions. + // + // Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + // Default: false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/GlusterfsVolumeSource.go b/pods/imports/k8s/GlusterfsVolumeSource.go new file mode 100644 index 000000000..57ab21eec --- /dev/null +++ b/pods/imports/k8s/GlusterfsVolumeSource.go @@ -0,0 +1,21 @@ +package k8s + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// +// Glusterfs volumes do not support ownership management or SELinux relabeling. +type GlusterfsVolumeSource struct { + // endpoints is the endpoint name that details Glusterfs topology. + // + // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + Endpoints *string `field:"required" json:"endpoints" yaml:"endpoints"` + // path is the Glusterfs volume path. + // + // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + Path *string `field:"required" json:"path" yaml:"path"` + // readOnly here will force the Glusterfs volume to be mounted with read-only permissions. + // + // Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + // Default: false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/GroupVersionResourceV1Alpha1.go b/pods/imports/k8s/GroupVersionResourceV1Alpha1.go new file mode 100644 index 000000000..d97460cf2 --- /dev/null +++ b/pods/imports/k8s/GroupVersionResourceV1Alpha1.go @@ -0,0 +1,11 @@ +package k8s + +// The names of the group, the version, and the resource. +type GroupVersionResourceV1Alpha1 struct { + // The name of the group. + Group *string `field:"optional" json:"group" yaml:"group"` + // The name of the resource. + Resource *string `field:"optional" json:"resource" yaml:"resource"` + // The name of the version. + Version *string `field:"optional" json:"version" yaml:"version"` +} diff --git a/pods/imports/k8s/GrpcAction.go b/pods/imports/k8s/GrpcAction.go new file mode 100644 index 000000000..84d6e6552 --- /dev/null +++ b/pods/imports/k8s/GrpcAction.go @@ -0,0 +1,13 @@ +package k8s + +// GRPCAction specifies an action involving a GRPC service. +type GrpcAction struct { + // Port number of the gRPC service. + // + // Number must be in the range 1 to 65535. + Port *float64 `field:"required" json:"port" yaml:"port"` + // Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + // + // If this is not specified, the default behavior is defined by gRPC. + Service *string `field:"optional" json:"service" yaml:"service"` +} diff --git a/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go b/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go new file mode 100644 index 000000000..88b2ccfcd --- /dev/null +++ b/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go @@ -0,0 +1,16 @@ +package k8s + +// HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). +type HorizontalPodAutoscalerBehaviorV2 struct { + // scaleDown is scaling policy for scaling Down. + // + // If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used). + ScaleDown *HpaScalingRulesV2 `field:"optional" json:"scaleDown" yaml:"scaleDown"` + // scaleUp is scaling policy for scaling Up. + // + // If not set, the default value is the higher of: + // * increase no more than 4 pods per 60 seconds + // * double the number of pods per 60 seconds + // No stabilization is used. + ScaleUp *HpaScalingRulesV2 `field:"optional" json:"scaleUp" yaml:"scaleUp"` +} diff --git a/pods/imports/k8s/HorizontalPodAutoscalerSpec.go b/pods/imports/k8s/HorizontalPodAutoscalerSpec.go new file mode 100644 index 000000000..e8d01fc04 --- /dev/null +++ b/pods/imports/k8s/HorizontalPodAutoscalerSpec.go @@ -0,0 +1,21 @@ +package k8s + +// specification of a horizontal pod autoscaler. +type HorizontalPodAutoscalerSpec struct { + // maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; + // + // cannot be smaller than MinReplicas. + MaxReplicas *float64 `field:"required" json:"maxReplicas" yaml:"maxReplicas"` + // reference to scaled resource; + // + // horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource. + ScaleTargetRef *CrossVersionObjectReference `field:"required" json:"scaleTargetRef" yaml:"scaleTargetRef"` + // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // + // It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. + MinReplicas *float64 `field:"optional" json:"minReplicas" yaml:"minReplicas"` + // targetCPUUtilizationPercentage is the target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // + // if not specified the default autoscaling policy will be used. + TargetCpuUtilizationPercentage *float64 `field:"optional" json:"targetCpuUtilizationPercentage" yaml:"targetCpuUtilizationPercentage"` +} diff --git a/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go b/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go new file mode 100644 index 000000000..0fbb10ab2 --- /dev/null +++ b/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go @@ -0,0 +1,23 @@ +package k8s + +// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. +type HorizontalPodAutoscalerSpecV2 struct { + // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + // + // It cannot be less that minReplicas. + MaxReplicas *float64 `field:"required" json:"maxReplicas" yaml:"maxReplicas"` + // scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count. + ScaleTargetRef *CrossVersionObjectReferenceV2 `field:"required" json:"scaleTargetRef" yaml:"scaleTargetRef"` + // behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). + // + // If not set, the default HPAScalingRules for scale up and scale down are used. + Behavior *HorizontalPodAutoscalerBehaviorV2 `field:"optional" json:"behavior" yaml:"behavior"` + // metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). + // + // The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization. + Metrics *[]*MetricSpecV2 `field:"optional" json:"metrics" yaml:"metrics"` + // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // + // It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. + MinReplicas *float64 `field:"optional" json:"minReplicas" yaml:"minReplicas"` +} diff --git a/pods/imports/k8s/HostAlias.go b/pods/imports/k8s/HostAlias.go new file mode 100644 index 000000000..590be5244 --- /dev/null +++ b/pods/imports/k8s/HostAlias.go @@ -0,0 +1,9 @@ +package k8s + +// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. +type HostAlias struct { + // IP address of the host file entry. + Ip *string `field:"required" json:"ip" yaml:"ip"` + // Hostnames for the above IP address. + Hostnames *[]*string `field:"optional" json:"hostnames" yaml:"hostnames"` +} diff --git a/pods/imports/k8s/HostPathVolumeSource.go b/pods/imports/k8s/HostPathVolumeSource.go new file mode 100644 index 000000000..bd4e55f1a --- /dev/null +++ b/pods/imports/k8s/HostPathVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// Represents a host path mapped into a pod. +// +// Host path volumes do not support ownership management or SELinux relabeling. +type HostPathVolumeSource struct { + // path of the directory on the host. + // + // If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + Path *string `field:"required" json:"path" yaml:"path"` + // type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath. + // Default: More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/HpaScalingPolicyV2.go b/pods/imports/k8s/HpaScalingPolicyV2.go new file mode 100644 index 000000000..2498c8e50 --- /dev/null +++ b/pods/imports/k8s/HpaScalingPolicyV2.go @@ -0,0 +1,15 @@ +package k8s + +// HPAScalingPolicy is a single policy which must hold true for a specified past interval. +type HpaScalingPolicyV2 struct { + // periodSeconds specifies the window of time for which the policy should hold true. + // + // PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). + PeriodSeconds *float64 `field:"required" json:"periodSeconds" yaml:"periodSeconds"` + // type is used to specify the scaling policy. + Type *string `field:"required" json:"type" yaml:"type"` + // value contains the amount of change which is permitted by the policy. + // + // It must be greater than zero. + Value *float64 `field:"required" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/HpaScalingRulesV2.go b/pods/imports/k8s/HpaScalingRulesV2.go new file mode 100644 index 000000000..4a29189a3 --- /dev/null +++ b/pods/imports/k8s/HpaScalingRulesV2.go @@ -0,0 +1,19 @@ +package k8s + +// HPAScalingRules configures the scaling behavior for one direction. +// +// These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen. +type HpaScalingRulesV2 struct { + // policies is a list of potential scaling polices which can be used during scaling. + // + // At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid. + Policies *[]*HpaScalingPolicyV2 `field:"optional" json:"policies" yaml:"policies"` + // selectPolicy is used to specify which policy should be used. + // + // If not set, the default value Max is used. + SelectPolicy *string `field:"optional" json:"selectPolicy" yaml:"selectPolicy"` + // stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. + // + // StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). + StabilizationWindowSeconds *float64 `field:"optional" json:"stabilizationWindowSeconds" yaml:"stabilizationWindowSeconds"` +} diff --git a/pods/imports/k8s/HttpGetAction.go b/pods/imports/k8s/HttpGetAction.go new file mode 100644 index 000000000..5b246f28c --- /dev/null +++ b/pods/imports/k8s/HttpGetAction.go @@ -0,0 +1,25 @@ +package k8s + +// HTTPGetAction describes an action based on HTTP Get requests. +type HttpGetAction struct { + // Name or number of the port to access on the container. + // + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + Port IntOrString `field:"required" json:"port" yaml:"port"` + // Host name to connect to, defaults to the pod IP. + // + // You probably want to set "Host" in httpHeaders instead. + Host *string `field:"optional" json:"host" yaml:"host"` + // Custom headers to set in the request. + // + // HTTP allows repeated headers. + HttpHeaders *[]*HttpHeader `field:"optional" json:"httpHeaders" yaml:"httpHeaders"` + // Path to access on the HTTP server. + Path *string `field:"optional" json:"path" yaml:"path"` + // Scheme to use for connecting to the host. + // + // Defaults to HTTP. + // Default: HTTP. + // + Scheme *string `field:"optional" json:"scheme" yaml:"scheme"` +} diff --git a/pods/imports/k8s/HttpHeader.go b/pods/imports/k8s/HttpHeader.go new file mode 100644 index 000000000..588b4e4e0 --- /dev/null +++ b/pods/imports/k8s/HttpHeader.go @@ -0,0 +1,11 @@ +package k8s + +// HTTPHeader describes a custom header to be used in HTTP probes. +type HttpHeader struct { + // The header field name. + // + // This will be canonicalized upon output, so case-variant names will be understood as the same header. + Name *string `field:"required" json:"name" yaml:"name"` + // The header field value. + Value *string `field:"required" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/HttpIngressPath.go b/pods/imports/k8s/HttpIngressPath.go new file mode 100644 index 000000000..6fbc60172 --- /dev/null +++ b/pods/imports/k8s/HttpIngressPath.go @@ -0,0 +1,27 @@ +package k8s + +// HTTPIngressPath associates a path with a backend. +// +// Incoming urls matching the path are forwarded to the backend. +type HttpIngressPath struct { + // backend defines the referenced service endpoint to which the traffic will be forwarded to. + Backend *IngressBackend `field:"required" json:"backend" yaml:"backend"` + // pathType determines the interpretation of the path matching. + // + // PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is + // done on a path element by element basis. A path element refers is the + // list of labels in the path split by the '/' separator. A request is a + // match for path p if every p is an element-wise prefix of p of the + // request path. Note that if the last element of the path is a substring + // of the last element in request path, it is not a match (e.g. /foo/bar + // matches /foo/bar/baz, but does not match /foo/barbaz). + // * ImplementationSpecific: Interpretation of the Path matching is up to + // the IngressClass. Implementations can treat this as a separate PathType + // or treat it identically to Prefix or Exact path types. + // Implementations are required to support all path types. + PathType *string `field:"required" json:"pathType" yaml:"pathType"` + // path is matched against the path of an incoming request. + // + // Currently it can contain characters disallowed from the conventional "path" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value "Exact" or "Prefix". + Path *string `field:"optional" json:"path" yaml:"path"` +} diff --git a/pods/imports/k8s/HttpIngressRuleValue.go b/pods/imports/k8s/HttpIngressRuleValue.go new file mode 100644 index 000000000..e882c630d --- /dev/null +++ b/pods/imports/k8s/HttpIngressRuleValue.go @@ -0,0 +1,9 @@ +package k8s + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// +// In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'. +type HttpIngressRuleValue struct { + // paths is a collection of paths that map requests to backends. + Paths *[]*HttpIngressPath `field:"required" json:"paths" yaml:"paths"` +} diff --git a/pods/imports/k8s/ImageVolumeSource.go b/pods/imports/k8s/ImageVolumeSource.go new file mode 100644 index 000000000..81b78a33c --- /dev/null +++ b/pods/imports/k8s/ImageVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// ImageVolumeSource represents a image volume resource. +type ImageVolumeSource struct { + // Policy for pulling OCI objects. + // + // Possible values are: Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Default: Always if :latest tag is specified, or IfNotPresent otherwise. + // + PullPolicy *string `field:"optional" json:"pullPolicy" yaml:"pullPolicy"` + // Required: Image or artifact reference to be used. + // + // Behaves in the same way as pod.spec.containers[*].image. Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. + Reference *string `field:"optional" json:"reference" yaml:"reference"` +} diff --git a/pods/imports/k8s/IngressBackend.go b/pods/imports/k8s/IngressBackend.go new file mode 100644 index 000000000..de6f22a5a --- /dev/null +++ b/pods/imports/k8s/IngressBackend.go @@ -0,0 +1,13 @@ +package k8s + +// IngressBackend describes all endpoints for a given service and port. +type IngressBackend struct { + // resource is an ObjectRef to another Kubernetes resource in the namespace of the Ingress object. + // + // If resource is specified, a service.Name and service.Port must not be specified. This is a mutually exclusive setting with "Service". + Resource *TypedLocalObjectReference `field:"optional" json:"resource" yaml:"resource"` + // service references a service as a backend. + // + // This is a mutually exclusive setting with "Resource". + Service *IngressServiceBackend `field:"optional" json:"service" yaml:"service"` +} diff --git a/pods/imports/k8s/IngressClassParametersReference.go b/pods/imports/k8s/IngressClassParametersReference.go new file mode 100644 index 000000000..cc7f55311 --- /dev/null +++ b/pods/imports/k8s/IngressClassParametersReference.go @@ -0,0 +1,23 @@ +package k8s + +// IngressClassParametersReference identifies an API object. +// +// This can be used to specify a cluster or namespace-scoped resource. +type IngressClassParametersReference struct { + // kind is the type of resource being referenced. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // name is the name of resource being referenced. + Name *string `field:"required" json:"name" yaml:"name"` + // apiGroup is the group for the resource being referenced. + // + // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` + // namespace is the namespace of the resource being referenced. + // + // This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster". + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // scope represents if this refers to a cluster or namespace scoped resource. + // + // This may be set to "Cluster" (default) or "Namespace". + Scope *string `field:"optional" json:"scope" yaml:"scope"` +} diff --git a/pods/imports/k8s/IngressClassSpec.go b/pods/imports/k8s/IngressClassSpec.go new file mode 100644 index 000000000..d732cfda6 --- /dev/null +++ b/pods/imports/k8s/IngressClassSpec.go @@ -0,0 +1,13 @@ +package k8s + +// IngressClassSpec provides information about the class of an Ingress. +type IngressClassSpec struct { + // controller refers to the name of the controller that should handle this class. + // + // This allows for different "flavors" that are controlled by the same controller. For example, you may have different parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable. + Controller *string `field:"optional" json:"controller" yaml:"controller"` + // parameters is a link to a custom resource containing additional configuration for the controller. + // + // This is optional if the controller does not require extra parameters. + Parameters *IngressClassParametersReference `field:"optional" json:"parameters" yaml:"parameters"` +} diff --git a/pods/imports/k8s/IngressRule.go b/pods/imports/k8s/IngressRule.go new file mode 100644 index 000000000..5abd5128c --- /dev/null +++ b/pods/imports/k8s/IngressRule.go @@ -0,0 +1,19 @@ +package k8s + +// IngressRule represents the rules mapping the paths under a specified host to the related backend services. +// +// Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue. +type IngressRule struct { + // host is the fully qualified domain name of a network host, as defined by RFC 3986. + // + // Note the following deviations from the "host" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to + // the IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue. + // + // host can be "precise" which is a domain name without the terminating dot of a network host (e.g. "foo.bar.com") or "wildcard", which is a domain name prefixed with a single wildcard label (e.g. "*.foo.com"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == "*"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule. + Host *string `field:"optional" json:"host" yaml:"host"` + Http *HttpIngressRuleValue `field:"optional" json:"http" yaml:"http"` +} diff --git a/pods/imports/k8s/IngressServiceBackend.go b/pods/imports/k8s/IngressServiceBackend.go new file mode 100644 index 000000000..5dd483e9b --- /dev/null +++ b/pods/imports/k8s/IngressServiceBackend.go @@ -0,0 +1,13 @@ +package k8s + +// IngressServiceBackend references a Kubernetes Service as a Backend. +type IngressServiceBackend struct { + // name is the referenced service. + // + // The service must exist in the same namespace as the Ingress object. + Name *string `field:"required" json:"name" yaml:"name"` + // port of the referenced service. + // + // A port name or port number is required for a IngressServiceBackend. + Port *ServiceBackendPort `field:"optional" json:"port" yaml:"port"` +} diff --git a/pods/imports/k8s/IngressSpec.go b/pods/imports/k8s/IngressSpec.go new file mode 100644 index 000000000..231adf3a2 --- /dev/null +++ b/pods/imports/k8s/IngressSpec.go @@ -0,0 +1,21 @@ +package k8s + +// IngressSpec describes the Ingress the user wishes to exist. +type IngressSpec struct { + // defaultBackend is the backend that should handle requests that don't match any rule. + // + // If Rules are not specified, DefaultBackend must be specified. If DefaultBackend is not set, the handling of requests that do not match any of the rules will be up to the Ingress controller. + DefaultBackend *IngressBackend `field:"optional" json:"defaultBackend" yaml:"defaultBackend"` + // ingressClassName is the name of an IngressClass cluster resource. + // + // Ingress controller implementations use this field to know whether they should be serving this Ingress resource, by a transitive connection (controller -> IngressClass -> Ingress resource). Although the `kubernetes.io/ingress.class` annotation (simple constant name) was never formally defined, it was widely supported by Ingress controllers to create a direct binding between Ingress controller and Ingress resources. Newly created Ingress resources should prefer using the field. However, even though the annotation is officially deprecated, for backwards compatibility reasons, ingress controllers should still honor that annotation if present. + IngressClassName *string `field:"optional" json:"ingressClassName" yaml:"ingressClassName"` + // rules is a list of host rules used to configure the Ingress. + // + // If unspecified, or no rule matches, all traffic is sent to the default backend. + Rules *[]*IngressRule `field:"optional" json:"rules" yaml:"rules"` + // tls represents the TLS configuration. + // + // Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI. + Tls *[]*IngressTls `field:"optional" json:"tls" yaml:"tls"` +} diff --git a/pods/imports/k8s/IngressTls.go b/pods/imports/k8s/IngressTls.go new file mode 100644 index 000000000..3021b9c9b --- /dev/null +++ b/pods/imports/k8s/IngressTls.go @@ -0,0 +1,15 @@ +package k8s + +// IngressTLS describes the transport layer security associated with an ingress. +type IngressTls struct { + // hosts is a list of hosts included in the TLS certificate. + // + // The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified. + // Default: the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified. + // + Hosts *[]*string `field:"optional" json:"hosts" yaml:"hosts"` + // secretName is the name of the secret used to terminate TLS traffic on port 443. + // + // Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the "Host" header is used for routing. + SecretName *string `field:"optional" json:"secretName" yaml:"secretName"` +} diff --git a/pods/imports/k8s/IntOrString.go b/pods/imports/k8s/IntOrString.go new file mode 100644 index 000000000..94330b2e8 --- /dev/null +++ b/pods/imports/k8s/IntOrString.go @@ -0,0 +1,61 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" +) + +type IntOrString interface { + Value() interface{} +} + +// The jsii proxy struct for IntOrString +type jsiiProxy_IntOrString struct { + _ byte // padding +} + +func (j *jsiiProxy_IntOrString) Value() interface{} { + var returns interface{} + _jsii_.Get( + j, + "value", + &returns, + ) + return returns +} + +func IntOrString_FromNumber(value *float64) IntOrString { + _init_.Initialize() + + if err := validateIntOrString_FromNumberParameters(value); err != nil { + panic(err) + } + var returns IntOrString + + _jsii_.StaticInvoke( + "k8s.IntOrString", + "fromNumber", + []interface{}{value}, + &returns, + ) + + return returns +} + +func IntOrString_FromString(value *string) IntOrString { + _init_.Initialize() + + if err := validateIntOrString_FromStringParameters(value); err != nil { + panic(err) + } + var returns IntOrString + + _jsii_.StaticInvoke( + "k8s.IntOrString", + "fromString", + []interface{}{value}, + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/IntOrString__checks.go b/pods/imports/k8s/IntOrString__checks.go new file mode 100644 index 000000000..21b11b6e3 --- /dev/null +++ b/pods/imports/k8s/IntOrString__checks.go @@ -0,0 +1,23 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" +) + +func validateIntOrString_FromNumberParameters(value *float64) error { + if value == nil { + return fmt.Errorf("parameter value is required, but nil was provided") + } + + return nil +} + +func validateIntOrString_FromStringParameters(value *string) error { + if value == nil { + return fmt.Errorf("parameter value is required, but nil was provided") + } + + return nil +} diff --git a/pods/imports/k8s/IntOrString__no_checks.go b/pods/imports/k8s/IntOrString__no_checks.go new file mode 100644 index 000000000..81f00e0de --- /dev/null +++ b/pods/imports/k8s/IntOrString__no_checks.go @@ -0,0 +1,13 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateIntOrString_FromNumberParameters(value *float64) error { + return nil +} + +func validateIntOrString_FromStringParameters(value *string) error { + return nil +} diff --git a/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go b/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go new file mode 100644 index 000000000..cfa0cc144 --- /dev/null +++ b/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go @@ -0,0 +1,11 @@ +package k8s + +// Kind is a string value representing the REST resource this object represents. +// +// Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +type IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind string + +const ( + // DeleteOptions. + IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind_DELETE_OPTIONS IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind = "DELETE_OPTIONS" +) diff --git a/pods/imports/k8s/IpAddressSpecV1Beta1.go b/pods/imports/k8s/IpAddressSpecV1Beta1.go new file mode 100644 index 000000000..07fe292c2 --- /dev/null +++ b/pods/imports/k8s/IpAddressSpecV1Beta1.go @@ -0,0 +1,9 @@ +package k8s + +// IPAddressSpec describe the attributes in an IP Address. +type IpAddressSpecV1Beta1 struct { + // ParentRef references the resource that an IPAddress is attached to. + // + // An IPAddress must reference a parent object. + ParentRef *ParentReferenceV1Beta1 `field:"required" json:"parentRef" yaml:"parentRef"` +} diff --git a/pods/imports/k8s/IpBlock.go b/pods/imports/k8s/IpBlock.go new file mode 100644 index 000000000..7534250eb --- /dev/null +++ b/pods/imports/k8s/IpBlock.go @@ -0,0 +1,11 @@ +package k8s + +// IPBlock describes a particular CIDR (Ex. +// +// "192.168.1.0/24","2001:db8::/64") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule. +type IpBlock struct { + // cidr is a string representing the IPBlock Valid examples are "192.168.1.0/24" or "2001:db8::/64". + Cidr *string `field:"required" json:"cidr" yaml:"cidr"` + // except is a slice of CIDRs that should not be included within an IPBlock Valid examples are "192.168.1.0/24" or "2001:db8::/64" Except values will be rejected if they are outside the cidr range. + Except *[]*string `field:"optional" json:"except" yaml:"except"` +} diff --git a/pods/imports/k8s/IscsiPersistentVolumeSource.go b/pods/imports/k8s/IscsiPersistentVolumeSource.go new file mode 100644 index 000000000..657afa423 --- /dev/null +++ b/pods/imports/k8s/IscsiPersistentVolumeSource.go @@ -0,0 +1,45 @@ +package k8s + +// ISCSIPersistentVolumeSource represents an ISCSI disk. +// +// ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. +type IscsiPersistentVolumeSource struct { + // iqn is Target iSCSI Qualified Name. + Iqn *string `field:"required" json:"iqn" yaml:"iqn"` + // lun is iSCSI Target Lun number. + Lun *float64 `field:"required" json:"lun" yaml:"lun"` + // targetPortal is iSCSI Target Portal. + // + // The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + TargetPortal *string `field:"required" json:"targetPortal" yaml:"targetPortal"` + // chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication. + ChapAuthDiscovery *bool `field:"optional" json:"chapAuthDiscovery" yaml:"chapAuthDiscovery"` + // chapAuthSession defines whether support iSCSI Session CHAP authentication. + ChapAuthSession *bool `field:"optional" json:"chapAuthSession" yaml:"chapAuthSession"` + // fsType is the filesystem type of the volume that you want to mount. + // + // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // initiatorName is the custom iSCSI Initiator Name. + // + // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + InitiatorName *string `field:"optional" json:"initiatorName" yaml:"initiatorName"` + // iscsiInterface is the interface Name that uses an iSCSI transport. + // + // Defaults to 'default' (tcp). + // Default: default' (tcp). + // + IscsiInterface *string `field:"optional" json:"iscsiInterface" yaml:"iscsiInterface"` + // portals is the iSCSI Target Portal List. + // + // The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + Portals *[]*string `field:"optional" json:"portals" yaml:"portals"` + // readOnly here will force the ReadOnly setting in VolumeMounts. + // + // Defaults to false. + // Default: false. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is the CHAP Secret for iSCSI target and initiator authentication. + SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/IscsiVolumeSource.go b/pods/imports/k8s/IscsiVolumeSource.go new file mode 100644 index 000000000..59697e518 --- /dev/null +++ b/pods/imports/k8s/IscsiVolumeSource.go @@ -0,0 +1,45 @@ +package k8s + +// Represents an ISCSI disk. +// +// ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. +type IscsiVolumeSource struct { + // iqn is the target iSCSI Qualified Name. + Iqn *string `field:"required" json:"iqn" yaml:"iqn"` + // lun represents iSCSI Target Lun number. + Lun *float64 `field:"required" json:"lun" yaml:"lun"` + // targetPortal is iSCSI Target Portal. + // + // The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + TargetPortal *string `field:"required" json:"targetPortal" yaml:"targetPortal"` + // chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication. + ChapAuthDiscovery *bool `field:"optional" json:"chapAuthDiscovery" yaml:"chapAuthDiscovery"` + // chapAuthSession defines whether support iSCSI Session CHAP authentication. + ChapAuthSession *bool `field:"optional" json:"chapAuthSession" yaml:"chapAuthSession"` + // fsType is the filesystem type of the volume that you want to mount. + // + // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // initiatorName is the custom iSCSI Initiator Name. + // + // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + InitiatorName *string `field:"optional" json:"initiatorName" yaml:"initiatorName"` + // iscsiInterface is the interface Name that uses an iSCSI transport. + // + // Defaults to 'default' (tcp). + // Default: default' (tcp). + // + IscsiInterface *string `field:"optional" json:"iscsiInterface" yaml:"iscsiInterface"` + // portals is the iSCSI Target Portal List. + // + // The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + Portals *[]*string `field:"optional" json:"portals" yaml:"portals"` + // readOnly here will force the ReadOnly setting in VolumeMounts. + // + // Defaults to false. + // Default: false. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is the CHAP Secret for iSCSI target and initiator authentication. + SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` +} diff --git a/pods/imports/k8s/JobSpec.go b/pods/imports/k8s/JobSpec.go new file mode 100644 index 000000000..2f74ded56 --- /dev/null +++ b/pods/imports/k8s/JobSpec.go @@ -0,0 +1,86 @@ +package k8s + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + // Describes the pod that will be created when executing a job. + // + // The only allowed template.spec.restartPolicy values are "Never" or "OnFailure". More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` + // Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; + // + // value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again. + ActiveDeadlineSeconds *float64 `field:"optional" json:"activeDeadlineSeconds" yaml:"activeDeadlineSeconds"` + // Specifies the number of retries before marking this job failed. + // + // Defaults to 6. + // Default: 6. + // + BackoffLimit *float64 `field:"optional" json:"backoffLimit" yaml:"backoffLimit"` + // Specifies the limit for the number of retries within an index before marking this index as failed. + // + // When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). + BackoffLimitPerIndex *float64 `field:"optional" json:"backoffLimitPerIndex" yaml:"backoffLimitPerIndex"` + // completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`. + // + // `NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other. + // + // `Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`. + // + // More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job. + CompletionMode *string `field:"optional" json:"completionMode" yaml:"completionMode"` + // Specifies the desired number of successfully finished pods the job should be run with. + // + // Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + Completions *float64 `field:"optional" json:"completions" yaml:"completions"` + // ManagedBy field indicates the controller that manages a Job. + // + // The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first "/" must be a valid subdomain as defined by RFC 1123. All characters trailing the first "/" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable. + // + // This field is beta-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (enabled by default). + ManagedBy *string `field:"optional" json:"managedBy" yaml:"managedBy"` + // manualSelector controls generation of pod labels and pod selectors. + // + // Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector + ManualSelector *bool `field:"optional" json:"manualSelector" yaml:"manualSelector"` + // Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. + // + // Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). + MaxFailedIndexes *float64 `field:"optional" json:"maxFailedIndexes" yaml:"maxFailedIndexes"` + // Specifies the maximum desired number of pods the job should run at any given time. + // + // The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + Parallelism *float64 `field:"optional" json:"parallelism" yaml:"parallelism"` + // Specifies the policy of handling failed pods. + // + // In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure. + PodFailurePolicy *PodFailurePolicy `field:"optional" json:"podFailurePolicy" yaml:"podFailurePolicy"` + // podReplacementPolicy specifies when to create replacement Pods. + // + // Possible values are: - TerminatingOrFailed means that we recreate pods + // when they are terminating (has a metadata.deletionTimestamp) or failed. + // - Failed means to wait until a previously created Pod is fully terminated (has phase + // Failed or Succeeded) before creating a replacement Pod. + // + // When using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default. + PodReplacementPolicy *string `field:"optional" json:"podReplacementPolicy" yaml:"podReplacementPolicy"` + // A label query over pods that should match the pod count. + // + // Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` + // successPolicy specifies the policy when the Job can be declared as succeeded. + // + // If empty, the default behavior applies - the Job is declared as succeeded only when the number of succeeded pods equals to the completions. When the field is specified, it must be immutable and works only for the Indexed Jobs. Once the Job meets the SuccessPolicy, the lingering pods are terminated. + // + // This field is beta-level. To use this field, you must enable the `JobSuccessPolicy` feature gate (enabled by default). + SuccessPolicy *SuccessPolicy `field:"optional" json:"successPolicy" yaml:"successPolicy"` + // suspend specifies whether the Job controller should create Pods or not. + // + // If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false. + // Default: false. + // + Suspend *bool `field:"optional" json:"suspend" yaml:"suspend"` + // ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). + // + // If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. + TtlSecondsAfterFinished *float64 `field:"optional" json:"ttlSecondsAfterFinished" yaml:"ttlSecondsAfterFinished"` +} diff --git a/pods/imports/k8s/JobTemplateSpec.go b/pods/imports/k8s/JobTemplateSpec.go new file mode 100644 index 000000000..5bf129726 --- /dev/null +++ b/pods/imports/k8s/JobTemplateSpec.go @@ -0,0 +1,13 @@ +package k8s + +// JobTemplateSpec describes the data a Job should have when created from a template. +type JobTemplateSpec struct { + // Standard object's metadata of the jobs created from this template. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the job. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *JobSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/JsonPatchV1Alpha1.go b/pods/imports/k8s/JsonPatchV1Alpha1.go new file mode 100644 index 000000000..84c16618e --- /dev/null +++ b/pods/imports/k8s/JsonPatchV1Alpha1.go @@ -0,0 +1,60 @@ +package k8s + +// JSONPatch defines a JSON Patch. +type JsonPatchV1Alpha1 struct { + // expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/). ref: https://github.com/google/cel-spec. + // + // expression must return an array of JSONPatch values. + // + // For example, this CEL expression returns a JSON patch to conditionally modify a value: + // + // [ + // JSONPatch{op: "test", path: "/spec/example", value: "Red"}, + // JSONPatch{op: "replace", path: "/spec/example", value: "Green"} + // ] + // + // To define an object for the patch value, use Object types. For example: + // + // [ + // JSONPatch{ + // op: "add", + // path: "/spec/selector", + // value: Object.spec.selector{matchLabels: {"environment": "test"}} + // } + // ] + // + // To use strings containing '/' and '~' as JSONPatch path keys, use "jsonpatch.escapeKey". For example: + // + // [ + // JSONPatch{ + // op: "add", + // path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"), + // value: "test" + // }, + // ] + // + // CEL expressions have access to the types needed to create JSON patches and objects: + // + // - 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'. + // See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string, + // integer, array, map or object. If set, the 'path' and 'from' fields must be set to a + // [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL + // function may be used to escape path keys containing '/' and '~'. + // - 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers') + // + // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables: + // + // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + // For example, a variable named 'foo' can be accessed as 'variables.foo'. + // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // + // CEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries) as well as: + // + // - 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and '/' are escaped as '~0' and `~1' respectively). + // + // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required. + Expression *string `field:"optional" json:"expression" yaml:"expression"` +} diff --git a/pods/imports/k8s/JsonSchemaProps.go b/pods/imports/k8s/JsonSchemaProps.go new file mode 100644 index 000000000..de211c8c8 --- /dev/null +++ b/pods/imports/k8s/JsonSchemaProps.go @@ -0,0 +1,105 @@ +package k8s + +// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). +type JsonSchemaProps struct { + AdditionalItems interface{} `field:"optional" json:"additionalItems" yaml:"additionalItems"` + AdditionalProperties interface{} `field:"optional" json:"additionalProperties" yaml:"additionalProperties"` + AllOf *[]*JsonSchemaProps `field:"optional" json:"allOf" yaml:"allOf"` + AnyOf *[]*JsonSchemaProps `field:"optional" json:"anyOf" yaml:"anyOf"` + // default is a default value for undefined object fields. + // + // Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false. + Default interface{} `field:"optional" json:"default" yaml:"default"` + Definitions *map[string]*JsonSchemaProps `field:"optional" json:"definitions" yaml:"definitions"` + Dependencies *map[string]interface{} `field:"optional" json:"dependencies" yaml:"dependencies"` + Description *string `field:"optional" json:"description" yaml:"description"` + Enum *[]interface{} `field:"optional" json:"enum" yaml:"enum"` + Example interface{} `field:"optional" json:"example" yaml:"example"` + ExclusiveMaximum *bool `field:"optional" json:"exclusiveMaximum" yaml:"exclusiveMaximum"` + ExclusiveMinimum *bool `field:"optional" json:"exclusiveMinimum" yaml:"exclusiveMinimum"` + ExternalDocs *ExternalDocumentation `field:"optional" json:"externalDocs" yaml:"externalDocs"` + // format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:. + // + // - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041" - isbn10: an ISBN10 number string like "0321751043" - isbn13: an ISBN13 number string like "978-0321751041" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$ - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559" - byte: base64 encoded binary data - password: any kind of string - date: a date string like "2006-01-02" as defined by full-date in RFC3339 - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339. + Format *string `field:"optional" json:"format" yaml:"format"` + Id *string `field:"optional" json:"id" yaml:"id"` + Items interface{} `field:"optional" json:"items" yaml:"items"` + Maximum *float64 `field:"optional" json:"maximum" yaml:"maximum"` + MaxItems *float64 `field:"optional" json:"maxItems" yaml:"maxItems"` + MaxLength *float64 `field:"optional" json:"maxLength" yaml:"maxLength"` + MaxProperties *float64 `field:"optional" json:"maxProperties" yaml:"maxProperties"` + Minimum *float64 `field:"optional" json:"minimum" yaml:"minimum"` + MinItems *float64 `field:"optional" json:"minItems" yaml:"minItems"` + MinLength *float64 `field:"optional" json:"minLength" yaml:"minLength"` + MinProperties *float64 `field:"optional" json:"minProperties" yaml:"minProperties"` + MultipleOf *float64 `field:"optional" json:"multipleOf" yaml:"multipleOf"` + Not **JsonSchemaProps `field:"optional" json:"not" yaml:"not"` + Nullable *bool `field:"optional" json:"nullable" yaml:"nullable"` + OneOf *[]*JsonSchemaProps `field:"optional" json:"oneOf" yaml:"oneOf"` + Pattern *string `field:"optional" json:"pattern" yaml:"pattern"` + PatternProperties *map[string]*JsonSchemaProps `field:"optional" json:"patternProperties" yaml:"patternProperties"` + Properties *map[string]*JsonSchemaProps `field:"optional" json:"properties" yaml:"properties"` + Ref *string `field:"optional" json:"ref" yaml:"ref"` + Required *[]*string `field:"optional" json:"required" yaml:"required"` + Schema *string `field:"optional" json:"schema" yaml:"schema"` + Title *string `field:"optional" json:"title" yaml:"title"` + Type *string `field:"optional" json:"type" yaml:"type"` + UniqueItems *bool `field:"optional" json:"uniqueItems" yaml:"uniqueItems"` + // x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata). + XKubernetesEmbeddedResource *bool `field:"optional" json:"xKubernetesEmbeddedResource" yaml:"xKubernetesEmbeddedResource"` + // x-kubernetes-int-or-string specifies that this value is either an integer or a string. + // + // If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns: + // + // 1) anyOf: + // - type: integer + // - type: string + // 2) allOf: + // - anyOf: + // - type: integer + // - type: string + // - ... zero or more + XKubernetesIntOrString *bool `field:"optional" json:"xKubernetesIntOrString" yaml:"xKubernetesIntOrString"` + // x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map. + // + // This tag MUST only be used on lists that have the "x-kubernetes-list-type" extension set to "map". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported). + // + // The properties specified must either be required or have a default value, to ensure those properties are present for all list items. + XKubernetesListMapKeys *[]*string `field:"optional" json:"xKubernetesListMapKeys" yaml:"xKubernetesListMapKeys"` + // x-kubernetes-list-type annotates an array to further describe its topology. + // + // This extension must only be used on lists and may have 3 possible values: + // + // 1) `atomic`: the list is treated as a single entity, like a scalar. + // Atomic lists will be entirely replaced when updated. This extension + // may be used on any type of list (struct, scalar, ...). + // 2) `set`: + // Sets are lists that must not have multiple items with the same value. Each + // value must be a scalar, an object with x-kubernetes-map-type `atomic` or an + // array with x-kubernetes-list-type `atomic`. + // 3) `map`: + // These lists are like maps in that their elements have a non-index key + // used to identify them. Order is preserved upon merge. The map tag + // must only be used on a list with elements of type object. + // Defaults to atomic for arrays. + // Default: atomic for arrays. + // + XKubernetesListType *string `field:"optional" json:"xKubernetesListType" yaml:"xKubernetesListType"` + // x-kubernetes-map-type annotates an object to further describe its topology. + // + // This extension must only be used when type is object and may have 2 possible values: + // + // 1) `granular`: + // These maps are actual maps (key-value pairs) and each fields are independent + // from each other (they can each be manipulated by separate actors). This is + // the default behaviour for all maps. + // 2) `atomic`: the list is treated as a single entity, like a scalar. + // Atomic maps will be entirely replaced when updated. + XKubernetesMapType *string `field:"optional" json:"xKubernetesMapType" yaml:"xKubernetesMapType"` + // x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. + // + // This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden. + XKubernetesPreserveUnknownFields *bool `field:"optional" json:"xKubernetesPreserveUnknownFields" yaml:"xKubernetesPreserveUnknownFields"` + // x-kubernetes-validations describes a list of validation rules written in the CEL expression language. + XKubernetesValidations *[]*ValidationRule `field:"optional" json:"xKubernetesValidations" yaml:"xKubernetesValidations"` +} diff --git a/pods/imports/k8s/KeyToPath.go b/pods/imports/k8s/KeyToPath.go new file mode 100644 index 000000000..f5786ce12 --- /dev/null +++ b/pods/imports/k8s/KeyToPath.go @@ -0,0 +1,15 @@ +package k8s + +// Maps a string key to a path within a volume. +type KeyToPath struct { + // key is the key to project. + Key *string `field:"required" json:"key" yaml:"key"` + // path is the relative path of the file to map the key to. + // + // May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + Path *string `field:"required" json:"path" yaml:"path"` + // mode is Optional: mode bits used to set permissions on this file. + // + // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + Mode *float64 `field:"optional" json:"mode" yaml:"mode"` +} diff --git a/pods/imports/k8s/KubeApiService.go b/pods/imports/k8s/KubeApiService.go new file mode 100644 index 000000000..ad4def660 --- /dev/null +++ b/pods/imports/k8s/KubeApiService.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// APIService represents a server for a particular GroupVersion. +// +// Name must be "version.group". +type KubeApiService interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeApiService +type jsiiProxy_KubeApiService struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeApiService) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiService) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiService) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiService) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiService) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiService) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiService) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" API object. +func NewKubeApiService(scope constructs.Construct, id *string, props *KubeApiServiceProps) KubeApiService { + _init_.Initialize() + + if err := validateNewKubeApiServiceParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeApiService{} + + _jsii_.Create( + "k8s.KubeApiService", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" API object. +func NewKubeApiService_Override(k KubeApiService, scope constructs.Construct, id *string, props *KubeApiServiceProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeApiService", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeApiService_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeApiService_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeApiService", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeApiService_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeApiService_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeApiService", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeApiService_Manifest(props *KubeApiServiceProps) interface{} { + _init_.Initialize() + + if err := validateKubeApiService_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeApiService", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeApiService_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeApiService_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeApiService", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeApiService_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeApiService", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeApiService) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeApiService) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeApiService) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeApiService) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeApiServiceList.go b/pods/imports/k8s/KubeApiServiceList.go new file mode 100644 index 000000000..7d7633f8b --- /dev/null +++ b/pods/imports/k8s/KubeApiServiceList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// APIServiceList is a list of APIService objects. +type KubeApiServiceList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeApiServiceList +type jsiiProxy_KubeApiServiceList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeApiServiceList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiServiceList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiServiceList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiServiceList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiServiceList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiServiceList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeApiServiceList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" API object. +func NewKubeApiServiceList(scope constructs.Construct, id *string, props *KubeApiServiceListProps) KubeApiServiceList { + _init_.Initialize() + + if err := validateNewKubeApiServiceListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeApiServiceList{} + + _jsii_.Create( + "k8s.KubeApiServiceList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" API object. +func NewKubeApiServiceList_Override(k KubeApiServiceList, scope constructs.Construct, id *string, props *KubeApiServiceListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeApiServiceList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeApiServiceList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeApiServiceList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeApiServiceList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeApiServiceList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeApiServiceList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeApiServiceList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeApiServiceList_Manifest(props *KubeApiServiceListProps) interface{} { + _init_.Initialize() + + if err := validateKubeApiServiceList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeApiServiceList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeApiServiceList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeApiServiceList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeApiServiceList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeApiServiceList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeApiServiceList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeApiServiceList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeApiServiceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeApiServiceList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeApiServiceList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeApiServiceListProps.go b/pods/imports/k8s/KubeApiServiceListProps.go new file mode 100644 index 000000000..8122560a5 --- /dev/null +++ b/pods/imports/k8s/KubeApiServiceListProps.go @@ -0,0 +1,9 @@ +package k8s + +// APIServiceList is a list of APIService objects. +type KubeApiServiceListProps struct { + // Items is the list of APIService. + Items *[]*KubeApiServiceProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeApiServiceList__checks.go b/pods/imports/k8s/KubeApiServiceList__checks.go new file mode 100644 index 000000000..0fb2325f7 --- /dev/null +++ b/pods/imports/k8s/KubeApiServiceList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeApiServiceList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeApiServiceList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeApiServiceList_ManifestParameters(props *KubeApiServiceListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeApiServiceList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeApiServiceListParameters(scope constructs.Construct, id *string, props *KubeApiServiceListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeApiServiceList__no_checks.go b/pods/imports/k8s/KubeApiServiceList__no_checks.go new file mode 100644 index 000000000..a2c57c29c --- /dev/null +++ b/pods/imports/k8s/KubeApiServiceList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeApiServiceList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeApiServiceList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeApiServiceList_ManifestParameters(props *KubeApiServiceListProps) error { + return nil +} + +func validateKubeApiServiceList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeApiServiceListParameters(scope constructs.Construct, id *string, props *KubeApiServiceListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeApiServiceProps.go b/pods/imports/k8s/KubeApiServiceProps.go new file mode 100644 index 000000000..463869bdc --- /dev/null +++ b/pods/imports/k8s/KubeApiServiceProps.go @@ -0,0 +1,13 @@ +package k8s + +// APIService represents a server for a particular GroupVersion. +// +// Name must be "version.group". +type KubeApiServiceProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec contains information for locating and communicating with a server. + Spec *ApiServiceSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeApiService__checks.go b/pods/imports/k8s/KubeApiService__checks.go new file mode 100644 index 000000000..60c5d7b78 --- /dev/null +++ b/pods/imports/k8s/KubeApiService__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeApiService_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeApiService_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeApiService_ManifestParameters(props *KubeApiServiceProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeApiService_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeApiServiceParameters(scope constructs.Construct, id *string, props *KubeApiServiceProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeApiService__no_checks.go b/pods/imports/k8s/KubeApiService__no_checks.go new file mode 100644 index 000000000..091764dab --- /dev/null +++ b/pods/imports/k8s/KubeApiService__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeApiService_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeApiService_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeApiService_ManifestParameters(props *KubeApiServiceProps) error { + return nil +} + +func validateKubeApiService_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeApiServiceParameters(scope constructs.Construct, id *string, props *KubeApiServiceProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeBinding.go b/pods/imports/k8s/KubeBinding.go new file mode 100644 index 000000000..190da7322 --- /dev/null +++ b/pods/imports/k8s/KubeBinding.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Binding ties one object to another; +// +// for example, a pod is bound to a node by a scheduler. +type KubeBinding interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeBinding +type jsiiProxy_KubeBinding struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeBinding) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeBinding) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeBinding) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeBinding) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeBinding) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeBinding) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Binding" API object. +func NewKubeBinding(scope constructs.Construct, id *string, props *KubeBindingProps) KubeBinding { + _init_.Initialize() + + if err := validateNewKubeBindingParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeBinding{} + + _jsii_.Create( + "k8s.KubeBinding", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Binding" API object. +func NewKubeBinding_Override(k KubeBinding, scope constructs.Construct, id *string, props *KubeBindingProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeBinding", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeBinding_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeBinding_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeBinding", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeBinding_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeBinding_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeBinding", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Binding". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeBinding_Manifest(props *KubeBindingProps) interface{} { + _init_.Initialize() + + if err := validateKubeBinding_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeBinding", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeBinding_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeBinding", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeBinding_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeBinding", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeBinding) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeBinding) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeBinding) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeBindingProps.go b/pods/imports/k8s/KubeBindingProps.go new file mode 100644 index 000000000..dd8b7e7eb --- /dev/null +++ b/pods/imports/k8s/KubeBindingProps.go @@ -0,0 +1,13 @@ +package k8s + +// Binding ties one object to another; +// +// for example, a pod is bound to a node by a scheduler. +type KubeBindingProps struct { + // The target object that you want to bind to the standard object. + Target *ObjectReference `field:"required" json:"target" yaml:"target"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeBinding__checks.go b/pods/imports/k8s/KubeBinding__checks.go new file mode 100644 index 000000000..9b4958179 --- /dev/null +++ b/pods/imports/k8s/KubeBinding__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeBinding_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeBinding_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeBinding_ManifestParameters(props *KubeBindingProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeBinding_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeBindingParameters(scope constructs.Construct, id *string, props *KubeBindingProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeBinding__no_checks.go b/pods/imports/k8s/KubeBinding__no_checks.go new file mode 100644 index 000000000..a3be7a83e --- /dev/null +++ b/pods/imports/k8s/KubeBinding__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeBinding_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeBinding_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeBinding_ManifestParameters(props *KubeBindingProps) error { + return nil +} + +func validateKubeBinding_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeBindingParameters(scope constructs.Construct, id *string, props *KubeBindingProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequest.go b/pods/imports/k8s/KubeCertificateSigningRequest.go new file mode 100644 index 000000000..ceb38a205 --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequest.go @@ -0,0 +1,321 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued. +// +// Kubelets use this API to obtain: +// 1. client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client-kubelet" signerName). +// 2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the "kubernetes.io/kubelet-serving" signerName). +// +// This API can be used to request client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client" signerName), or to obtain certificates from custom non-Kubernetes signers. +type KubeCertificateSigningRequest interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCertificateSigningRequest +type jsiiProxy_KubeCertificateSigningRequest struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequest) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequest" API object. +func NewKubeCertificateSigningRequest(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) KubeCertificateSigningRequest { + _init_.Initialize() + + if err := validateNewKubeCertificateSigningRequestParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCertificateSigningRequest{} + + _jsii_.Create( + "k8s.KubeCertificateSigningRequest", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequest" API object. +func NewKubeCertificateSigningRequest_Override(k KubeCertificateSigningRequest, scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCertificateSigningRequest", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCertificateSigningRequest_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequest_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequest", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCertificateSigningRequest_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequest_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequest", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1.CertificateSigningRequest". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCertificateSigningRequest_Manifest(props *KubeCertificateSigningRequestProps) interface{} { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequest_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequest", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCertificateSigningRequest_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequest_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequest", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCertificateSigningRequest_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCertificateSigningRequest", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCertificateSigningRequest) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCertificateSigningRequest) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCertificateSigningRequest) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCertificateSigningRequest) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList.go b/pods/imports/k8s/KubeCertificateSigningRequestList.go new file mode 100644 index 000000000..546df2a98 --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequestList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CertificateSigningRequestList is a collection of CertificateSigningRequest objects. +type KubeCertificateSigningRequestList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCertificateSigningRequestList +type jsiiProxy_KubeCertificateSigningRequestList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCertificateSigningRequestList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequestList" API object. +func NewKubeCertificateSigningRequestList(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) KubeCertificateSigningRequestList { + _init_.Initialize() + + if err := validateNewKubeCertificateSigningRequestListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCertificateSigningRequestList{} + + _jsii_.Create( + "k8s.KubeCertificateSigningRequestList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequestList" API object. +func NewKubeCertificateSigningRequestList_Override(k KubeCertificateSigningRequestList, scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCertificateSigningRequestList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCertificateSigningRequestList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequestList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequestList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCertificateSigningRequestList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequestList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequestList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1.CertificateSigningRequestList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCertificateSigningRequestList_Manifest(props *KubeCertificateSigningRequestListProps) interface{} { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequestList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequestList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCertificateSigningRequestList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCertificateSigningRequestList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCertificateSigningRequestList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCertificateSigningRequestList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCertificateSigningRequestList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCertificateSigningRequestList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCertificateSigningRequestList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCertificateSigningRequestList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCertificateSigningRequestList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequestListProps.go b/pods/imports/k8s/KubeCertificateSigningRequestListProps.go new file mode 100644 index 000000000..741ceb625 --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequestListProps.go @@ -0,0 +1,8 @@ +package k8s + +// CertificateSigningRequestList is a collection of CertificateSigningRequest objects. +type KubeCertificateSigningRequestListProps struct { + // items is a collection of CertificateSigningRequest objects. + Items *[]*KubeCertificateSigningRequestProps `field:"required" json:"items" yaml:"items"` + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go b/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go new file mode 100644 index 000000000..d2debdc6c --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCertificateSigningRequestList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCertificateSigningRequestList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCertificateSigningRequestList_ManifestParameters(props *KubeCertificateSigningRequestListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCertificateSigningRequestList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCertificateSigningRequestListParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go b/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go new file mode 100644 index 000000000..33d18157d --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCertificateSigningRequestList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCertificateSigningRequestList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCertificateSigningRequestList_ManifestParameters(props *KubeCertificateSigningRequestListProps) error { + return nil +} + +func validateKubeCertificateSigningRequestList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCertificateSigningRequestListParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequestProps.go b/pods/imports/k8s/KubeCertificateSigningRequestProps.go new file mode 100644 index 000000000..7d5a0c87e --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequestProps.go @@ -0,0 +1,16 @@ +package k8s + +// CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued. +// +// Kubelets use this API to obtain: +// 1. client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client-kubelet" signerName). +// 2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the "kubernetes.io/kubelet-serving" signerName). +// +// This API can be used to request client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client" signerName), or to obtain certificates from custom non-Kubernetes signers. +type KubeCertificateSigningRequestProps struct { + // spec contains the certificate request, and is immutable after creation. + // + // Only the request, signerName, expirationSeconds, and usages fields can be set on creation. Other fields are derived by Kubernetes and cannot be modified by users. + Spec *CertificateSigningRequestSpec `field:"required" json:"spec" yaml:"spec"` + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequest__checks.go b/pods/imports/k8s/KubeCertificateSigningRequest__checks.go new file mode 100644 index 000000000..0a56a0bd2 --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequest__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCertificateSigningRequest_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCertificateSigningRequest_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCertificateSigningRequest_ManifestParameters(props *KubeCertificateSigningRequestProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCertificateSigningRequest_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCertificateSigningRequestParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go b/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go new file mode 100644 index 000000000..decf2b488 --- /dev/null +++ b/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCertificateSigningRequest_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCertificateSigningRequest_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCertificateSigningRequest_ManifestParameters(props *KubeCertificateSigningRequestProps) error { + return nil +} + +func validateKubeCertificateSigningRequest_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCertificateSigningRequestParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeClusterRole.go b/pods/imports/k8s/KubeClusterRole.go new file mode 100644 index 000000000..2cd1bf653 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRole.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type KubeClusterRole interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeClusterRole +type jsiiProxy_KubeClusterRole struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeClusterRole) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRole) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRole) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRole) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRole) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRole) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRole) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRole" API object. +func NewKubeClusterRole(scope constructs.Construct, id *string, props *KubeClusterRoleProps) KubeClusterRole { + _init_.Initialize() + + if err := validateNewKubeClusterRoleParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeClusterRole{} + + _jsii_.Create( + "k8s.KubeClusterRole", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRole" API object. +func NewKubeClusterRole_Override(k KubeClusterRole, scope constructs.Construct, id *string, props *KubeClusterRoleProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeClusterRole", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeClusterRole_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRole_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRole", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeClusterRole_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRole_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRole", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRole". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeClusterRole_Manifest(props *KubeClusterRoleProps) interface{} { + _init_.Initialize() + + if err := validateKubeClusterRole_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeClusterRole", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeClusterRole_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeClusterRole_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeClusterRole", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeClusterRole_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeClusterRole", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeClusterRole) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRole) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRole) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeClusterRole) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeClusterRoleBinding.go b/pods/imports/k8s/KubeClusterRoleBinding.go new file mode 100644 index 000000000..9cafce54d --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBinding.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ClusterRoleBinding references a ClusterRole, but not contain it. +// +// It can reference a ClusterRole in the global namespace, and adds who information via Subject. +type KubeClusterRoleBinding interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeClusterRoleBinding +type jsiiProxy_KubeClusterRoleBinding struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeClusterRoleBinding) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBinding) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBinding) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBinding) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBinding) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBinding) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRoleBinding" API object. +func NewKubeClusterRoleBinding(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) KubeClusterRoleBinding { + _init_.Initialize() + + if err := validateNewKubeClusterRoleBindingParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeClusterRoleBinding{} + + _jsii_.Create( + "k8s.KubeClusterRoleBinding", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRoleBinding" API object. +func NewKubeClusterRoleBinding_Override(k KubeClusterRoleBinding, scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeClusterRoleBinding", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeClusterRoleBinding_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRoleBinding_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBinding", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeClusterRoleBinding_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRoleBinding_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBinding", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleBinding". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeClusterRoleBinding_Manifest(props *KubeClusterRoleBindingProps) interface{} { + _init_.Initialize() + + if err := validateKubeClusterRoleBinding_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBinding", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeClusterRoleBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeClusterRoleBinding_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBinding", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeClusterRoleBinding_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeClusterRoleBinding", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeClusterRoleBinding) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRoleBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRoleBinding) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeClusterRoleBinding) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeClusterRoleBindingList.go b/pods/imports/k8s/KubeClusterRoleBindingList.go new file mode 100644 index 000000000..1e8bafa50 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBindingList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ClusterRoleBindingList is a collection of ClusterRoleBindings. +type KubeClusterRoleBindingList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeClusterRoleBindingList +type jsiiProxy_KubeClusterRoleBindingList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleBindingList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRoleBindingList" API object. +func NewKubeClusterRoleBindingList(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) KubeClusterRoleBindingList { + _init_.Initialize() + + if err := validateNewKubeClusterRoleBindingListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeClusterRoleBindingList{} + + _jsii_.Create( + "k8s.KubeClusterRoleBindingList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRoleBindingList" API object. +func NewKubeClusterRoleBindingList_Override(k KubeClusterRoleBindingList, scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeClusterRoleBindingList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeClusterRoleBindingList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRoleBindingList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBindingList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeClusterRoleBindingList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRoleBindingList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBindingList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleBindingList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeClusterRoleBindingList_Manifest(props *KubeClusterRoleBindingListProps) interface{} { + _init_.Initialize() + + if err := validateKubeClusterRoleBindingList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBindingList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeClusterRoleBindingList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeClusterRoleBindingList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleBindingList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeClusterRoleBindingList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeClusterRoleBindingList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeClusterRoleBindingList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRoleBindingList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRoleBindingList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeClusterRoleBindingList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeClusterRoleBindingListProps.go b/pods/imports/k8s/KubeClusterRoleBindingListProps.go new file mode 100644 index 000000000..29ceef580 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBindingListProps.go @@ -0,0 +1,9 @@ +package k8s + +// ClusterRoleBindingList is a collection of ClusterRoleBindings. +type KubeClusterRoleBindingListProps struct { + // Items is a list of ClusterRoleBindings. + Items *[]*KubeClusterRoleBindingProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeClusterRoleBindingList__checks.go b/pods/imports/k8s/KubeClusterRoleBindingList__checks.go new file mode 100644 index 000000000..85ff41855 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBindingList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeClusterRoleBindingList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRoleBindingList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRoleBindingList_ManifestParameters(props *KubeClusterRoleBindingListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeClusterRoleBindingList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeClusterRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go b/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go new file mode 100644 index 000000000..db782cdcd --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeClusterRoleBindingList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeClusterRoleBindingList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeClusterRoleBindingList_ManifestParameters(props *KubeClusterRoleBindingListProps) error { + return nil +} + +func validateKubeClusterRoleBindingList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeClusterRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeClusterRoleBindingProps.go b/pods/imports/k8s/KubeClusterRoleBindingProps.go new file mode 100644 index 000000000..a675c96b8 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBindingProps.go @@ -0,0 +1,15 @@ +package k8s + +// ClusterRoleBinding references a ClusterRole, but not contain it. +// +// It can reference a ClusterRole in the global namespace, and adds who information via Subject. +type KubeClusterRoleBindingProps struct { + // RoleRef can only reference a ClusterRole in the global namespace. + // + // If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable. + RoleRef *RoleRef `field:"required" json:"roleRef" yaml:"roleRef"` + // Standard object's metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Subjects holds references to the objects the role applies to. + Subjects *[]*Subject `field:"optional" json:"subjects" yaml:"subjects"` +} diff --git a/pods/imports/k8s/KubeClusterRoleBinding__checks.go b/pods/imports/k8s/KubeClusterRoleBinding__checks.go new file mode 100644 index 000000000..9e4b3f7fb --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBinding__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeClusterRoleBinding_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRoleBinding_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRoleBinding_ManifestParameters(props *KubeClusterRoleBindingProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeClusterRoleBinding_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeClusterRoleBindingParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go b/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go new file mode 100644 index 000000000..d9a38b6d6 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeClusterRoleBinding_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeClusterRoleBinding_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeClusterRoleBinding_ManifestParameters(props *KubeClusterRoleBindingProps) error { + return nil +} + +func validateKubeClusterRoleBinding_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeClusterRoleBindingParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeClusterRoleList.go b/pods/imports/k8s/KubeClusterRoleList.go new file mode 100644 index 000000000..00141ed90 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ClusterRoleList is a collection of ClusterRoles. +type KubeClusterRoleList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeClusterRoleList +type jsiiProxy_KubeClusterRoleList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeClusterRoleList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterRoleList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRoleList" API object. +func NewKubeClusterRoleList(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) KubeClusterRoleList { + _init_.Initialize() + + if err := validateNewKubeClusterRoleListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeClusterRoleList{} + + _jsii_.Create( + "k8s.KubeClusterRoleList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.ClusterRoleList" API object. +func NewKubeClusterRoleList_Override(k KubeClusterRoleList, scope constructs.Construct, id *string, props *KubeClusterRoleListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeClusterRoleList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeClusterRoleList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRoleList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeClusterRoleList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterRoleList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeClusterRoleList_Manifest(props *KubeClusterRoleListProps) interface{} { + _init_.Initialize() + + if err := validateKubeClusterRoleList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeClusterRoleList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeClusterRoleList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeClusterRoleList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeClusterRoleList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeClusterRoleList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeClusterRoleList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRoleList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeClusterRoleList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeClusterRoleList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeClusterRoleListProps.go b/pods/imports/k8s/KubeClusterRoleListProps.go new file mode 100644 index 000000000..a4f647ea9 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleListProps.go @@ -0,0 +1,9 @@ +package k8s + +// ClusterRoleList is a collection of ClusterRoles. +type KubeClusterRoleListProps struct { + // Items is a list of ClusterRoles. + Items *[]*KubeClusterRoleProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeClusterRoleList__checks.go b/pods/imports/k8s/KubeClusterRoleList__checks.go new file mode 100644 index 000000000..9e08ba16b --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeClusterRoleList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRoleList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRoleList_ManifestParameters(props *KubeClusterRoleListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeClusterRoleList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeClusterRoleListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeClusterRoleList__no_checks.go b/pods/imports/k8s/KubeClusterRoleList__no_checks.go new file mode 100644 index 000000000..042be0680 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeClusterRoleList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeClusterRoleList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeClusterRoleList_ManifestParameters(props *KubeClusterRoleListProps) error { + return nil +} + +func validateKubeClusterRoleList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeClusterRoleListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeClusterRoleProps.go b/pods/imports/k8s/KubeClusterRoleProps.go new file mode 100644 index 000000000..5d632ff36 --- /dev/null +++ b/pods/imports/k8s/KubeClusterRoleProps.go @@ -0,0 +1,13 @@ +package k8s + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type KubeClusterRoleProps struct { + // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. + // + // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller. + AggregationRule *AggregationRule `field:"optional" json:"aggregationRule" yaml:"aggregationRule"` + // Standard object's metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Rules holds all the PolicyRules for this ClusterRole. + Rules *[]*PolicyRule `field:"optional" json:"rules" yaml:"rules"` +} diff --git a/pods/imports/k8s/KubeClusterRole__checks.go b/pods/imports/k8s/KubeClusterRole__checks.go new file mode 100644 index 000000000..bcecbfb8f --- /dev/null +++ b/pods/imports/k8s/KubeClusterRole__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeClusterRole_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRole_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterRole_ManifestParameters(props *KubeClusterRoleProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeClusterRole_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeClusterRoleParameters(scope constructs.Construct, id *string, props *KubeClusterRoleProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeClusterRole__no_checks.go b/pods/imports/k8s/KubeClusterRole__no_checks.go new file mode 100644 index 000000000..c409ed02e --- /dev/null +++ b/pods/imports/k8s/KubeClusterRole__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeClusterRole_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeClusterRole_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeClusterRole_ManifestParameters(props *KubeClusterRoleProps) error { + return nil +} + +func validateKubeClusterRole_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeClusterRoleParameters(scope constructs.Construct, id *string, props *KubeClusterRoleProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go new file mode 100644 index 000000000..22f48c0f5 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ClusterTrustBundleList is a collection of ClusterTrustBundle objects. +type KubeClusterTrustBundleListV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeClusterTrustBundleListV1Alpha1 +type jsiiProxy_KubeClusterTrustBundleListV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList" API object. +func NewKubeClusterTrustBundleListV1Alpha1(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) KubeClusterTrustBundleListV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeClusterTrustBundleListV1Alpha1{} + + _jsii_.Create( + "k8s.KubeClusterTrustBundleListV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList" API object. +func NewKubeClusterTrustBundleListV1Alpha1_Override(k KubeClusterTrustBundleListV1Alpha1, scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeClusterTrustBundleListV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeClusterTrustBundleListV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleListV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleListV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeClusterTrustBundleListV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleListV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleListV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeClusterTrustBundleListV1Alpha1_Manifest(props *KubeClusterTrustBundleListV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleListV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleListV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeClusterTrustBundleListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleListV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeClusterTrustBundleListV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeClusterTrustBundleListV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go new file mode 100644 index 000000000..d84b69979 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go @@ -0,0 +1,9 @@ +package k8s + +// ClusterTrustBundleList is a collection of ClusterTrustBundle objects. +type KubeClusterTrustBundleListV1Alpha1Props struct { + // items is a collection of ClusterTrustBundle objects. + Items *[]*KubeClusterTrustBundleV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // metadata contains the list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go new file mode 100644 index 000000000..245c24579 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeClusterTrustBundleListV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterTrustBundleListV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterTrustBundleListV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleListV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go new file mode 100644 index 000000000..7b03611b0 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeClusterTrustBundleListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeClusterTrustBundleListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeClusterTrustBundleListV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleListV1Alpha1Props) error { + return nil +} + +func validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go new file mode 100644 index 000000000..cc13ebdee --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go @@ -0,0 +1,319 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates). +// +// ClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection. All service accounts have read access to ClusterTrustBundles by default. Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to. +// +// It can be optionally associated with a particular assigner, in which case it contains one valid set of trust anchors for that signer. Signers may have multiple associated ClusterTrustBundles; each is an independent set of trust anchors for that signer. Admission control is used to enforce that only users with permissions on the signer can create or modify the corresponding bundle. +type KubeClusterTrustBundleV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeClusterTrustBundleV1Alpha1 +type jsiiProxy_KubeClusterTrustBundleV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle" API object. +func NewKubeClusterTrustBundleV1Alpha1(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) KubeClusterTrustBundleV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeClusterTrustBundleV1Alpha1{} + + _jsii_.Create( + "k8s.KubeClusterTrustBundleV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle" API object. +func NewKubeClusterTrustBundleV1Alpha1_Override(k KubeClusterTrustBundleV1Alpha1, scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeClusterTrustBundleV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeClusterTrustBundleV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeClusterTrustBundleV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeClusterTrustBundleV1Alpha1_Manifest(props *KubeClusterTrustBundleV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeClusterTrustBundleV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeClusterTrustBundleV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeClusterTrustBundleV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeClusterTrustBundleV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeClusterTrustBundleV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go new file mode 100644 index 000000000..d0f615c09 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go @@ -0,0 +1,13 @@ +package k8s + +// ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates). +// +// ClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection. All service accounts have read access to ClusterTrustBundles by default. Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to. +// +// It can be optionally associated with a particular assigner, in which case it contains one valid set of trust anchors for that signer. Signers may have multiple associated ClusterTrustBundles; each is an independent set of trust anchors for that signer. Admission control is used to enforce that only users with permissions on the signer can create or modify the corresponding bundle. +type KubeClusterTrustBundleV1Alpha1Props struct { + // spec contains the signer (if any) and trust anchors. + Spec *ClusterTrustBundleSpecV1Alpha1 `field:"required" json:"spec" yaml:"spec"` + // metadata contains the object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go new file mode 100644 index 000000000..44ab02b24 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeClusterTrustBundleV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterTrustBundleV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeClusterTrustBundleV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeClusterTrustBundleV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go new file mode 100644 index 000000000..01defde18 --- /dev/null +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeClusterTrustBundleV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeClusterTrustBundleV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeClusterTrustBundleV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleV1Alpha1Props) error { + return nil +} + +func validateKubeClusterTrustBundleV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeComponentStatus.go b/pods/imports/k8s/KubeComponentStatus.go new file mode 100644 index 000000000..9fefcce9e --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatus.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +// +// Deprecated: This API is deprecated in v1.19+ +type KubeComponentStatus interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeComponentStatus +type jsiiProxy_KubeComponentStatus struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeComponentStatus) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatus) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatus) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatus) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatus) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatus) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatus) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ComponentStatus" API object. +func NewKubeComponentStatus(scope constructs.Construct, id *string, props *KubeComponentStatusProps) KubeComponentStatus { + _init_.Initialize() + + if err := validateNewKubeComponentStatusParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeComponentStatus{} + + _jsii_.Create( + "k8s.KubeComponentStatus", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ComponentStatus" API object. +func NewKubeComponentStatus_Override(k KubeComponentStatus, scope constructs.Construct, id *string, props *KubeComponentStatusProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeComponentStatus", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeComponentStatus_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeComponentStatus_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatus", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeComponentStatus_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeComponentStatus_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatus", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ComponentStatus". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeComponentStatus_Manifest(props *KubeComponentStatusProps) interface{} { + _init_.Initialize() + + if err := validateKubeComponentStatus_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatus", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeComponentStatus_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeComponentStatus_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatus", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeComponentStatus_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeComponentStatus", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeComponentStatus) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeComponentStatus) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeComponentStatus) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeComponentStatus) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeComponentStatusList.go b/pods/imports/k8s/KubeComponentStatusList.go new file mode 100644 index 000000000..f3e3beee4 --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatusList.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Status of all the conditions for the component as a list of ComponentStatus objects. +// +// Deprecated: This API is deprecated in v1.19+ +type KubeComponentStatusList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeComponentStatusList +type jsiiProxy_KubeComponentStatusList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeComponentStatusList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatusList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatusList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatusList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatusList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatusList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeComponentStatusList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ComponentStatusList" API object. +func NewKubeComponentStatusList(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) KubeComponentStatusList { + _init_.Initialize() + + if err := validateNewKubeComponentStatusListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeComponentStatusList{} + + _jsii_.Create( + "k8s.KubeComponentStatusList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ComponentStatusList" API object. +func NewKubeComponentStatusList_Override(k KubeComponentStatusList, scope constructs.Construct, id *string, props *KubeComponentStatusListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeComponentStatusList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeComponentStatusList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeComponentStatusList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatusList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeComponentStatusList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeComponentStatusList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatusList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ComponentStatusList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeComponentStatusList_Manifest(props *KubeComponentStatusListProps) interface{} { + _init_.Initialize() + + if err := validateKubeComponentStatusList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatusList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeComponentStatusList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeComponentStatusList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeComponentStatusList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeComponentStatusList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeComponentStatusList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeComponentStatusList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeComponentStatusList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeComponentStatusList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeComponentStatusList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeComponentStatusListProps.go b/pods/imports/k8s/KubeComponentStatusListProps.go new file mode 100644 index 000000000..b76ef80b0 --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatusListProps.go @@ -0,0 +1,13 @@ +package k8s + +// Status of all the conditions for the component as a list of ComponentStatus objects. +// +// Deprecated: This API is deprecated in v1.19+ +type KubeComponentStatusListProps struct { + // List of ComponentStatus objects. + Items *[]*KubeComponentStatusProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeComponentStatusList__checks.go b/pods/imports/k8s/KubeComponentStatusList__checks.go new file mode 100644 index 000000000..6cf6674be --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatusList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeComponentStatusList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeComponentStatusList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeComponentStatusList_ManifestParameters(props *KubeComponentStatusListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeComponentStatusList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeComponentStatusListParameters(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeComponentStatusList__no_checks.go b/pods/imports/k8s/KubeComponentStatusList__no_checks.go new file mode 100644 index 000000000..8655385c4 --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatusList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeComponentStatusList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeComponentStatusList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeComponentStatusList_ManifestParameters(props *KubeComponentStatusListProps) error { + return nil +} + +func validateKubeComponentStatusList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeComponentStatusListParameters(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeComponentStatusProps.go b/pods/imports/k8s/KubeComponentStatusProps.go new file mode 100644 index 000000000..8306ad97d --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatusProps.go @@ -0,0 +1,13 @@ +package k8s + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +// +// Deprecated: This API is deprecated in v1.19+ +type KubeComponentStatusProps struct { + // List of component conditions observed. + Conditions *[]*ComponentCondition `field:"optional" json:"conditions" yaml:"conditions"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeComponentStatus__checks.go b/pods/imports/k8s/KubeComponentStatus__checks.go new file mode 100644 index 000000000..045e49f1e --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatus__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeComponentStatus_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeComponentStatus_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeComponentStatus_ManifestParameters(props *KubeComponentStatusProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeComponentStatus_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeComponentStatusParameters(scope constructs.Construct, id *string, props *KubeComponentStatusProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeComponentStatus__no_checks.go b/pods/imports/k8s/KubeComponentStatus__no_checks.go new file mode 100644 index 000000000..4fba9782c --- /dev/null +++ b/pods/imports/k8s/KubeComponentStatus__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeComponentStatus_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeComponentStatus_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeComponentStatus_ManifestParameters(props *KubeComponentStatusProps) error { + return nil +} + +func validateKubeComponentStatus_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeComponentStatusParameters(scope constructs.Construct, id *string, props *KubeComponentStatusProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeConfigMap.go b/pods/imports/k8s/KubeConfigMap.go new file mode 100644 index 000000000..7d2e7327b --- /dev/null +++ b/pods/imports/k8s/KubeConfigMap.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ConfigMap holds configuration data for pods to consume. +type KubeConfigMap interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeConfigMap +type jsiiProxy_KubeConfigMap struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeConfigMap) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMap) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMap) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMap) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMap) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMap) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMap) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ConfigMap" API object. +func NewKubeConfigMap(scope constructs.Construct, id *string, props *KubeConfigMapProps) KubeConfigMap { + _init_.Initialize() + + if err := validateNewKubeConfigMapParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeConfigMap{} + + _jsii_.Create( + "k8s.KubeConfigMap", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ConfigMap" API object. +func NewKubeConfigMap_Override(k KubeConfigMap, scope constructs.Construct, id *string, props *KubeConfigMapProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeConfigMap", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeConfigMap_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeConfigMap_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeConfigMap", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeConfigMap_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeConfigMap_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeConfigMap", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ConfigMap". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeConfigMap_Manifest(props *KubeConfigMapProps) interface{} { + _init_.Initialize() + + if err := validateKubeConfigMap_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeConfigMap", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeConfigMap_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeConfigMap_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeConfigMap", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeConfigMap_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeConfigMap", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeConfigMap) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeConfigMap) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeConfigMap) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeConfigMap) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeConfigMapList.go b/pods/imports/k8s/KubeConfigMapList.go new file mode 100644 index 000000000..c87e7d8ae --- /dev/null +++ b/pods/imports/k8s/KubeConfigMapList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type KubeConfigMapList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeConfigMapList +type jsiiProxy_KubeConfigMapList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeConfigMapList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMapList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMapList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMapList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMapList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMapList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeConfigMapList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ConfigMapList" API object. +func NewKubeConfigMapList(scope constructs.Construct, id *string, props *KubeConfigMapListProps) KubeConfigMapList { + _init_.Initialize() + + if err := validateNewKubeConfigMapListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeConfigMapList{} + + _jsii_.Create( + "k8s.KubeConfigMapList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ConfigMapList" API object. +func NewKubeConfigMapList_Override(k KubeConfigMapList, scope constructs.Construct, id *string, props *KubeConfigMapListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeConfigMapList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeConfigMapList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeConfigMapList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeConfigMapList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeConfigMapList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeConfigMapList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeConfigMapList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ConfigMapList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeConfigMapList_Manifest(props *KubeConfigMapListProps) interface{} { + _init_.Initialize() + + if err := validateKubeConfigMapList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeConfigMapList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeConfigMapList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeConfigMapList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeConfigMapList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeConfigMapList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeConfigMapList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeConfigMapList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeConfigMapList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeConfigMapList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeConfigMapList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeConfigMapListProps.go b/pods/imports/k8s/KubeConfigMapListProps.go new file mode 100644 index 000000000..83e105910 --- /dev/null +++ b/pods/imports/k8s/KubeConfigMapListProps.go @@ -0,0 +1,9 @@ +package k8s + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type KubeConfigMapListProps struct { + // Items is the list of ConfigMaps. + Items *[]*KubeConfigMapProps `field:"required" json:"items" yaml:"items"` + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeConfigMapList__checks.go b/pods/imports/k8s/KubeConfigMapList__checks.go new file mode 100644 index 000000000..75c3e8252 --- /dev/null +++ b/pods/imports/k8s/KubeConfigMapList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeConfigMapList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeConfigMapList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeConfigMapList_ManifestParameters(props *KubeConfigMapListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeConfigMapList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeConfigMapListParameters(scope constructs.Construct, id *string, props *KubeConfigMapListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeConfigMapList__no_checks.go b/pods/imports/k8s/KubeConfigMapList__no_checks.go new file mode 100644 index 000000000..f3a8778f4 --- /dev/null +++ b/pods/imports/k8s/KubeConfigMapList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeConfigMapList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeConfigMapList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeConfigMapList_ManifestParameters(props *KubeConfigMapListProps) error { + return nil +} + +func validateKubeConfigMapList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeConfigMapListParameters(scope constructs.Construct, id *string, props *KubeConfigMapListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeConfigMapProps.go b/pods/imports/k8s/KubeConfigMapProps.go new file mode 100644 index 000000000..32a80bc45 --- /dev/null +++ b/pods/imports/k8s/KubeConfigMapProps.go @@ -0,0 +1,21 @@ +package k8s + +// ConfigMap holds configuration data for pods to consume. +type KubeConfigMapProps struct { + // BinaryData contains the binary data. + // + // Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet. + BinaryData *map[string]*string `field:"optional" json:"binaryData" yaml:"binaryData"` + // Data contains the configuration data. + // + // Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process. + Data *map[string]*string `field:"optional" json:"data" yaml:"data"` + // Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). + // + // If not set to true, the field can be modified at any time. Defaulted to nil. + Immutable *bool `field:"optional" json:"immutable" yaml:"immutable"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeConfigMap__checks.go b/pods/imports/k8s/KubeConfigMap__checks.go new file mode 100644 index 000000000..87ad268f5 --- /dev/null +++ b/pods/imports/k8s/KubeConfigMap__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeConfigMap_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeConfigMap_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeConfigMap_ManifestParameters(props *KubeConfigMapProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeConfigMap_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeConfigMapParameters(scope constructs.Construct, id *string, props *KubeConfigMapProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeConfigMap__no_checks.go b/pods/imports/k8s/KubeConfigMap__no_checks.go new file mode 100644 index 000000000..83868e871 --- /dev/null +++ b/pods/imports/k8s/KubeConfigMap__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeConfigMap_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeConfigMap_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeConfigMap_ManifestParameters(props *KubeConfigMapProps) error { + return nil +} + +func validateKubeConfigMap_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeConfigMapParameters(scope constructs.Construct, id *string, props *KubeConfigMapProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeControllerRevision.go b/pods/imports/k8s/KubeControllerRevision.go new file mode 100644 index 000000000..dbfa6ad3a --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevision.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ControllerRevision implements an immutable snapshot of state data. +// +// Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers. +type KubeControllerRevision interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeControllerRevision +type jsiiProxy_KubeControllerRevision struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeControllerRevision) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevision) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevision) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevision) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevision) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevision) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevision) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.ControllerRevision" API object. +func NewKubeControllerRevision(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) KubeControllerRevision { + _init_.Initialize() + + if err := validateNewKubeControllerRevisionParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeControllerRevision{} + + _jsii_.Create( + "k8s.KubeControllerRevision", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.ControllerRevision" API object. +func NewKubeControllerRevision_Override(k KubeControllerRevision, scope constructs.Construct, id *string, props *KubeControllerRevisionProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeControllerRevision", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeControllerRevision_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeControllerRevision_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevision", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeControllerRevision_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeControllerRevision_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevision", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ControllerRevision". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeControllerRevision_Manifest(props *KubeControllerRevisionProps) interface{} { + _init_.Initialize() + + if err := validateKubeControllerRevision_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevision", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeControllerRevision_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeControllerRevision_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevision", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeControllerRevision_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeControllerRevision", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeControllerRevision) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeControllerRevision) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeControllerRevision) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeControllerRevision) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeControllerRevisionList.go b/pods/imports/k8s/KubeControllerRevisionList.go new file mode 100644 index 000000000..888e8cb64 --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevisionList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +type KubeControllerRevisionList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeControllerRevisionList +type jsiiProxy_KubeControllerRevisionList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeControllerRevisionList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevisionList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevisionList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevisionList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevisionList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevisionList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeControllerRevisionList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.ControllerRevisionList" API object. +func NewKubeControllerRevisionList(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) KubeControllerRevisionList { + _init_.Initialize() + + if err := validateNewKubeControllerRevisionListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeControllerRevisionList{} + + _jsii_.Create( + "k8s.KubeControllerRevisionList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.ControllerRevisionList" API object. +func NewKubeControllerRevisionList_Override(k KubeControllerRevisionList, scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeControllerRevisionList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeControllerRevisionList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeControllerRevisionList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevisionList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeControllerRevisionList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeControllerRevisionList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevisionList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ControllerRevisionList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeControllerRevisionList_Manifest(props *KubeControllerRevisionListProps) interface{} { + _init_.Initialize() + + if err := validateKubeControllerRevisionList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevisionList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeControllerRevisionList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeControllerRevisionList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeControllerRevisionList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeControllerRevisionList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeControllerRevisionList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeControllerRevisionList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeControllerRevisionList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeControllerRevisionList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeControllerRevisionList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeControllerRevisionListProps.go b/pods/imports/k8s/KubeControllerRevisionListProps.go new file mode 100644 index 000000000..d7516daa9 --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevisionListProps.go @@ -0,0 +1,9 @@ +package k8s + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +type KubeControllerRevisionListProps struct { + // Items is the list of ControllerRevisions. + Items *[]*KubeControllerRevisionProps `field:"required" json:"items" yaml:"items"` + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeControllerRevisionList__checks.go b/pods/imports/k8s/KubeControllerRevisionList__checks.go new file mode 100644 index 000000000..185a89714 --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevisionList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeControllerRevisionList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeControllerRevisionList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeControllerRevisionList_ManifestParameters(props *KubeControllerRevisionListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeControllerRevisionList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeControllerRevisionListParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeControllerRevisionList__no_checks.go b/pods/imports/k8s/KubeControllerRevisionList__no_checks.go new file mode 100644 index 000000000..b238f98c1 --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevisionList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeControllerRevisionList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeControllerRevisionList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeControllerRevisionList_ManifestParameters(props *KubeControllerRevisionListProps) error { + return nil +} + +func validateKubeControllerRevisionList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeControllerRevisionListParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeControllerRevisionProps.go b/pods/imports/k8s/KubeControllerRevisionProps.go new file mode 100644 index 000000000..c54f13ab8 --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevisionProps.go @@ -0,0 +1,15 @@ +package k8s + +// ControllerRevision implements an immutable snapshot of state data. +// +// Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers. +type KubeControllerRevisionProps struct { + // Revision indicates the revision of the state represented by Data. + Revision *float64 `field:"required" json:"revision" yaml:"revision"` + // Data is the serialized representation of the state. + Data interface{} `field:"optional" json:"data" yaml:"data"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeControllerRevision__checks.go b/pods/imports/k8s/KubeControllerRevision__checks.go new file mode 100644 index 000000000..177c7a9bb --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevision__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeControllerRevision_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeControllerRevision_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeControllerRevision_ManifestParameters(props *KubeControllerRevisionProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeControllerRevision_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeControllerRevisionParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeControllerRevision__no_checks.go b/pods/imports/k8s/KubeControllerRevision__no_checks.go new file mode 100644 index 000000000..7abf26f6c --- /dev/null +++ b/pods/imports/k8s/KubeControllerRevision__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeControllerRevision_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeControllerRevision_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeControllerRevision_ManifestParameters(props *KubeControllerRevisionProps) error { + return nil +} + +func validateKubeControllerRevision_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeControllerRevisionParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCronJob.go b/pods/imports/k8s/KubeCronJob.go new file mode 100644 index 000000000..7d4a38755 --- /dev/null +++ b/pods/imports/k8s/KubeCronJob.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CronJob represents the configuration of a single cron job. +type KubeCronJob interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCronJob +type jsiiProxy_KubeCronJob struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCronJob) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJob) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJob) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJob) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJob) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJob) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJob) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.batch.v1.CronJob" API object. +func NewKubeCronJob(scope constructs.Construct, id *string, props *KubeCronJobProps) KubeCronJob { + _init_.Initialize() + + if err := validateNewKubeCronJobParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCronJob{} + + _jsii_.Create( + "k8s.KubeCronJob", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.batch.v1.CronJob" API object. +func NewKubeCronJob_Override(k KubeCronJob, scope constructs.Construct, id *string, props *KubeCronJobProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCronJob", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCronJob_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCronJob_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCronJob", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCronJob_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCronJob_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCronJob", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.CronJob". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCronJob_Manifest(props *KubeCronJobProps) interface{} { + _init_.Initialize() + + if err := validateKubeCronJob_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCronJob", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCronJob_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCronJob_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCronJob", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCronJob_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCronJob", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCronJob) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCronJob) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCronJob) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCronJob) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCronJobList.go b/pods/imports/k8s/KubeCronJobList.go new file mode 100644 index 000000000..369015559 --- /dev/null +++ b/pods/imports/k8s/KubeCronJobList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CronJobList is a collection of cron jobs. +type KubeCronJobList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCronJobList +type jsiiProxy_KubeCronJobList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCronJobList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJobList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJobList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJobList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJobList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJobList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCronJobList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.batch.v1.CronJobList" API object. +func NewKubeCronJobList(scope constructs.Construct, id *string, props *KubeCronJobListProps) KubeCronJobList { + _init_.Initialize() + + if err := validateNewKubeCronJobListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCronJobList{} + + _jsii_.Create( + "k8s.KubeCronJobList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.batch.v1.CronJobList" API object. +func NewKubeCronJobList_Override(k KubeCronJobList, scope constructs.Construct, id *string, props *KubeCronJobListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCronJobList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCronJobList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCronJobList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCronJobList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCronJobList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCronJobList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCronJobList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.CronJobList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCronJobList_Manifest(props *KubeCronJobListProps) interface{} { + _init_.Initialize() + + if err := validateKubeCronJobList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCronJobList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCronJobList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCronJobList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCronJobList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCronJobList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCronJobList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCronJobList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCronJobList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCronJobList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCronJobList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCronJobListProps.go b/pods/imports/k8s/KubeCronJobListProps.go new file mode 100644 index 000000000..06053af41 --- /dev/null +++ b/pods/imports/k8s/KubeCronJobListProps.go @@ -0,0 +1,11 @@ +package k8s + +// CronJobList is a collection of cron jobs. +type KubeCronJobListProps struct { + // items is the list of CronJobs. + Items *[]*KubeCronJobProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCronJobList__checks.go b/pods/imports/k8s/KubeCronJobList__checks.go new file mode 100644 index 000000000..9b439e7c4 --- /dev/null +++ b/pods/imports/k8s/KubeCronJobList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCronJobList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCronJobList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCronJobList_ManifestParameters(props *KubeCronJobListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCronJobList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCronJobListParameters(scope constructs.Construct, id *string, props *KubeCronJobListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCronJobList__no_checks.go b/pods/imports/k8s/KubeCronJobList__no_checks.go new file mode 100644 index 000000000..fa16605cd --- /dev/null +++ b/pods/imports/k8s/KubeCronJobList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCronJobList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCronJobList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCronJobList_ManifestParameters(props *KubeCronJobListProps) error { + return nil +} + +func validateKubeCronJobList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCronJobListParameters(scope constructs.Construct, id *string, props *KubeCronJobListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCronJobProps.go b/pods/imports/k8s/KubeCronJobProps.go new file mode 100644 index 000000000..14da7cd26 --- /dev/null +++ b/pods/imports/k8s/KubeCronJobProps.go @@ -0,0 +1,13 @@ +package k8s + +// CronJob represents the configuration of a single cron job. +type KubeCronJobProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of a cron job, including the schedule. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *CronJobSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeCronJob__checks.go b/pods/imports/k8s/KubeCronJob__checks.go new file mode 100644 index 000000000..8c86238dd --- /dev/null +++ b/pods/imports/k8s/KubeCronJob__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCronJob_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCronJob_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCronJob_ManifestParameters(props *KubeCronJobProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCronJob_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCronJobParameters(scope constructs.Construct, id *string, props *KubeCronJobProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCronJob__no_checks.go b/pods/imports/k8s/KubeCronJob__no_checks.go new file mode 100644 index 000000000..2e3bce1c5 --- /dev/null +++ b/pods/imports/k8s/KubeCronJob__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCronJob_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCronJob_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCronJob_ManifestParameters(props *KubeCronJobProps) error { + return nil +} + +func validateKubeCronJob_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCronJobParameters(scope constructs.Construct, id *string, props *KubeCronJobProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCsiDriver.go b/pods/imports/k8s/KubeCsiDriver.go new file mode 100644 index 000000000..703e5bf75 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriver.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. +// +// Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced. +type KubeCsiDriver interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCsiDriver +type jsiiProxy_KubeCsiDriver struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCsiDriver) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriver) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriver) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriver) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriver) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriver) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriver) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.CSIDriver" API object. +func NewKubeCsiDriver(scope constructs.Construct, id *string, props *KubeCsiDriverProps) KubeCsiDriver { + _init_.Initialize() + + if err := validateNewKubeCsiDriverParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCsiDriver{} + + _jsii_.Create( + "k8s.KubeCsiDriver", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.CSIDriver" API object. +func NewKubeCsiDriver_Override(k KubeCsiDriver, scope constructs.Construct, id *string, props *KubeCsiDriverProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCsiDriver", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCsiDriver_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiDriver_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriver", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCsiDriver_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiDriver_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriver", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIDriver". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCsiDriver_Manifest(props *KubeCsiDriverProps) interface{} { + _init_.Initialize() + + if err := validateKubeCsiDriver_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriver", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCsiDriver_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCsiDriver_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriver", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCsiDriver_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCsiDriver", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCsiDriver) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCsiDriver) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCsiDriver) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCsiDriver) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCsiDriverList.go b/pods/imports/k8s/KubeCsiDriverList.go new file mode 100644 index 000000000..d0a3d4bb8 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriverList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CSIDriverList is a collection of CSIDriver objects. +type KubeCsiDriverList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCsiDriverList +type jsiiProxy_KubeCsiDriverList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCsiDriverList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriverList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriverList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriverList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriverList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriverList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiDriverList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.CSIDriverList" API object. +func NewKubeCsiDriverList(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) KubeCsiDriverList { + _init_.Initialize() + + if err := validateNewKubeCsiDriverListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCsiDriverList{} + + _jsii_.Create( + "k8s.KubeCsiDriverList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.CSIDriverList" API object. +func NewKubeCsiDriverList_Override(k KubeCsiDriverList, scope constructs.Construct, id *string, props *KubeCsiDriverListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCsiDriverList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCsiDriverList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiDriverList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriverList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCsiDriverList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiDriverList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriverList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIDriverList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCsiDriverList_Manifest(props *KubeCsiDriverListProps) interface{} { + _init_.Initialize() + + if err := validateKubeCsiDriverList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriverList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCsiDriverList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCsiDriverList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCsiDriverList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCsiDriverList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCsiDriverList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCsiDriverList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCsiDriverList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCsiDriverList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCsiDriverList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCsiDriverListProps.go b/pods/imports/k8s/KubeCsiDriverListProps.go new file mode 100644 index 000000000..96e0efa65 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriverListProps.go @@ -0,0 +1,9 @@ +package k8s + +// CSIDriverList is a collection of CSIDriver objects. +type KubeCsiDriverListProps struct { + // items is the list of CSIDriver. + Items *[]*KubeCsiDriverProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCsiDriverList__checks.go b/pods/imports/k8s/KubeCsiDriverList__checks.go new file mode 100644 index 000000000..39de60b30 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriverList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCsiDriverList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiDriverList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiDriverList_ManifestParameters(props *KubeCsiDriverListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCsiDriverList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCsiDriverListParameters(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCsiDriverList__no_checks.go b/pods/imports/k8s/KubeCsiDriverList__no_checks.go new file mode 100644 index 000000000..51669c822 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriverList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCsiDriverList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCsiDriverList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCsiDriverList_ManifestParameters(props *KubeCsiDriverListProps) error { + return nil +} + +func validateKubeCsiDriverList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCsiDriverListParameters(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCsiDriverProps.go b/pods/imports/k8s/KubeCsiDriverProps.go new file mode 100644 index 000000000..1dc4c6845 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriverProps.go @@ -0,0 +1,13 @@ +package k8s + +// CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. +// +// Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced. +type KubeCsiDriverProps struct { + // spec represents the specification of the CSI Driver. + Spec *CsiDriverSpec `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + // + // metadata.Name indicates the name of the CSI driver that this object refers to; it MUST be the same name returned by the CSI GetPluginName() call for that driver. The driver name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), dots (.), and alphanumerics between. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCsiDriver__checks.go b/pods/imports/k8s/KubeCsiDriver__checks.go new file mode 100644 index 000000000..36925cf53 --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriver__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCsiDriver_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiDriver_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiDriver_ManifestParameters(props *KubeCsiDriverProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCsiDriver_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCsiDriverParameters(scope constructs.Construct, id *string, props *KubeCsiDriverProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCsiDriver__no_checks.go b/pods/imports/k8s/KubeCsiDriver__no_checks.go new file mode 100644 index 000000000..deddc20fa --- /dev/null +++ b/pods/imports/k8s/KubeCsiDriver__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCsiDriver_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCsiDriver_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCsiDriver_ManifestParameters(props *KubeCsiDriverProps) error { + return nil +} + +func validateKubeCsiDriver_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCsiDriverParameters(scope constructs.Construct, id *string, props *KubeCsiDriverProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCsiNode.go b/pods/imports/k8s/KubeCsiNode.go new file mode 100644 index 000000000..600e94eb1 --- /dev/null +++ b/pods/imports/k8s/KubeCsiNode.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CSINode holds information about all CSI drivers installed on a node. +// +// CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object. +type KubeCsiNode interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCsiNode +type jsiiProxy_KubeCsiNode struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCsiNode) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNode) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNode) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNode) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNode) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNode) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNode) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.CSINode" API object. +func NewKubeCsiNode(scope constructs.Construct, id *string, props *KubeCsiNodeProps) KubeCsiNode { + _init_.Initialize() + + if err := validateNewKubeCsiNodeParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCsiNode{} + + _jsii_.Create( + "k8s.KubeCsiNode", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.CSINode" API object. +func NewKubeCsiNode_Override(k KubeCsiNode, scope constructs.Construct, id *string, props *KubeCsiNodeProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCsiNode", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCsiNode_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiNode_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiNode", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCsiNode_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiNode_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiNode", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSINode". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCsiNode_Manifest(props *KubeCsiNodeProps) interface{} { + _init_.Initialize() + + if err := validateKubeCsiNode_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCsiNode", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCsiNode_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCsiNode_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCsiNode", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCsiNode_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCsiNode", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCsiNode) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCsiNode) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCsiNode) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCsiNode) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCsiNodeList.go b/pods/imports/k8s/KubeCsiNodeList.go new file mode 100644 index 000000000..c17b26923 --- /dev/null +++ b/pods/imports/k8s/KubeCsiNodeList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CSINodeList is a collection of CSINode objects. +type KubeCsiNodeList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCsiNodeList +type jsiiProxy_KubeCsiNodeList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCsiNodeList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNodeList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNodeList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNodeList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNodeList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNodeList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiNodeList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.CSINodeList" API object. +func NewKubeCsiNodeList(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) KubeCsiNodeList { + _init_.Initialize() + + if err := validateNewKubeCsiNodeListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCsiNodeList{} + + _jsii_.Create( + "k8s.KubeCsiNodeList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.CSINodeList" API object. +func NewKubeCsiNodeList_Override(k KubeCsiNodeList, scope constructs.Construct, id *string, props *KubeCsiNodeListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCsiNodeList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCsiNodeList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiNodeList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiNodeList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCsiNodeList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiNodeList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiNodeList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSINodeList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCsiNodeList_Manifest(props *KubeCsiNodeListProps) interface{} { + _init_.Initialize() + + if err := validateKubeCsiNodeList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCsiNodeList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCsiNodeList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCsiNodeList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCsiNodeList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCsiNodeList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCsiNodeList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCsiNodeList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCsiNodeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCsiNodeList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCsiNodeList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCsiNodeListProps.go b/pods/imports/k8s/KubeCsiNodeListProps.go new file mode 100644 index 000000000..f39edaeaa --- /dev/null +++ b/pods/imports/k8s/KubeCsiNodeListProps.go @@ -0,0 +1,9 @@ +package k8s + +// CSINodeList is a collection of CSINode objects. +type KubeCsiNodeListProps struct { + // items is the list of CSINode. + Items *[]*KubeCsiNodeProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCsiNodeList__checks.go b/pods/imports/k8s/KubeCsiNodeList__checks.go new file mode 100644 index 000000000..5725c65a9 --- /dev/null +++ b/pods/imports/k8s/KubeCsiNodeList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCsiNodeList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiNodeList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiNodeList_ManifestParameters(props *KubeCsiNodeListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCsiNodeList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCsiNodeListParameters(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCsiNodeList__no_checks.go b/pods/imports/k8s/KubeCsiNodeList__no_checks.go new file mode 100644 index 000000000..6fd212fba --- /dev/null +++ b/pods/imports/k8s/KubeCsiNodeList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCsiNodeList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCsiNodeList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCsiNodeList_ManifestParameters(props *KubeCsiNodeListProps) error { + return nil +} + +func validateKubeCsiNodeList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCsiNodeListParameters(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCsiNodeProps.go b/pods/imports/k8s/KubeCsiNodeProps.go new file mode 100644 index 000000000..c0b685063 --- /dev/null +++ b/pods/imports/k8s/KubeCsiNodeProps.go @@ -0,0 +1,13 @@ +package k8s + +// CSINode holds information about all CSI drivers installed on a node. +// +// CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object. +type KubeCsiNodeProps struct { + // spec is the specification of CSINode. + Spec *CsiNodeSpec `field:"required" json:"spec" yaml:"spec"` + // Standard object's metadata. + // + // metadata.name must be the Kubernetes node name. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCsiNode__checks.go b/pods/imports/k8s/KubeCsiNode__checks.go new file mode 100644 index 000000000..fb1cafcc3 --- /dev/null +++ b/pods/imports/k8s/KubeCsiNode__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCsiNode_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiNode_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiNode_ManifestParameters(props *KubeCsiNodeProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCsiNode_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCsiNodeParameters(scope constructs.Construct, id *string, props *KubeCsiNodeProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCsiNode__no_checks.go b/pods/imports/k8s/KubeCsiNode__no_checks.go new file mode 100644 index 000000000..ec00f542c --- /dev/null +++ b/pods/imports/k8s/KubeCsiNode__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCsiNode_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCsiNode_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCsiNode_ManifestParameters(props *KubeCsiNodeProps) error { + return nil +} + +func validateKubeCsiNode_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCsiNodeParameters(scope constructs.Construct, id *string, props *KubeCsiNodeProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacity.go b/pods/imports/k8s/KubeCsiStorageCapacity.go new file mode 100644 index 000000000..089d7f152 --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacity.go @@ -0,0 +1,325 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CSIStorageCapacity stores the result of one CSI GetCapacity call. +// +// For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes. +// +// For example this can express things like: - StorageClass "standard" has "1234 GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123" +// +// The following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero +// +// The producer of these objects can decide which approach is more suitable. +// +// They are consumed by the kube-scheduler when a CSI driver opts into capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler compares the MaximumVolumeSize against the requested size of pending volumes to filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a comparison against the less precise Capacity. If that is also unset, the scheduler assumes that capacity is insufficient and tries some other node. +type KubeCsiStorageCapacity interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCsiStorageCapacity +type jsiiProxy_KubeCsiStorageCapacity struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacity) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.CSIStorageCapacity" API object. +func NewKubeCsiStorageCapacity(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) KubeCsiStorageCapacity { + _init_.Initialize() + + if err := validateNewKubeCsiStorageCapacityParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCsiStorageCapacity{} + + _jsii_.Create( + "k8s.KubeCsiStorageCapacity", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.CSIStorageCapacity" API object. +func NewKubeCsiStorageCapacity_Override(k KubeCsiStorageCapacity, scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCsiStorageCapacity", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCsiStorageCapacity_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacity_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacity", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCsiStorageCapacity_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacity_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacity", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIStorageCapacity". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCsiStorageCapacity_Manifest(props *KubeCsiStorageCapacityProps) interface{} { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacity_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacity", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCsiStorageCapacity_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacity_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacity", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCsiStorageCapacity_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCsiStorageCapacity", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCsiStorageCapacity) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCsiStorageCapacity) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCsiStorageCapacity) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCsiStorageCapacity) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList.go b/pods/imports/k8s/KubeCsiStorageCapacityList.go new file mode 100644 index 000000000..348c092ad --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacityList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CSIStorageCapacityList is a collection of CSIStorageCapacity objects. +type KubeCsiStorageCapacityList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCsiStorageCapacityList +type jsiiProxy_KubeCsiStorageCapacityList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCsiStorageCapacityList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.CSIStorageCapacityList" API object. +func NewKubeCsiStorageCapacityList(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) KubeCsiStorageCapacityList { + _init_.Initialize() + + if err := validateNewKubeCsiStorageCapacityListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCsiStorageCapacityList{} + + _jsii_.Create( + "k8s.KubeCsiStorageCapacityList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.CSIStorageCapacityList" API object. +func NewKubeCsiStorageCapacityList_Override(k KubeCsiStorageCapacityList, scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCsiStorageCapacityList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCsiStorageCapacityList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacityList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacityList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCsiStorageCapacityList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacityList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacityList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIStorageCapacityList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCsiStorageCapacityList_Manifest(props *KubeCsiStorageCapacityListProps) interface{} { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacityList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacityList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCsiStorageCapacityList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCsiStorageCapacityList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCsiStorageCapacityList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCsiStorageCapacityList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCsiStorageCapacityList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCsiStorageCapacityList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCsiStorageCapacityList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCsiStorageCapacityList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCsiStorageCapacityList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacityListProps.go b/pods/imports/k8s/KubeCsiStorageCapacityListProps.go new file mode 100644 index 000000000..159aefdd7 --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacityListProps.go @@ -0,0 +1,9 @@ +package k8s + +// CSIStorageCapacityList is a collection of CSIStorageCapacity objects. +type KubeCsiStorageCapacityListProps struct { + // items is the list of CSIStorageCapacity objects. + Items *[]*KubeCsiStorageCapacityProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go b/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go new file mode 100644 index 000000000..c688ae9dc --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCsiStorageCapacityList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiStorageCapacityList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiStorageCapacityList_ManifestParameters(props *KubeCsiStorageCapacityListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCsiStorageCapacityList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCsiStorageCapacityListParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go b/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go new file mode 100644 index 000000000..e8a31739a --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCsiStorageCapacityList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCsiStorageCapacityList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCsiStorageCapacityList_ManifestParameters(props *KubeCsiStorageCapacityListProps) error { + return nil +} + +func validateKubeCsiStorageCapacityList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCsiStorageCapacityListParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacityProps.go b/pods/imports/k8s/KubeCsiStorageCapacityProps.go new file mode 100644 index 000000000..4b85037cf --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacityProps.go @@ -0,0 +1,39 @@ +package k8s + +// CSIStorageCapacity stores the result of one CSI GetCapacity call. +// +// For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes. +// +// For example this can express things like: - StorageClass "standard" has "1234 GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123" +// +// The following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero +// +// The producer of these objects can decide which approach is more suitable. +// +// They are consumed by the kube-scheduler when a CSI driver opts into capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler compares the MaximumVolumeSize against the requested size of pending volumes to filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a comparison against the less precise Capacity. If that is also unset, the scheduler assumes that capacity is insufficient and tries some other node. +type KubeCsiStorageCapacityProps struct { + // storageClassName represents the name of the StorageClass that the reported capacity applies to. + // + // It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable. + StorageClassName *string `field:"required" json:"storageClassName" yaml:"storageClassName"` + // capacity is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. + // + // The semantic is currently (CSI spec 1.2) defined as: The available capacity, in bytes, of the storage that can be used to provision volumes. If not set, that information is currently unavailable. + Capacity Quantity `field:"optional" json:"capacity" yaml:"capacity"` + // maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. + // + // This is defined since CSI spec 1.4.0 as the largest size that may be used in a CreateVolumeRequest.capacity_range.required_bytes field to create a volume with the same parameters as those in GetCapacityRequest. The corresponding value in the Kubernetes API is ResourceRequirements.Requests in a volume claim. + MaximumVolumeSize Quantity `field:"optional" json:"maximumVolumeSize" yaml:"maximumVolumeSize"` + // Standard object's metadata. + // + // The name has no particular meaning. It must be a DNS subdomain (dots allowed, 253 characters). To ensure that there are no conflicts with other CSI drivers on the cluster, the recommendation is to use csisc-, a generated name, or a reverse-domain name which ends with the unique CSI driver name. + // + // Objects are namespaced. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // nodeTopology defines which nodes have access to the storage for which capacity was reported. + // + // If not set, the storage is not accessible from any node in the cluster. If empty, the storage is accessible from all nodes. This field is immutable. + NodeTopology *LabelSelector `field:"optional" json:"nodeTopology" yaml:"nodeTopology"` +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacity__checks.go b/pods/imports/k8s/KubeCsiStorageCapacity__checks.go new file mode 100644 index 000000000..61f64dd1a --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacity__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCsiStorageCapacity_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiStorageCapacity_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCsiStorageCapacity_ManifestParameters(props *KubeCsiStorageCapacityProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCsiStorageCapacity_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCsiStorageCapacityParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go b/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go new file mode 100644 index 000000000..20b92834d --- /dev/null +++ b/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCsiStorageCapacity_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCsiStorageCapacity_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCsiStorageCapacity_ManifestParameters(props *KubeCsiStorageCapacityProps) error { + return nil +} + +func validateKubeCsiStorageCapacity_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCsiStorageCapacityParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinition.go b/pods/imports/k8s/KubeCustomResourceDefinition.go new file mode 100644 index 000000000..c0bc4a67a --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinition.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CustomResourceDefinition represents a resource that should be exposed on the API server. +// +// Its name MUST be in the format <.spec.name>.<.spec.group>. +type KubeCustomResourceDefinition interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCustomResourceDefinition +type jsiiProxy_KubeCustomResourceDefinition struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinition) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" API object. +func NewKubeCustomResourceDefinition(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) KubeCustomResourceDefinition { + _init_.Initialize() + + if err := validateNewKubeCustomResourceDefinitionParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCustomResourceDefinition{} + + _jsii_.Create( + "k8s.KubeCustomResourceDefinition", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" API object. +func NewKubeCustomResourceDefinition_Override(k KubeCustomResourceDefinition, scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCustomResourceDefinition", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCustomResourceDefinition_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinition_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinition", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCustomResourceDefinition_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinition_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinition", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCustomResourceDefinition_Manifest(props *KubeCustomResourceDefinitionProps) interface{} { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinition_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinition", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCustomResourceDefinition_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinition_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinition", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCustomResourceDefinition_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCustomResourceDefinition", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCustomResourceDefinition) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCustomResourceDefinition) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCustomResourceDefinition) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCustomResourceDefinition) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList.go b/pods/imports/k8s/KubeCustomResourceDefinitionList.go new file mode 100644 index 000000000..ae69c207a --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// CustomResourceDefinitionList is a list of CustomResourceDefinition objects. +type KubeCustomResourceDefinitionList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeCustomResourceDefinitionList +type jsiiProxy_KubeCustomResourceDefinitionList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeCustomResourceDefinitionList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" API object. +func NewKubeCustomResourceDefinitionList(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) KubeCustomResourceDefinitionList { + _init_.Initialize() + + if err := validateNewKubeCustomResourceDefinitionListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeCustomResourceDefinitionList{} + + _jsii_.Create( + "k8s.KubeCustomResourceDefinitionList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" API object. +func NewKubeCustomResourceDefinitionList_Override(k KubeCustomResourceDefinitionList, scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeCustomResourceDefinitionList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeCustomResourceDefinitionList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinitionList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinitionList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeCustomResourceDefinitionList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinitionList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinitionList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeCustomResourceDefinitionList_Manifest(props *KubeCustomResourceDefinitionListProps) interface{} { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinitionList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinitionList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeCustomResourceDefinitionList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeCustomResourceDefinitionList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeCustomResourceDefinitionList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeCustomResourceDefinitionList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeCustomResourceDefinitionList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeCustomResourceDefinitionList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeCustomResourceDefinitionList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeCustomResourceDefinitionList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeCustomResourceDefinitionList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go b/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go new file mode 100644 index 000000000..242d8ca7e --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go @@ -0,0 +1,9 @@ +package k8s + +// CustomResourceDefinitionList is a list of CustomResourceDefinition objects. +type KubeCustomResourceDefinitionListProps struct { + // items list individual CustomResourceDefinition objects. + Items *[]*KubeCustomResourceDefinitionProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go b/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go new file mode 100644 index 000000000..1c152a7a1 --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCustomResourceDefinitionList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCustomResourceDefinitionList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCustomResourceDefinitionList_ManifestParameters(props *KubeCustomResourceDefinitionListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCustomResourceDefinitionList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCustomResourceDefinitionListParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go b/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go new file mode 100644 index 000000000..dc79c859a --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCustomResourceDefinitionList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCustomResourceDefinitionList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCustomResourceDefinitionList_ManifestParameters(props *KubeCustomResourceDefinitionListProps) error { + return nil +} + +func validateKubeCustomResourceDefinitionList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCustomResourceDefinitionListParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionProps.go b/pods/imports/k8s/KubeCustomResourceDefinitionProps.go new file mode 100644 index 000000000..4dd1068c3 --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinitionProps.go @@ -0,0 +1,11 @@ +package k8s + +// CustomResourceDefinition represents a resource that should be exposed on the API server. +// +// Its name MUST be in the format <.spec.name>.<.spec.group>. +type KubeCustomResourceDefinitionProps struct { + // spec describes how the user wants the resources to appear. + Spec *CustomResourceDefinitionSpec `field:"required" json:"spec" yaml:"spec"` + // Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinition__checks.go b/pods/imports/k8s/KubeCustomResourceDefinition__checks.go new file mode 100644 index 000000000..a241195a4 --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinition__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeCustomResourceDefinition_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeCustomResourceDefinition_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeCustomResourceDefinition_ManifestParameters(props *KubeCustomResourceDefinitionProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeCustomResourceDefinition_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeCustomResourceDefinitionParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go b/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go new file mode 100644 index 000000000..3126c459a --- /dev/null +++ b/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeCustomResourceDefinition_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeCustomResourceDefinition_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeCustomResourceDefinition_ManifestParameters(props *KubeCustomResourceDefinitionProps) error { + return nil +} + +func validateKubeCustomResourceDefinition_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeCustomResourceDefinitionParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeDaemonSet.go b/pods/imports/k8s/KubeDaemonSet.go new file mode 100644 index 000000000..294514635 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSet.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DaemonSet represents the configuration of a daemon set. +type KubeDaemonSet interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDaemonSet +type jsiiProxy_KubeDaemonSet struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDaemonSet) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSet) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSet) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSet) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSet) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSet) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSet) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.DaemonSet" API object. +func NewKubeDaemonSet(scope constructs.Construct, id *string, props *KubeDaemonSetProps) KubeDaemonSet { + _init_.Initialize() + + if err := validateNewKubeDaemonSetParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDaemonSet{} + + _jsii_.Create( + "k8s.KubeDaemonSet", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.DaemonSet" API object. +func NewKubeDaemonSet_Override(k KubeDaemonSet, scope constructs.Construct, id *string, props *KubeDaemonSetProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDaemonSet", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDaemonSet_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDaemonSet_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSet", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDaemonSet_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDaemonSet_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSet", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DaemonSet". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDaemonSet_Manifest(props *KubeDaemonSetProps) interface{} { + _init_.Initialize() + + if err := validateKubeDaemonSet_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSet", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDaemonSet_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDaemonSet_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSet", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDaemonSet_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDaemonSet", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDaemonSet) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDaemonSet) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDaemonSet) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDaemonSet) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDaemonSetList.go b/pods/imports/k8s/KubeDaemonSetList.go new file mode 100644 index 000000000..80442eba6 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSetList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DaemonSetList is a collection of daemon sets. +type KubeDaemonSetList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDaemonSetList +type jsiiProxy_KubeDaemonSetList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDaemonSetList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSetList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSetList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSetList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSetList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSetList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDaemonSetList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.DaemonSetList" API object. +func NewKubeDaemonSetList(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) KubeDaemonSetList { + _init_.Initialize() + + if err := validateNewKubeDaemonSetListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDaemonSetList{} + + _jsii_.Create( + "k8s.KubeDaemonSetList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.DaemonSetList" API object. +func NewKubeDaemonSetList_Override(k KubeDaemonSetList, scope constructs.Construct, id *string, props *KubeDaemonSetListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDaemonSetList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDaemonSetList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDaemonSetList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSetList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDaemonSetList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDaemonSetList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSetList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DaemonSetList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDaemonSetList_Manifest(props *KubeDaemonSetListProps) interface{} { + _init_.Initialize() + + if err := validateKubeDaemonSetList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSetList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDaemonSetList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDaemonSetList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDaemonSetList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDaemonSetList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDaemonSetList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDaemonSetList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDaemonSetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDaemonSetList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDaemonSetList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDaemonSetListProps.go b/pods/imports/k8s/KubeDaemonSetListProps.go new file mode 100644 index 000000000..0610e2393 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSetListProps.go @@ -0,0 +1,11 @@ +package k8s + +// DaemonSetList is a collection of daemon sets. +type KubeDaemonSetListProps struct { + // A list of daemon sets. + Items *[]*KubeDaemonSetProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeDaemonSetList__checks.go b/pods/imports/k8s/KubeDaemonSetList__checks.go new file mode 100644 index 000000000..1b066ad60 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSetList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDaemonSetList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDaemonSetList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDaemonSetList_ManifestParameters(props *KubeDaemonSetListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDaemonSetList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDaemonSetListParameters(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDaemonSetList__no_checks.go b/pods/imports/k8s/KubeDaemonSetList__no_checks.go new file mode 100644 index 000000000..64e5dff73 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSetList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDaemonSetList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDaemonSetList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDaemonSetList_ManifestParameters(props *KubeDaemonSetListProps) error { + return nil +} + +func validateKubeDaemonSetList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDaemonSetListParameters(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeDaemonSetProps.go b/pods/imports/k8s/KubeDaemonSetProps.go new file mode 100644 index 000000000..5f37c0d46 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSetProps.go @@ -0,0 +1,13 @@ +package k8s + +// DaemonSet represents the configuration of a daemon set. +type KubeDaemonSetProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // The desired behavior of this daemon set. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *DaemonSetSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeDaemonSet__checks.go b/pods/imports/k8s/KubeDaemonSet__checks.go new file mode 100644 index 000000000..084cbbc8c --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSet__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDaemonSet_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDaemonSet_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDaemonSet_ManifestParameters(props *KubeDaemonSetProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDaemonSet_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDaemonSetParameters(scope constructs.Construct, id *string, props *KubeDaemonSetProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDaemonSet__no_checks.go b/pods/imports/k8s/KubeDaemonSet__no_checks.go new file mode 100644 index 000000000..94d4edbb7 --- /dev/null +++ b/pods/imports/k8s/KubeDaemonSet__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDaemonSet_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDaemonSet_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDaemonSet_ManifestParameters(props *KubeDaemonSetProps) error { + return nil +} + +func validateKubeDaemonSet_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDaemonSetParameters(scope constructs.Construct, id *string, props *KubeDaemonSetProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeDeployment.go b/pods/imports/k8s/KubeDeployment.go new file mode 100644 index 000000000..152b53bc9 --- /dev/null +++ b/pods/imports/k8s/KubeDeployment.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Deployment enables declarative updates for Pods and ReplicaSets. +type KubeDeployment interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDeployment +type jsiiProxy_KubeDeployment struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDeployment) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeployment) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeployment) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeployment) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeployment) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeployment) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeployment) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.Deployment" API object. +func NewKubeDeployment(scope constructs.Construct, id *string, props *KubeDeploymentProps) KubeDeployment { + _init_.Initialize() + + if err := validateNewKubeDeploymentParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDeployment{} + + _jsii_.Create( + "k8s.KubeDeployment", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.Deployment" API object. +func NewKubeDeployment_Override(k KubeDeployment, scope constructs.Construct, id *string, props *KubeDeploymentProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDeployment", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDeployment_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeployment_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeployment", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDeployment_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeployment_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeployment", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.Deployment". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDeployment_Manifest(props *KubeDeploymentProps) interface{} { + _init_.Initialize() + + if err := validateKubeDeployment_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDeployment", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDeployment_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDeployment_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDeployment", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDeployment_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDeployment", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDeployment) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDeployment) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDeployment) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDeployment) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDeploymentList.go b/pods/imports/k8s/KubeDeploymentList.go new file mode 100644 index 000000000..4fa377f17 --- /dev/null +++ b/pods/imports/k8s/KubeDeploymentList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DeploymentList is a list of Deployments. +type KubeDeploymentList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDeploymentList +type jsiiProxy_KubeDeploymentList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDeploymentList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeploymentList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeploymentList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeploymentList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeploymentList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeploymentList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeploymentList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.DeploymentList" API object. +func NewKubeDeploymentList(scope constructs.Construct, id *string, props *KubeDeploymentListProps) KubeDeploymentList { + _init_.Initialize() + + if err := validateNewKubeDeploymentListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDeploymentList{} + + _jsii_.Create( + "k8s.KubeDeploymentList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.DeploymentList" API object. +func NewKubeDeploymentList_Override(k KubeDeploymentList, scope constructs.Construct, id *string, props *KubeDeploymentListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDeploymentList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDeploymentList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeploymentList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeploymentList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDeploymentList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeploymentList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeploymentList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DeploymentList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDeploymentList_Manifest(props *KubeDeploymentListProps) interface{} { + _init_.Initialize() + + if err := validateKubeDeploymentList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDeploymentList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDeploymentList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDeploymentList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDeploymentList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDeploymentList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDeploymentList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDeploymentList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDeploymentList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDeploymentList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDeploymentList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDeploymentListProps.go b/pods/imports/k8s/KubeDeploymentListProps.go new file mode 100644 index 000000000..01dbe4f4e --- /dev/null +++ b/pods/imports/k8s/KubeDeploymentListProps.go @@ -0,0 +1,9 @@ +package k8s + +// DeploymentList is a list of Deployments. +type KubeDeploymentListProps struct { + // Items is the list of Deployments. + Items *[]*KubeDeploymentProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeDeploymentList__checks.go b/pods/imports/k8s/KubeDeploymentList__checks.go new file mode 100644 index 000000000..835dbbfb8 --- /dev/null +++ b/pods/imports/k8s/KubeDeploymentList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDeploymentList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDeploymentList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDeploymentList_ManifestParameters(props *KubeDeploymentListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDeploymentList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDeploymentListParameters(scope constructs.Construct, id *string, props *KubeDeploymentListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDeploymentList__no_checks.go b/pods/imports/k8s/KubeDeploymentList__no_checks.go new file mode 100644 index 000000000..27bba6f4d --- /dev/null +++ b/pods/imports/k8s/KubeDeploymentList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDeploymentList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDeploymentList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDeploymentList_ManifestParameters(props *KubeDeploymentListProps) error { + return nil +} + +func validateKubeDeploymentList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDeploymentListParameters(scope constructs.Construct, id *string, props *KubeDeploymentListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeDeploymentProps.go b/pods/imports/k8s/KubeDeploymentProps.go new file mode 100644 index 000000000..6a4684732 --- /dev/null +++ b/pods/imports/k8s/KubeDeploymentProps.go @@ -0,0 +1,11 @@ +package k8s + +// Deployment enables declarative updates for Pods and ReplicaSets. +type KubeDeploymentProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the Deployment. + Spec *DeploymentSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeDeployment__checks.go b/pods/imports/k8s/KubeDeployment__checks.go new file mode 100644 index 000000000..e6f101faa --- /dev/null +++ b/pods/imports/k8s/KubeDeployment__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDeployment_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDeployment_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDeployment_ManifestParameters(props *KubeDeploymentProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDeployment_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDeploymentParameters(scope constructs.Construct, id *string, props *KubeDeploymentProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDeployment__no_checks.go b/pods/imports/k8s/KubeDeployment__no_checks.go new file mode 100644 index 000000000..7b85bcc5a --- /dev/null +++ b/pods/imports/k8s/KubeDeployment__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDeployment_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDeployment_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDeployment_ManifestParameters(props *KubeDeploymentProps) error { + return nil +} + +func validateKubeDeployment_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDeploymentParameters(scope constructs.Construct, id *string, props *KubeDeploymentProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go new file mode 100644 index 000000000..119f1c326 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DeviceClassList is a collection of classes. +type KubeDeviceClassListV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDeviceClassListV1Alpha3 +type jsiiProxy_KubeDeviceClassListV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.DeviceClassList" API object. +func NewKubeDeviceClassListV1Alpha3(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) KubeDeviceClassListV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeDeviceClassListV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDeviceClassListV1Alpha3{} + + _jsii_.Create( + "k8s.KubeDeviceClassListV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.DeviceClassList" API object. +func NewKubeDeviceClassListV1Alpha3_Override(k KubeDeviceClassListV1Alpha3, scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDeviceClassListV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDeviceClassListV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDeviceClassListV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.DeviceClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDeviceClassListV1Alpha3_Manifest(props *KubeDeviceClassListV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDeviceClassListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDeviceClassListV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDeviceClassListV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go new file mode 100644 index 000000000..918dcd3df --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go @@ -0,0 +1,9 @@ +package k8s + +// DeviceClassList is a collection of classes. +type KubeDeviceClassListV1Alpha3Props struct { + // Items is the list of resource classes. + Items *[]*KubeDeviceClassV1Alpha3Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go new file mode 100644 index 000000000..42d081256 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDeviceClassListV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassListV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassListV1Alpha3_ManifestParameters(props *KubeDeviceClassListV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDeviceClassListV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDeviceClassListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go new file mode 100644 index 000000000..7d8f334ba --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDeviceClassListV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDeviceClassListV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDeviceClassListV1Alpha3_ManifestParameters(props *KubeDeviceClassListV1Alpha3Props) error { + return nil +} + +func validateKubeDeviceClassListV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDeviceClassListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1.go new file mode 100644 index 000000000..9cd482e4f --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DeviceClassList is a collection of classes. +type KubeDeviceClassListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDeviceClassListV1Beta1 +type jsiiProxy_KubeDeviceClassListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.DeviceClassList" API object. +func NewKubeDeviceClassListV1Beta1(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) KubeDeviceClassListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeDeviceClassListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDeviceClassListV1Beta1{} + + _jsii_.Create( + "k8s.KubeDeviceClassListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.DeviceClassList" API object. +func NewKubeDeviceClassListV1Beta1_Override(k KubeDeviceClassListV1Beta1, scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDeviceClassListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDeviceClassListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDeviceClassListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.DeviceClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDeviceClassListV1Beta1_Manifest(props *KubeDeviceClassListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDeviceClassListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDeviceClassListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDeviceClassListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDeviceClassListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDeviceClassListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDeviceClassListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go new file mode 100644 index 000000000..f013194a2 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go @@ -0,0 +1,9 @@ +package k8s + +// DeviceClassList is a collection of classes. +type KubeDeviceClassListV1Beta1Props struct { + // Items is the list of resource classes. + Items *[]*KubeDeviceClassV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go new file mode 100644 index 000000000..c457e7a6c --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDeviceClassListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassListV1Beta1_ManifestParameters(props *KubeDeviceClassListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDeviceClassListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDeviceClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go new file mode 100644 index 000000000..81b165ffc --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDeviceClassListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDeviceClassListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDeviceClassListV1Beta1_ManifestParameters(props *KubeDeviceClassListV1Beta1Props) error { + return nil +} + +func validateKubeDeviceClassListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDeviceClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go new file mode 100644 index 000000000..da41696d2 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go @@ -0,0 +1,319 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. +// +// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeDeviceClassV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDeviceClassV1Alpha3 +type jsiiProxy_KubeDeviceClassV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.DeviceClass" API object. +func NewKubeDeviceClassV1Alpha3(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) KubeDeviceClassV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeDeviceClassV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDeviceClassV1Alpha3{} + + _jsii_.Create( + "k8s.KubeDeviceClassV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.DeviceClass" API object. +func NewKubeDeviceClassV1Alpha3_Override(k KubeDeviceClassV1Alpha3, scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDeviceClassV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDeviceClassV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDeviceClassV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.DeviceClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDeviceClassV1Alpha3_Manifest(props *KubeDeviceClassV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDeviceClassV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDeviceClassV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDeviceClassV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDeviceClassV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDeviceClassV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go new file mode 100644 index 000000000..ca2ea2d5b --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go @@ -0,0 +1,17 @@ +package k8s + +// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. +// +// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeDeviceClassV1Alpha3Props struct { + // Spec defines what can be allocated and how to configure it. + // + // This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation. + // + // Changing the spec automatically increments the metadata.generation number. + Spec *DeviceClassSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go new file mode 100644 index 000000000..0960e93f2 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDeviceClassV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassV1Alpha3_ManifestParameters(props *KubeDeviceClassV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDeviceClassV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDeviceClassV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go new file mode 100644 index 000000000..dc3d732c2 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDeviceClassV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDeviceClassV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDeviceClassV1Alpha3_ManifestParameters(props *KubeDeviceClassV1Alpha3Props) error { + return nil +} + +func validateKubeDeviceClassV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDeviceClassV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1.go b/pods/imports/k8s/KubeDeviceClassV1Beta1.go new file mode 100644 index 000000000..3943b127c --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Beta1.go @@ -0,0 +1,319 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. +// +// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeDeviceClassV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeDeviceClassV1Beta1 +type jsiiProxy_KubeDeviceClassV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeDeviceClassV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.DeviceClass" API object. +func NewKubeDeviceClassV1Beta1(scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) KubeDeviceClassV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeDeviceClassV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeDeviceClassV1Beta1{} + + _jsii_.Create( + "k8s.KubeDeviceClassV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.DeviceClass" API object. +func NewKubeDeviceClassV1Beta1_Override(k KubeDeviceClassV1Beta1, scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeDeviceClassV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeDeviceClassV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeDeviceClassV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.DeviceClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeDeviceClassV1Beta1_Manifest(props *KubeDeviceClassV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeDeviceClassV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeDeviceClassV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeDeviceClassV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeDeviceClassV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeDeviceClassV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeDeviceClassV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeDeviceClassV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeDeviceClassV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1Props.go b/pods/imports/k8s/KubeDeviceClassV1Beta1Props.go new file mode 100644 index 000000000..61823f512 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Beta1Props.go @@ -0,0 +1,17 @@ +package k8s + +// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. +// +// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeDeviceClassV1Beta1Props struct { + // Spec defines what can be allocated and how to configure it. + // + // This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation. + // + // Changing the spec automatically increments the metadata.generation number. + Spec *DeviceClassSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go b/pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go new file mode 100644 index 000000000..bab1ff8bb --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeDeviceClassV1Beta1_ManifestParameters(props *KubeDeviceClassV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeDeviceClassV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeDeviceClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go b/pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go new file mode 100644 index 000000000..0ea9764b0 --- /dev/null +++ b/pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeDeviceClassV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeDeviceClassV1Beta1_ManifestParameters(props *KubeDeviceClassV1Beta1Props) error { + return nil +} + +func validateKubeDeviceClassV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeDeviceClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeEndpointSlice.go b/pods/imports/k8s/KubeEndpointSlice.go new file mode 100644 index 000000000..3d5d21071 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSlice.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// EndpointSlice represents a subset of the endpoints that implement a service. +// +// For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints. +type KubeEndpointSlice interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEndpointSlice +type jsiiProxy_KubeEndpointSlice struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEndpointSlice) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSlice) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSlice) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSlice) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSlice) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSlice) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSlice) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.discovery.v1.EndpointSlice" API object. +func NewKubeEndpointSlice(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) KubeEndpointSlice { + _init_.Initialize() + + if err := validateNewKubeEndpointSliceParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEndpointSlice{} + + _jsii_.Create( + "k8s.KubeEndpointSlice", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.discovery.v1.EndpointSlice" API object. +func NewKubeEndpointSlice_Override(k KubeEndpointSlice, scope constructs.Construct, id *string, props *KubeEndpointSliceProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEndpointSlice", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEndpointSlice_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpointSlice_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSlice", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEndpointSlice_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpointSlice_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSlice", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.discovery.v1.EndpointSlice". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEndpointSlice_Manifest(props *KubeEndpointSliceProps) interface{} { + _init_.Initialize() + + if err := validateKubeEndpointSlice_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSlice", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEndpointSlice_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEndpointSlice_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSlice", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEndpointSlice_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEndpointSlice", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEndpointSlice) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEndpointSlice) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEndpointSlice) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEndpointSlice) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEndpointSliceList.go b/pods/imports/k8s/KubeEndpointSliceList.go new file mode 100644 index 000000000..729083d53 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSliceList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// EndpointSliceList represents a list of endpoint slices. +type KubeEndpointSliceList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEndpointSliceList +type jsiiProxy_KubeEndpointSliceList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEndpointSliceList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSliceList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSliceList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSliceList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSliceList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSliceList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointSliceList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.discovery.v1.EndpointSliceList" API object. +func NewKubeEndpointSliceList(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) KubeEndpointSliceList { + _init_.Initialize() + + if err := validateNewKubeEndpointSliceListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEndpointSliceList{} + + _jsii_.Create( + "k8s.KubeEndpointSliceList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.discovery.v1.EndpointSliceList" API object. +func NewKubeEndpointSliceList_Override(k KubeEndpointSliceList, scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEndpointSliceList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEndpointSliceList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpointSliceList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSliceList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEndpointSliceList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpointSliceList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSliceList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.discovery.v1.EndpointSliceList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEndpointSliceList_Manifest(props *KubeEndpointSliceListProps) interface{} { + _init_.Initialize() + + if err := validateKubeEndpointSliceList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSliceList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEndpointSliceList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEndpointSliceList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEndpointSliceList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEndpointSliceList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEndpointSliceList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEndpointSliceList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEndpointSliceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEndpointSliceList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEndpointSliceList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEndpointSliceListProps.go b/pods/imports/k8s/KubeEndpointSliceListProps.go new file mode 100644 index 000000000..436003410 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSliceListProps.go @@ -0,0 +1,9 @@ +package k8s + +// EndpointSliceList represents a list of endpoint slices. +type KubeEndpointSliceListProps struct { + // items is the list of endpoint slices. + Items *[]*KubeEndpointSliceProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeEndpointSliceList__checks.go b/pods/imports/k8s/KubeEndpointSliceList__checks.go new file mode 100644 index 000000000..41761abbd --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSliceList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEndpointSliceList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpointSliceList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpointSliceList_ManifestParameters(props *KubeEndpointSliceListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEndpointSliceList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEndpointSliceListParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEndpointSliceList__no_checks.go b/pods/imports/k8s/KubeEndpointSliceList__no_checks.go new file mode 100644 index 000000000..8dc49e1c5 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSliceList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEndpointSliceList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEndpointSliceList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEndpointSliceList_ManifestParameters(props *KubeEndpointSliceListProps) error { + return nil +} + +func validateKubeEndpointSliceList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEndpointSliceListParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeEndpointSliceProps.go b/pods/imports/k8s/KubeEndpointSliceProps.go new file mode 100644 index 000000000..af976ba68 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSliceProps.go @@ -0,0 +1,21 @@ +package k8s + +// EndpointSlice represents a subset of the endpoints that implement a service. +// +// For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints. +type KubeEndpointSliceProps struct { + // addressType specifies the type of address carried by this EndpointSlice. + // + // All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name. + AddressType *string `field:"required" json:"addressType" yaml:"addressType"` + // endpoints is a list of unique endpoints in this slice. + // + // Each slice may include a maximum of 1000 endpoints. + Endpoints *[]*Endpoint `field:"required" json:"endpoints" yaml:"endpoints"` + // Standard object's metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // ports specifies the list of network ports exposed by each endpoint in this slice. + // + // Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports. + Ports *[]*EndpointPort `field:"optional" json:"ports" yaml:"ports"` +} diff --git a/pods/imports/k8s/KubeEndpointSlice__checks.go b/pods/imports/k8s/KubeEndpointSlice__checks.go new file mode 100644 index 000000000..ca5b56983 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSlice__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEndpointSlice_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpointSlice_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpointSlice_ManifestParameters(props *KubeEndpointSliceProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEndpointSlice_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEndpointSliceParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEndpointSlice__no_checks.go b/pods/imports/k8s/KubeEndpointSlice__no_checks.go new file mode 100644 index 000000000..f30d69f05 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointSlice__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEndpointSlice_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEndpointSlice_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEndpointSlice_ManifestParameters(props *KubeEndpointSliceProps) error { + return nil +} + +func validateKubeEndpointSlice_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEndpointSliceParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeEndpoints.go b/pods/imports/k8s/KubeEndpoints.go new file mode 100644 index 000000000..6aabae47d --- /dev/null +++ b/pods/imports/k8s/KubeEndpoints.go @@ -0,0 +1,329 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Endpoints is a collection of endpoints that implement the actual service. Example:. +// +// Name: "mysvc", +// Subsets: [ +// +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// +// ]. +type KubeEndpoints interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEndpoints +type jsiiProxy_KubeEndpoints struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEndpoints) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpoints) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpoints) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpoints) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpoints) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpoints) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpoints) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Endpoints" API object. +func NewKubeEndpoints(scope constructs.Construct, id *string, props *KubeEndpointsProps) KubeEndpoints { + _init_.Initialize() + + if err := validateNewKubeEndpointsParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEndpoints{} + + _jsii_.Create( + "k8s.KubeEndpoints", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Endpoints" API object. +func NewKubeEndpoints_Override(k KubeEndpoints, scope constructs.Construct, id *string, props *KubeEndpointsProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEndpoints", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEndpoints_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpoints_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpoints", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEndpoints_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpoints_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpoints", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Endpoints". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEndpoints_Manifest(props *KubeEndpointsProps) interface{} { + _init_.Initialize() + + if err := validateKubeEndpoints_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEndpoints", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEndpoints_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEndpoints_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEndpoints", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEndpoints_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEndpoints", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEndpoints) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEndpoints) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEndpoints) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEndpoints) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEndpointsList.go b/pods/imports/k8s/KubeEndpointsList.go new file mode 100644 index 000000000..af208b9f3 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointsList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// EndpointsList is a list of endpoints. +type KubeEndpointsList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEndpointsList +type jsiiProxy_KubeEndpointsList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEndpointsList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointsList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointsList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointsList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointsList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointsList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEndpointsList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.EndpointsList" API object. +func NewKubeEndpointsList(scope constructs.Construct, id *string, props *KubeEndpointsListProps) KubeEndpointsList { + _init_.Initialize() + + if err := validateNewKubeEndpointsListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEndpointsList{} + + _jsii_.Create( + "k8s.KubeEndpointsList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.EndpointsList" API object. +func NewKubeEndpointsList_Override(k KubeEndpointsList, scope constructs.Construct, id *string, props *KubeEndpointsListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEndpointsList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEndpointsList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpointsList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpointsList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEndpointsList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEndpointsList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEndpointsList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.EndpointsList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEndpointsList_Manifest(props *KubeEndpointsListProps) interface{} { + _init_.Initialize() + + if err := validateKubeEndpointsList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEndpointsList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEndpointsList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEndpointsList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEndpointsList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEndpointsList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEndpointsList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEndpointsList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEndpointsList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEndpointsList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEndpointsList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEndpointsListProps.go b/pods/imports/k8s/KubeEndpointsListProps.go new file mode 100644 index 000000000..874003447 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointsListProps.go @@ -0,0 +1,11 @@ +package k8s + +// EndpointsList is a list of endpoints. +type KubeEndpointsListProps struct { + // List of endpoints. + Items *[]*KubeEndpointsProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeEndpointsList__checks.go b/pods/imports/k8s/KubeEndpointsList__checks.go new file mode 100644 index 000000000..1924241c5 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointsList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEndpointsList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpointsList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpointsList_ManifestParameters(props *KubeEndpointsListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEndpointsList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEndpointsListParameters(scope constructs.Construct, id *string, props *KubeEndpointsListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEndpointsList__no_checks.go b/pods/imports/k8s/KubeEndpointsList__no_checks.go new file mode 100644 index 000000000..0802460a1 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointsList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEndpointsList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEndpointsList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEndpointsList_ManifestParameters(props *KubeEndpointsListProps) error { + return nil +} + +func validateKubeEndpointsList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEndpointsListParameters(scope constructs.Construct, id *string, props *KubeEndpointsListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeEndpointsProps.go b/pods/imports/k8s/KubeEndpointsProps.go new file mode 100644 index 000000000..0ffcc06d5 --- /dev/null +++ b/pods/imports/k8s/KubeEndpointsProps.go @@ -0,0 +1,25 @@ +package k8s + +// Endpoints is a collection of endpoints that implement the actual service. Example:. +// +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ]. +type KubeEndpointsProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // The set of all endpoints is the union of all subsets. + // + // Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service. + Subsets *[]*EndpointSubset `field:"optional" json:"subsets" yaml:"subsets"` +} diff --git a/pods/imports/k8s/KubeEndpoints__checks.go b/pods/imports/k8s/KubeEndpoints__checks.go new file mode 100644 index 000000000..df3208f13 --- /dev/null +++ b/pods/imports/k8s/KubeEndpoints__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEndpoints_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpoints_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEndpoints_ManifestParameters(props *KubeEndpointsProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEndpoints_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEndpointsParameters(scope constructs.Construct, id *string, props *KubeEndpointsProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEndpoints__no_checks.go b/pods/imports/k8s/KubeEndpoints__no_checks.go new file mode 100644 index 000000000..9c6e66083 --- /dev/null +++ b/pods/imports/k8s/KubeEndpoints__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEndpoints_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEndpoints_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEndpoints_ManifestParameters(props *KubeEndpointsProps) error { + return nil +} + +func validateKubeEndpoints_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEndpointsParameters(scope constructs.Construct, id *string, props *KubeEndpointsProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeEvent.go b/pods/imports/k8s/KubeEvent.go new file mode 100644 index 000000000..8da281d7a --- /dev/null +++ b/pods/imports/k8s/KubeEvent.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Event is a report of an event somewhere in the cluster. +// +// It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data. +type KubeEvent interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEvent +type jsiiProxy_KubeEvent struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEvent) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEvent) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEvent) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEvent) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEvent) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEvent) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEvent) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.events.v1.Event" API object. +func NewKubeEvent(scope constructs.Construct, id *string, props *KubeEventProps) KubeEvent { + _init_.Initialize() + + if err := validateNewKubeEventParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEvent{} + + _jsii_.Create( + "k8s.KubeEvent", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.events.v1.Event" API object. +func NewKubeEvent_Override(k KubeEvent, scope constructs.Construct, id *string, props *KubeEventProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEvent", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEvent_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEvent_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEvent", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEvent_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEvent_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEvent", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.events.v1.Event". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEvent_Manifest(props *KubeEventProps) interface{} { + _init_.Initialize() + + if err := validateKubeEvent_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEvent", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEvent_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEvent_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEvent", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEvent_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEvent", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEvent) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEvent) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEvent) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEvent) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEventList.go b/pods/imports/k8s/KubeEventList.go new file mode 100644 index 000000000..80c4e532e --- /dev/null +++ b/pods/imports/k8s/KubeEventList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// EventList is a list of Event objects. +type KubeEventList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEventList +type jsiiProxy_KubeEventList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEventList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEventList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEventList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEventList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEventList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEventList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEventList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.events.v1.EventList" API object. +func NewKubeEventList(scope constructs.Construct, id *string, props *KubeEventListProps) KubeEventList { + _init_.Initialize() + + if err := validateNewKubeEventListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEventList{} + + _jsii_.Create( + "k8s.KubeEventList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.events.v1.EventList" API object. +func NewKubeEventList_Override(k KubeEventList, scope constructs.Construct, id *string, props *KubeEventListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEventList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEventList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEventList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEventList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEventList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEventList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEventList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.events.v1.EventList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEventList_Manifest(props *KubeEventListProps) interface{} { + _init_.Initialize() + + if err := validateKubeEventList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEventList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEventList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEventList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEventList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEventList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEventList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEventList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEventList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEventList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEventList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEventListProps.go b/pods/imports/k8s/KubeEventListProps.go new file mode 100644 index 000000000..60deef32d --- /dev/null +++ b/pods/imports/k8s/KubeEventListProps.go @@ -0,0 +1,11 @@ +package k8s + +// EventList is a list of Event objects. +type KubeEventListProps struct { + // items is a list of schema objects. + Items *[]*KubeEventProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeEventList__checks.go b/pods/imports/k8s/KubeEventList__checks.go new file mode 100644 index 000000000..ef6848d6f --- /dev/null +++ b/pods/imports/k8s/KubeEventList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEventList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEventList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEventList_ManifestParameters(props *KubeEventListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEventList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEventListParameters(scope constructs.Construct, id *string, props *KubeEventListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEventList__no_checks.go b/pods/imports/k8s/KubeEventList__no_checks.go new file mode 100644 index 000000000..615823615 --- /dev/null +++ b/pods/imports/k8s/KubeEventList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEventList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEventList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEventList_ManifestParameters(props *KubeEventListProps) error { + return nil +} + +func validateKubeEventList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEventListParameters(scope constructs.Construct, id *string, props *KubeEventListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeEventProps.go b/pods/imports/k8s/KubeEventProps.go new file mode 100644 index 000000000..cbb1aaf1d --- /dev/null +++ b/pods/imports/k8s/KubeEventProps.go @@ -0,0 +1,57 @@ +package k8s + +import ( + "time" +) + +// Event is a report of an event somewhere in the cluster. +// +// It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data. +type KubeEventProps struct { + // eventTime is the time when this Event was first observed. + // + // It is required. + EventTime *time.Time `field:"required" json:"eventTime" yaml:"eventTime"` + // action is what action was taken/failed regarding to the regarding object. + // + // It is machine-readable. This field cannot be empty for new Events and it can have at most 128 characters. + Action *string `field:"optional" json:"action" yaml:"action"` + // deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type. + DeprecatedCount *float64 `field:"optional" json:"deprecatedCount" yaml:"deprecatedCount"` + // deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. + DeprecatedFirstTimestamp *time.Time `field:"optional" json:"deprecatedFirstTimestamp" yaml:"deprecatedFirstTimestamp"` + // deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. + DeprecatedLastTimestamp *time.Time `field:"optional" json:"deprecatedLastTimestamp" yaml:"deprecatedLastTimestamp"` + // deprecatedSource is the deprecated field assuring backward compatibility with core.v1 Event type. + DeprecatedSource *EventSource `field:"optional" json:"deprecatedSource" yaml:"deprecatedSource"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // note is a human-readable description of the status of this operation. + // + // Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB. + Note *string `field:"optional" json:"note" yaml:"note"` + // reason is why the action was taken. + // + // It is human-readable. This field cannot be empty for new Events and it can have at most 128 characters. + Reason *string `field:"optional" json:"reason" yaml:"reason"` + // regarding contains the object this Event is about. + // + // In most cases it's an Object reporting controller implements, e.g. ReplicaSetController implements ReplicaSets and this event is emitted because it acts on some changes in a ReplicaSet object. + Regarding *ObjectReference `field:"optional" json:"regarding" yaml:"regarding"` + // related is the optional secondary object for more complex actions. + // + // E.g. when regarding object triggers a creation or deletion of related object. + Related *ObjectReference `field:"optional" json:"related" yaml:"related"` + // reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events. + ReportingController *string `field:"optional" json:"reportingController" yaml:"reportingController"` + // reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters. + ReportingInstance *string `field:"optional" json:"reportingInstance" yaml:"reportingInstance"` + // series is data about the Event series this event represents or nil if it's a singleton Event. + Series *EventSeries `field:"optional" json:"series" yaml:"series"` + // type is the type of this event (Normal, Warning), new types could be added in the future. + // + // It is machine-readable. This field cannot be empty for new Events. + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/KubeEvent__checks.go b/pods/imports/k8s/KubeEvent__checks.go new file mode 100644 index 000000000..5ca538a50 --- /dev/null +++ b/pods/imports/k8s/KubeEvent__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEvent_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEvent_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEvent_ManifestParameters(props *KubeEventProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEvent_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEventParameters(scope constructs.Construct, id *string, props *KubeEventProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEvent__no_checks.go b/pods/imports/k8s/KubeEvent__no_checks.go new file mode 100644 index 000000000..1e91e3dcc --- /dev/null +++ b/pods/imports/k8s/KubeEvent__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEvent_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEvent_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEvent_ManifestParameters(props *KubeEventProps) error { + return nil +} + +func validateKubeEvent_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEventParameters(scope constructs.Construct, id *string, props *KubeEventProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeEviction.go b/pods/imports/k8s/KubeEviction.go new file mode 100644 index 000000000..2d9e241eb --- /dev/null +++ b/pods/imports/k8s/KubeEviction.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// +// This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions. +type KubeEviction interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeEviction +type jsiiProxy_KubeEviction struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeEviction) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEviction) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEviction) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEviction) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEviction) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEviction) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeEviction) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.policy.v1.Eviction" API object. +func NewKubeEviction(scope constructs.Construct, id *string, props *KubeEvictionProps) KubeEviction { + _init_.Initialize() + + if err := validateNewKubeEvictionParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeEviction{} + + _jsii_.Create( + "k8s.KubeEviction", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.policy.v1.Eviction" API object. +func NewKubeEviction_Override(k KubeEviction, scope constructs.Construct, id *string, props *KubeEvictionProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeEviction", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeEviction_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEviction_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEviction", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeEviction_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeEviction_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeEviction", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.policy.v1.Eviction". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeEviction_Manifest(props *KubeEvictionProps) interface{} { + _init_.Initialize() + + if err := validateKubeEviction_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeEviction", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeEviction_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeEviction_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeEviction", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeEviction_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeEviction", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeEviction) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeEviction) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeEviction) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeEviction) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeEvictionProps.go b/pods/imports/k8s/KubeEvictionProps.go new file mode 100644 index 000000000..0778c5b71 --- /dev/null +++ b/pods/imports/k8s/KubeEvictionProps.go @@ -0,0 +1,11 @@ +package k8s + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// +// This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions. +type KubeEvictionProps struct { + // DeleteOptions may be provided. + DeleteOptions *DeleteOptions `field:"optional" json:"deleteOptions" yaml:"deleteOptions"` + // ObjectMeta describes the pod that is being evicted. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeEviction__checks.go b/pods/imports/k8s/KubeEviction__checks.go new file mode 100644 index 000000000..e064ff355 --- /dev/null +++ b/pods/imports/k8s/KubeEviction__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeEviction_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeEviction_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeEviction_ManifestParameters(props *KubeEvictionProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeEviction_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeEvictionParameters(scope constructs.Construct, id *string, props *KubeEvictionProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeEviction__no_checks.go b/pods/imports/k8s/KubeEviction__no_checks.go new file mode 100644 index 000000000..4b4146f1f --- /dev/null +++ b/pods/imports/k8s/KubeEviction__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeEviction_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeEviction_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeEviction_ManifestParameters(props *KubeEvictionProps) error { + return nil +} + +func validateKubeEviction_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeEvictionParameters(scope constructs.Construct, id *string, props *KubeEvictionProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeFlowSchema.go b/pods/imports/k8s/KubeFlowSchema.go new file mode 100644 index 000000000..18e72b784 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchema.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// FlowSchema defines the schema of a group of flows. +// +// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". +type KubeFlowSchema interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeFlowSchema +type jsiiProxy_KubeFlowSchema struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeFlowSchema) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchema) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchema) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchema) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchema) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchema) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchema) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.flowcontrol.v1.FlowSchema" API object. +func NewKubeFlowSchema(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) KubeFlowSchema { + _init_.Initialize() + + if err := validateNewKubeFlowSchemaParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeFlowSchema{} + + _jsii_.Create( + "k8s.KubeFlowSchema", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.flowcontrol.v1.FlowSchema" API object. +func NewKubeFlowSchema_Override(k KubeFlowSchema, scope constructs.Construct, id *string, props *KubeFlowSchemaProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeFlowSchema", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeFlowSchema_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeFlowSchema_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchema", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeFlowSchema_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeFlowSchema_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchema", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.FlowSchema". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeFlowSchema_Manifest(props *KubeFlowSchemaProps) interface{} { + _init_.Initialize() + + if err := validateKubeFlowSchema_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchema", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeFlowSchema_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeFlowSchema_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchema", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeFlowSchema_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeFlowSchema", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeFlowSchema) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeFlowSchema) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeFlowSchema) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeFlowSchema) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeFlowSchemaList.go b/pods/imports/k8s/KubeFlowSchemaList.go new file mode 100644 index 000000000..bd66f4649 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// FlowSchemaList is a list of FlowSchema objects. +type KubeFlowSchemaList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeFlowSchemaList +type jsiiProxy_KubeFlowSchemaList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeFlowSchemaList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchemaList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchemaList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchemaList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchemaList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchemaList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeFlowSchemaList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.flowcontrol.v1.FlowSchemaList" API object. +func NewKubeFlowSchemaList(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) KubeFlowSchemaList { + _init_.Initialize() + + if err := validateNewKubeFlowSchemaListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeFlowSchemaList{} + + _jsii_.Create( + "k8s.KubeFlowSchemaList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.flowcontrol.v1.FlowSchemaList" API object. +func NewKubeFlowSchemaList_Override(k KubeFlowSchemaList, scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeFlowSchemaList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeFlowSchemaList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeFlowSchemaList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchemaList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeFlowSchemaList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeFlowSchemaList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchemaList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.FlowSchemaList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeFlowSchemaList_Manifest(props *KubeFlowSchemaListProps) interface{} { + _init_.Initialize() + + if err := validateKubeFlowSchemaList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchemaList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeFlowSchemaList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeFlowSchemaList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeFlowSchemaList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeFlowSchemaList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeFlowSchemaList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeFlowSchemaList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeFlowSchemaList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeFlowSchemaList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeFlowSchemaList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeFlowSchemaListProps.go b/pods/imports/k8s/KubeFlowSchemaListProps.go new file mode 100644 index 000000000..488649d65 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaListProps.go @@ -0,0 +1,11 @@ +package k8s + +// FlowSchemaList is a list of FlowSchema objects. +type KubeFlowSchemaListProps struct { + // `items` is a list of FlowSchemas. + Items *[]*KubeFlowSchemaProps `field:"required" json:"items" yaml:"items"` + // `metadata` is the standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeFlowSchemaList__checks.go b/pods/imports/k8s/KubeFlowSchemaList__checks.go new file mode 100644 index 000000000..dc6e626b9 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeFlowSchemaList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeFlowSchemaList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeFlowSchemaList_ManifestParameters(props *KubeFlowSchemaListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeFlowSchemaList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeFlowSchemaListParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeFlowSchemaList__no_checks.go b/pods/imports/k8s/KubeFlowSchemaList__no_checks.go new file mode 100644 index 000000000..5deee2da4 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeFlowSchemaList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeFlowSchemaList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeFlowSchemaList_ManifestParameters(props *KubeFlowSchemaListProps) error { + return nil +} + +func validateKubeFlowSchemaList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeFlowSchemaListParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeFlowSchemaProps.go b/pods/imports/k8s/KubeFlowSchemaProps.go new file mode 100644 index 000000000..d9895117a --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaProps.go @@ -0,0 +1,15 @@ +package k8s + +// FlowSchema defines the schema of a group of flows. +// +// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". +type KubeFlowSchemaProps struct { + // `metadata` is the standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // `spec` is the specification of the desired behavior of a FlowSchema. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *FlowSchemaSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeFlowSchema__checks.go b/pods/imports/k8s/KubeFlowSchema__checks.go new file mode 100644 index 000000000..7207bfe7d --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchema__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeFlowSchema_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeFlowSchema_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeFlowSchema_ManifestParameters(props *KubeFlowSchemaProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeFlowSchema_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeFlowSchemaParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeFlowSchema__no_checks.go b/pods/imports/k8s/KubeFlowSchema__no_checks.go new file mode 100644 index 000000000..695656f6f --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchema__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeFlowSchema_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeFlowSchema_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeFlowSchema_ManifestParameters(props *KubeFlowSchemaProps) error { + return nil +} + +func validateKubeFlowSchema_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeFlowSchemaParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go new file mode 100644 index 000000000..19ab78b03 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// configuration of a horizontal pod autoscaler. +type KubeHorizontalPodAutoscaler interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeHorizontalPodAutoscaler +type jsiiProxy_KubeHorizontalPodAutoscaler struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" API object. +func NewKubeHorizontalPodAutoscaler(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) KubeHorizontalPodAutoscaler { + _init_.Initialize() + + if err := validateNewKubeHorizontalPodAutoscalerParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeHorizontalPodAutoscaler{} + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscaler", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" API object. +func NewKubeHorizontalPodAutoscaler_Override(k KubeHorizontalPodAutoscaler, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscaler", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeHorizontalPodAutoscaler_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscaler_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscaler", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeHorizontalPodAutoscaler_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscaler_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscaler", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeHorizontalPodAutoscaler_Manifest(props *KubeHorizontalPodAutoscalerProps) interface{} { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscaler_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscaler", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeHorizontalPodAutoscaler_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscaler_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscaler", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeHorizontalPodAutoscaler_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeHorizontalPodAutoscaler", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscaler) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscaler) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscaler) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscaler) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go new file mode 100644 index 000000000..7904bbb7b --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// list of horizontal pod autoscaler objects. +type KubeHorizontalPodAutoscalerList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeHorizontalPodAutoscalerList +type jsiiProxy_KubeHorizontalPodAutoscalerList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" API object. +func NewKubeHorizontalPodAutoscalerList(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) KubeHorizontalPodAutoscalerList { + _init_.Initialize() + + if err := validateNewKubeHorizontalPodAutoscalerListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeHorizontalPodAutoscalerList{} + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscalerList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" API object. +func NewKubeHorizontalPodAutoscalerList_Override(k KubeHorizontalPodAutoscalerList, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscalerList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeHorizontalPodAutoscalerList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeHorizontalPodAutoscalerList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeHorizontalPodAutoscalerList_Manifest(props *KubeHorizontalPodAutoscalerListProps) interface{} { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeHorizontalPodAutoscalerList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeHorizontalPodAutoscalerList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeHorizontalPodAutoscalerList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go new file mode 100644 index 000000000..9d017df81 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go @@ -0,0 +1,9 @@ +package k8s + +// list of horizontal pod autoscaler objects. +type KubeHorizontalPodAutoscalerListProps struct { + // items is the list of horizontal pod autoscaler objects. + Items *[]*KubeHorizontalPodAutoscalerProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go new file mode 100644 index 000000000..494028c77 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. +type KubeHorizontalPodAutoscalerListV2 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeHorizontalPodAutoscalerListV2 +type jsiiProxy_KubeHorizontalPodAutoscalerListV2 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" API object. +func NewKubeHorizontalPodAutoscalerListV2(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) KubeHorizontalPodAutoscalerListV2 { + _init_.Initialize() + + if err := validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeHorizontalPodAutoscalerListV2{} + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscalerListV2", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" API object. +func NewKubeHorizontalPodAutoscalerListV2_Override(k KubeHorizontalPodAutoscalerListV2, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscalerListV2", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeHorizontalPodAutoscalerListV2_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerListV2_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerListV2", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeHorizontalPodAutoscalerListV2_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerListV2_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerListV2", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeHorizontalPodAutoscalerListV2_Manifest(props *KubeHorizontalPodAutoscalerListV2Props) interface{} { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerListV2_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerListV2", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeHorizontalPodAutoscalerListV2_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerListV2_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerListV2", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeHorizontalPodAutoscalerListV2_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeHorizontalPodAutoscalerListV2", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go new file mode 100644 index 000000000..afba88a72 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go @@ -0,0 +1,9 @@ +package k8s + +// HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. +type KubeHorizontalPodAutoscalerListV2Props struct { + // items is the list of horizontal pod autoscaler objects. + Items *[]*KubeHorizontalPodAutoscalerV2Props `field:"required" json:"items" yaml:"items"` + // metadata is the standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go new file mode 100644 index 000000000..9e5ca0630 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeHorizontalPodAutoscalerListV2_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerListV2_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerListV2_ManifestParameters(props *KubeHorizontalPodAutoscalerListV2Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerListV2_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go new file mode 100644 index 000000000..8bbca0aed --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeHorizontalPodAutoscalerListV2_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerListV2_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerListV2_ManifestParameters(props *KubeHorizontalPodAutoscalerListV2Props) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerListV2_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go new file mode 100644 index 000000000..66acc784d --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeHorizontalPodAutoscalerList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerList_ManifestParameters(props *KubeHorizontalPodAutoscalerListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeHorizontalPodAutoscalerListParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go new file mode 100644 index 000000000..03542096d --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeHorizontalPodAutoscalerList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerList_ManifestParameters(props *KubeHorizontalPodAutoscalerListProps) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeHorizontalPodAutoscalerListParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go new file mode 100644 index 000000000..482dde1f8 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go @@ -0,0 +1,13 @@ +package k8s + +// configuration of a horizontal pod autoscaler. +type KubeHorizontalPodAutoscalerProps struct { + // Standard object metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec defines the behaviour of autoscaler. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. + Spec *HorizontalPodAutoscalerSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go new file mode 100644 index 000000000..c486ae3a7 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified. +type KubeHorizontalPodAutoscalerV2 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeHorizontalPodAutoscalerV2 +type jsiiProxy_KubeHorizontalPodAutoscalerV2 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" API object. +func NewKubeHorizontalPodAutoscalerV2(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) KubeHorizontalPodAutoscalerV2 { + _init_.Initialize() + + if err := validateNewKubeHorizontalPodAutoscalerV2Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeHorizontalPodAutoscalerV2{} + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscalerV2", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" API object. +func NewKubeHorizontalPodAutoscalerV2_Override(k KubeHorizontalPodAutoscalerV2, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeHorizontalPodAutoscalerV2", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeHorizontalPodAutoscalerV2_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerV2_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerV2", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeHorizontalPodAutoscalerV2_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerV2_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerV2", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeHorizontalPodAutoscalerV2_Manifest(props *KubeHorizontalPodAutoscalerV2Props) interface{} { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerV2_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerV2", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeHorizontalPodAutoscalerV2_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeHorizontalPodAutoscalerV2_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeHorizontalPodAutoscalerV2", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeHorizontalPodAutoscalerV2_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeHorizontalPodAutoscalerV2", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go new file mode 100644 index 000000000..c08f7e076 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go @@ -0,0 +1,13 @@ +package k8s + +// HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified. +type KubeHorizontalPodAutoscalerV2Props struct { + // metadata is the standard object metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec is the specification for the behaviour of the autoscaler. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. + Spec *HorizontalPodAutoscalerSpecV2 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go new file mode 100644 index 000000000..f195ecd4a --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeHorizontalPodAutoscalerV2_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerV2_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerV2_ManifestParameters(props *KubeHorizontalPodAutoscalerV2Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeHorizontalPodAutoscalerV2_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeHorizontalPodAutoscalerV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go new file mode 100644 index 000000000..fcb64a7fd --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeHorizontalPodAutoscalerV2_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerV2_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerV2_ManifestParameters(props *KubeHorizontalPodAutoscalerV2Props) error { + return nil +} + +func validateKubeHorizontalPodAutoscalerV2_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeHorizontalPodAutoscalerV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go new file mode 100644 index 000000000..af4e7a150 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeHorizontalPodAutoscaler_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscaler_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeHorizontalPodAutoscaler_ManifestParameters(props *KubeHorizontalPodAutoscalerProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeHorizontalPodAutoscaler_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeHorizontalPodAutoscalerParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go new file mode 100644 index 000000000..63a1ea9f9 --- /dev/null +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeHorizontalPodAutoscaler_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscaler_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeHorizontalPodAutoscaler_ManifestParameters(props *KubeHorizontalPodAutoscalerProps) error { + return nil +} + +func validateKubeHorizontalPodAutoscaler_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeHorizontalPodAutoscalerParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeIngress.go b/pods/imports/k8s/KubeIngress.go new file mode 100644 index 000000000..7bdbdc77e --- /dev/null +++ b/pods/imports/k8s/KubeIngress.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. +// +// An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. +type KubeIngress interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeIngress +type jsiiProxy_KubeIngress struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeIngress) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngress) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngress) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngress) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngress) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngress) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngress) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1.Ingress" API object. +func NewKubeIngress(scope constructs.Construct, id *string, props *KubeIngressProps) KubeIngress { + _init_.Initialize() + + if err := validateNewKubeIngressParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeIngress{} + + _jsii_.Create( + "k8s.KubeIngress", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1.Ingress" API object. +func NewKubeIngress_Override(k KubeIngress, scope constructs.Construct, id *string, props *KubeIngressProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeIngress", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeIngress_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngress_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngress", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeIngress_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngress_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngress", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.Ingress". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeIngress_Manifest(props *KubeIngressProps) interface{} { + _init_.Initialize() + + if err := validateKubeIngress_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeIngress", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeIngress_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeIngress_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeIngress", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeIngress_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeIngress", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeIngress) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeIngress) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeIngress) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeIngress) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeIngressClass.go b/pods/imports/k8s/KubeIngressClass.go new file mode 100644 index 000000000..9f54f81e3 --- /dev/null +++ b/pods/imports/k8s/KubeIngressClass.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// IngressClass represents the class of the Ingress, referenced by the Ingress Spec. +// +// The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class. +type KubeIngressClass interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeIngressClass +type jsiiProxy_KubeIngressClass struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeIngressClass) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClass) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClass) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClass) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClass) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClass) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClass) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1.IngressClass" API object. +func NewKubeIngressClass(scope constructs.Construct, id *string, props *KubeIngressClassProps) KubeIngressClass { + _init_.Initialize() + + if err := validateNewKubeIngressClassParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeIngressClass{} + + _jsii_.Create( + "k8s.KubeIngressClass", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1.IngressClass" API object. +func NewKubeIngressClass_Override(k KubeIngressClass, scope constructs.Construct, id *string, props *KubeIngressClassProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeIngressClass", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeIngressClass_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngressClass_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngressClass", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeIngressClass_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngressClass_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngressClass", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeIngressClass_Manifest(props *KubeIngressClassProps) interface{} { + _init_.Initialize() + + if err := validateKubeIngressClass_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeIngressClass", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeIngressClass_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeIngressClass_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeIngressClass", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeIngressClass_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeIngressClass", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeIngressClass) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeIngressClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeIngressClass) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeIngressClass) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeIngressClassList.go b/pods/imports/k8s/KubeIngressClassList.go new file mode 100644 index 000000000..d9586591d --- /dev/null +++ b/pods/imports/k8s/KubeIngressClassList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// IngressClassList is a collection of IngressClasses. +type KubeIngressClassList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeIngressClassList +type jsiiProxy_KubeIngressClassList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeIngressClassList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClassList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClassList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClassList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClassList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressClassList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1.IngressClassList" API object. +func NewKubeIngressClassList(scope constructs.Construct, id *string, props *KubeIngressClassListProps) KubeIngressClassList { + _init_.Initialize() + + if err := validateNewKubeIngressClassListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeIngressClassList{} + + _jsii_.Create( + "k8s.KubeIngressClassList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1.IngressClassList" API object. +func NewKubeIngressClassList_Override(k KubeIngressClassList, scope constructs.Construct, id *string, props *KubeIngressClassListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeIngressClassList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeIngressClassList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngressClassList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngressClassList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeIngressClassList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngressClassList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngressClassList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeIngressClassList_Manifest(props *KubeIngressClassListProps) interface{} { + _init_.Initialize() + + if err := validateKubeIngressClassList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeIngressClassList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeIngressClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeIngressClassList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeIngressClassList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeIngressClassList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeIngressClassList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeIngressClassList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeIngressClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeIngressClassList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeIngressClassList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeIngressClassListProps.go b/pods/imports/k8s/KubeIngressClassListProps.go new file mode 100644 index 000000000..b7db1ca76 --- /dev/null +++ b/pods/imports/k8s/KubeIngressClassListProps.go @@ -0,0 +1,9 @@ +package k8s + +// IngressClassList is a collection of IngressClasses. +type KubeIngressClassListProps struct { + // items is the list of IngressClasses. + Items *[]*KubeIngressClassProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeIngressClassList__checks.go b/pods/imports/k8s/KubeIngressClassList__checks.go new file mode 100644 index 000000000..e93bffc3b --- /dev/null +++ b/pods/imports/k8s/KubeIngressClassList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeIngressClassList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeIngressClassList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeIngressClassList_ManifestParameters(props *KubeIngressClassListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeIngressClassList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeIngressClassListParameters(scope constructs.Construct, id *string, props *KubeIngressClassListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeIngressClassList__no_checks.go b/pods/imports/k8s/KubeIngressClassList__no_checks.go new file mode 100644 index 000000000..766f9626d --- /dev/null +++ b/pods/imports/k8s/KubeIngressClassList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeIngressClassList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeIngressClassList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeIngressClassList_ManifestParameters(props *KubeIngressClassListProps) error { + return nil +} + +func validateKubeIngressClassList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeIngressClassListParameters(scope constructs.Construct, id *string, props *KubeIngressClassListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeIngressClassProps.go b/pods/imports/k8s/KubeIngressClassProps.go new file mode 100644 index 000000000..18884ac3b --- /dev/null +++ b/pods/imports/k8s/KubeIngressClassProps.go @@ -0,0 +1,15 @@ +package k8s + +// IngressClass represents the class of the Ingress, referenced by the Ingress Spec. +// +// The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class. +type KubeIngressClassProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec is the desired state of the IngressClass. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *IngressClassSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeIngressClass__checks.go b/pods/imports/k8s/KubeIngressClass__checks.go new file mode 100644 index 000000000..d9801267d --- /dev/null +++ b/pods/imports/k8s/KubeIngressClass__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeIngressClass_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeIngressClass_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeIngressClass_ManifestParameters(props *KubeIngressClassProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeIngressClass_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeIngressClassParameters(scope constructs.Construct, id *string, props *KubeIngressClassProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeIngressClass__no_checks.go b/pods/imports/k8s/KubeIngressClass__no_checks.go new file mode 100644 index 000000000..d2d3f154e --- /dev/null +++ b/pods/imports/k8s/KubeIngressClass__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeIngressClass_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeIngressClass_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeIngressClass_ManifestParameters(props *KubeIngressClassProps) error { + return nil +} + +func validateKubeIngressClass_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeIngressClassParameters(scope constructs.Construct, id *string, props *KubeIngressClassProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeIngressList.go b/pods/imports/k8s/KubeIngressList.go new file mode 100644 index 000000000..c3545b1a4 --- /dev/null +++ b/pods/imports/k8s/KubeIngressList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// IngressList is a collection of Ingress. +type KubeIngressList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeIngressList +type jsiiProxy_KubeIngressList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeIngressList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIngressList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1.IngressList" API object. +func NewKubeIngressList(scope constructs.Construct, id *string, props *KubeIngressListProps) KubeIngressList { + _init_.Initialize() + + if err := validateNewKubeIngressListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeIngressList{} + + _jsii_.Create( + "k8s.KubeIngressList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1.IngressList" API object. +func NewKubeIngressList_Override(k KubeIngressList, scope constructs.Construct, id *string, props *KubeIngressListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeIngressList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeIngressList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngressList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngressList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeIngressList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIngressList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIngressList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeIngressList_Manifest(props *KubeIngressListProps) interface{} { + _init_.Initialize() + + if err := validateKubeIngressList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeIngressList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeIngressList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeIngressList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeIngressList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeIngressList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeIngressList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeIngressList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeIngressList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeIngressList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeIngressList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeIngressListProps.go b/pods/imports/k8s/KubeIngressListProps.go new file mode 100644 index 000000000..32c5ffe73 --- /dev/null +++ b/pods/imports/k8s/KubeIngressListProps.go @@ -0,0 +1,11 @@ +package k8s + +// IngressList is a collection of Ingress. +type KubeIngressListProps struct { + // items is the list of Ingress. + Items *[]*KubeIngressProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeIngressList__checks.go b/pods/imports/k8s/KubeIngressList__checks.go new file mode 100644 index 000000000..daaae07c6 --- /dev/null +++ b/pods/imports/k8s/KubeIngressList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeIngressList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeIngressList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeIngressList_ManifestParameters(props *KubeIngressListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeIngressList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeIngressListParameters(scope constructs.Construct, id *string, props *KubeIngressListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeIngressList__no_checks.go b/pods/imports/k8s/KubeIngressList__no_checks.go new file mode 100644 index 000000000..376522756 --- /dev/null +++ b/pods/imports/k8s/KubeIngressList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeIngressList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeIngressList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeIngressList_ManifestParameters(props *KubeIngressListProps) error { + return nil +} + +func validateKubeIngressList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeIngressListParameters(scope constructs.Construct, id *string, props *KubeIngressListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeIngressProps.go b/pods/imports/k8s/KubeIngressProps.go new file mode 100644 index 000000000..ef7d7c0b7 --- /dev/null +++ b/pods/imports/k8s/KubeIngressProps.go @@ -0,0 +1,15 @@ +package k8s + +// Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. +// +// An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. +type KubeIngressProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec is the desired state of the Ingress. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *IngressSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeIngress__checks.go b/pods/imports/k8s/KubeIngress__checks.go new file mode 100644 index 000000000..5abc227cf --- /dev/null +++ b/pods/imports/k8s/KubeIngress__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeIngress_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeIngress_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeIngress_ManifestParameters(props *KubeIngressProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeIngress_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeIngressParameters(scope constructs.Construct, id *string, props *KubeIngressProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeIngress__no_checks.go b/pods/imports/k8s/KubeIngress__no_checks.go new file mode 100644 index 000000000..b6e47a168 --- /dev/null +++ b/pods/imports/k8s/KubeIngress__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeIngress_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeIngress_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeIngress_ManifestParameters(props *KubeIngressProps) error { + return nil +} + +func validateKubeIngress_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeIngressParameters(scope constructs.Construct, id *string, props *KubeIngressProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1.go b/pods/imports/k8s/KubeIpAddressListV1Beta1.go new file mode 100644 index 000000000..67aab26b5 --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// IPAddressList contains a list of IPAddress. +type KubeIpAddressListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeIpAddressListV1Beta1 +type jsiiProxy_KubeIpAddressListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1beta1.IPAddressList" API object. +func NewKubeIpAddressListV1Beta1(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) KubeIpAddressListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeIpAddressListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeIpAddressListV1Beta1{} + + _jsii_.Create( + "k8s.KubeIpAddressListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1beta1.IPAddressList" API object. +func NewKubeIpAddressListV1Beta1_Override(k KubeIpAddressListV1Beta1, scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeIpAddressListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeIpAddressListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIpAddressListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeIpAddressListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIpAddressListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.IPAddressList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeIpAddressListV1Beta1_Manifest(props *KubeIpAddressListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeIpAddressListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeIpAddressListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeIpAddressListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeIpAddressListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeIpAddressListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeIpAddressListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeIpAddressListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeIpAddressListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeIpAddressListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go b/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go new file mode 100644 index 000000000..28da4ec53 --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go @@ -0,0 +1,11 @@ +package k8s + +// IPAddressList contains a list of IPAddress. +type KubeIpAddressListV1Beta1Props struct { + // items is the list of IPAddresses. + Items *[]*KubeIpAddressV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go b/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go new file mode 100644 index 000000000..b971976c8 --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeIpAddressListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeIpAddressListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeIpAddressListV1Beta1_ManifestParameters(props *KubeIpAddressListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeIpAddressListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeIpAddressListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go b/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go new file mode 100644 index 000000000..5ef243566 --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeIpAddressListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeIpAddressListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeIpAddressListV1Beta1_ManifestParameters(props *KubeIpAddressListV1Beta1Props) error { + return nil +} + +func validateKubeIpAddressListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeIpAddressListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1.go b/pods/imports/k8s/KubeIpAddressV1Beta1.go new file mode 100644 index 000000000..1cc2b64a6 --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressV1Beta1.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// IPAddress represents a single IP of a single IP Family. +// +// The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 +type KubeIpAddressV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeIpAddressV1Beta1 +type jsiiProxy_KubeIpAddressV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeIpAddressV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1beta1.IPAddress" API object. +func NewKubeIpAddressV1Beta1(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) KubeIpAddressV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeIpAddressV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeIpAddressV1Beta1{} + + _jsii_.Create( + "k8s.KubeIpAddressV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1beta1.IPAddress" API object. +func NewKubeIpAddressV1Beta1_Override(k KubeIpAddressV1Beta1, scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeIpAddressV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeIpAddressV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIpAddressV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeIpAddressV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeIpAddressV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.IPAddress". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeIpAddressV1Beta1_Manifest(props *KubeIpAddressV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeIpAddressV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeIpAddressV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeIpAddressV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeIpAddressV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeIpAddressV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeIpAddressV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeIpAddressV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeIpAddressV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeIpAddressV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeIpAddressV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1Props.go b/pods/imports/k8s/KubeIpAddressV1Beta1Props.go new file mode 100644 index 000000000..7d7df38e9 --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressV1Beta1Props.go @@ -0,0 +1,15 @@ +package k8s + +// IPAddress represents a single IP of a single IP Family. +// +// The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 +type KubeIpAddressV1Beta1Props struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec is the desired state of the IPAddress. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *IpAddressSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go b/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go new file mode 100644 index 000000000..7adf6948a --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeIpAddressV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeIpAddressV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeIpAddressV1Beta1_ManifestParameters(props *KubeIpAddressV1Beta1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeIpAddressV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeIpAddressV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go b/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go new file mode 100644 index 000000000..05d33fb0b --- /dev/null +++ b/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeIpAddressV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeIpAddressV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeIpAddressV1Beta1_ManifestParameters(props *KubeIpAddressV1Beta1Props) error { + return nil +} + +func validateKubeIpAddressV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeIpAddressV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeJob.go b/pods/imports/k8s/KubeJob.go new file mode 100644 index 000000000..eefab2c04 --- /dev/null +++ b/pods/imports/k8s/KubeJob.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Job represents the configuration of a single job. +type KubeJob interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeJob +type jsiiProxy_KubeJob struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeJob) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJob) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJob) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJob) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJob) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJob) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJob) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.batch.v1.Job" API object. +func NewKubeJob(scope constructs.Construct, id *string, props *KubeJobProps) KubeJob { + _init_.Initialize() + + if err := validateNewKubeJobParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeJob{} + + _jsii_.Create( + "k8s.KubeJob", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.batch.v1.Job" API object. +func NewKubeJob_Override(k KubeJob, scope constructs.Construct, id *string, props *KubeJobProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeJob", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeJob_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeJob_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeJob", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeJob_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeJob_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeJob", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.Job". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeJob_Manifest(props *KubeJobProps) interface{} { + _init_.Initialize() + + if err := validateKubeJob_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeJob", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeJob_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeJob_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeJob", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeJob_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeJob", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeJob) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeJob) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeJob) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeJob) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeJobList.go b/pods/imports/k8s/KubeJobList.go new file mode 100644 index 000000000..b3f750866 --- /dev/null +++ b/pods/imports/k8s/KubeJobList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// JobList is a collection of jobs. +type KubeJobList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeJobList +type jsiiProxy_KubeJobList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeJobList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJobList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJobList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJobList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJobList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJobList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeJobList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.batch.v1.JobList" API object. +func NewKubeJobList(scope constructs.Construct, id *string, props *KubeJobListProps) KubeJobList { + _init_.Initialize() + + if err := validateNewKubeJobListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeJobList{} + + _jsii_.Create( + "k8s.KubeJobList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.batch.v1.JobList" API object. +func NewKubeJobList_Override(k KubeJobList, scope constructs.Construct, id *string, props *KubeJobListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeJobList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeJobList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeJobList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeJobList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeJobList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeJobList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeJobList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.JobList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeJobList_Manifest(props *KubeJobListProps) interface{} { + _init_.Initialize() + + if err := validateKubeJobList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeJobList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeJobList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeJobList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeJobList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeJobList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeJobList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeJobList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeJobList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeJobList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeJobList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeJobListProps.go b/pods/imports/k8s/KubeJobListProps.go new file mode 100644 index 000000000..80629c719 --- /dev/null +++ b/pods/imports/k8s/KubeJobListProps.go @@ -0,0 +1,11 @@ +package k8s + +// JobList is a collection of jobs. +type KubeJobListProps struct { + // items is the list of Jobs. + Items *[]*KubeJobProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeJobList__checks.go b/pods/imports/k8s/KubeJobList__checks.go new file mode 100644 index 000000000..85d9a274b --- /dev/null +++ b/pods/imports/k8s/KubeJobList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeJobList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeJobList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeJobList_ManifestParameters(props *KubeJobListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeJobList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeJobListParameters(scope constructs.Construct, id *string, props *KubeJobListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeJobList__no_checks.go b/pods/imports/k8s/KubeJobList__no_checks.go new file mode 100644 index 000000000..89c0d37f2 --- /dev/null +++ b/pods/imports/k8s/KubeJobList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeJobList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeJobList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeJobList_ManifestParameters(props *KubeJobListProps) error { + return nil +} + +func validateKubeJobList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeJobListParameters(scope constructs.Construct, id *string, props *KubeJobListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeJobProps.go b/pods/imports/k8s/KubeJobProps.go new file mode 100644 index 000000000..39d0e9d47 --- /dev/null +++ b/pods/imports/k8s/KubeJobProps.go @@ -0,0 +1,13 @@ +package k8s + +// Job represents the configuration of a single job. +type KubeJobProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of a job. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *JobSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeJob__checks.go b/pods/imports/k8s/KubeJob__checks.go new file mode 100644 index 000000000..faf2dc485 --- /dev/null +++ b/pods/imports/k8s/KubeJob__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeJob_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeJob_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeJob_ManifestParameters(props *KubeJobProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeJob_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeJobParameters(scope constructs.Construct, id *string, props *KubeJobProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeJob__no_checks.go b/pods/imports/k8s/KubeJob__no_checks.go new file mode 100644 index 000000000..9fe473628 --- /dev/null +++ b/pods/imports/k8s/KubeJob__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeJob_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeJob_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeJob_ManifestParameters(props *KubeJobProps) error { + return nil +} + +func validateKubeJob_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeJobParameters(scope constructs.Construct, id *string, props *KubeJobProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeLease.go b/pods/imports/k8s/KubeLease.go new file mode 100644 index 000000000..5c0ec2a5b --- /dev/null +++ b/pods/imports/k8s/KubeLease.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Lease defines a lease concept. +type KubeLease interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLease +type jsiiProxy_KubeLease struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLease) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLease) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLease) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLease) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLease) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLease) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLease) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.coordination.v1.Lease" API object. +func NewKubeLease(scope constructs.Construct, id *string, props *KubeLeaseProps) KubeLease { + _init_.Initialize() + + if err := validateNewKubeLeaseParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLease{} + + _jsii_.Create( + "k8s.KubeLease", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.coordination.v1.Lease" API object. +func NewKubeLease_Override(k KubeLease, scope constructs.Construct, id *string, props *KubeLeaseProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLease", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLease_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLease_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLease", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLease_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLease_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLease", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1.Lease". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLease_Manifest(props *KubeLeaseProps) interface{} { + _init_.Initialize() + + if err := validateKubeLease_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLease", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLease_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLease_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLease", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLease_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLease", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLease) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLease) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLease) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLease) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go new file mode 100644 index 000000000..363a2df40 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// LeaseCandidateList is a list of Lease objects. +type KubeLeaseCandidateListV1Alpha2 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLeaseCandidateListV1Alpha2 +type jsiiProxy_KubeLeaseCandidateListV1Alpha2 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidateList" API object. +func NewKubeLeaseCandidateListV1Alpha2(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) KubeLeaseCandidateListV1Alpha2 { + _init_.Initialize() + + if err := validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLeaseCandidateListV1Alpha2{} + + _jsii_.Create( + "k8s.KubeLeaseCandidateListV1Alpha2", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidateList" API object. +func NewKubeLeaseCandidateListV1Alpha2_Override(k KubeLeaseCandidateListV1Alpha2, scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLeaseCandidateListV1Alpha2", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLeaseCandidateListV1Alpha2_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateListV1Alpha2", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLeaseCandidateListV1Alpha2_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateListV1Alpha2", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha2.LeaseCandidateList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLeaseCandidateListV1Alpha2_Manifest(props *KubeLeaseCandidateListV1Alpha2Props) interface{} { + _init_.Initialize() + + if err := validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateListV1Alpha2", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLeaseCandidateListV1Alpha2_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLeaseCandidateListV1Alpha2_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateListV1Alpha2", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLeaseCandidateListV1Alpha2_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLeaseCandidateListV1Alpha2", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go new file mode 100644 index 000000000..7a8f1732e --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go @@ -0,0 +1,11 @@ +package k8s + +// LeaseCandidateList is a list of Lease objects. +type KubeLeaseCandidateListV1Alpha2Props struct { + // items is a list of schema objects. + Items *[]*KubeLeaseCandidateV1Alpha2Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go new file mode 100644 index 000000000..93f106609 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props *KubeLeaseCandidateListV1Alpha2Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLeaseCandidateListV1Alpha2_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go new file mode 100644 index 000000000..4611fe45a --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props *KubeLeaseCandidateListV1Alpha2Props) error { + return nil +} + +func validateKubeLeaseCandidateListV1Alpha2_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go new file mode 100644 index 000000000..bea257af3 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// LeaseCandidate defines a candidate for a Lease object. +// +// Candidates are created such that coordinated leader election will pick the best leader from the list of candidates. +type KubeLeaseCandidateV1Alpha2 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLeaseCandidateV1Alpha2 +type jsiiProxy_KubeLeaseCandidateV1Alpha2 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidate" API object. +func NewKubeLeaseCandidateV1Alpha2(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) KubeLeaseCandidateV1Alpha2 { + _init_.Initialize() + + if err := validateNewKubeLeaseCandidateV1Alpha2Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLeaseCandidateV1Alpha2{} + + _jsii_.Create( + "k8s.KubeLeaseCandidateV1Alpha2", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidate" API object. +func NewKubeLeaseCandidateV1Alpha2_Override(k KubeLeaseCandidateV1Alpha2, scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLeaseCandidateV1Alpha2", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLeaseCandidateV1Alpha2_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateV1Alpha2", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLeaseCandidateV1Alpha2_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateV1Alpha2", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha2.LeaseCandidate". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLeaseCandidateV1Alpha2_Manifest(props *KubeLeaseCandidateV1Alpha2Props) interface{} { + _init_.Initialize() + + if err := validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateV1Alpha2", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLeaseCandidateV1Alpha2_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLeaseCandidateV1Alpha2_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLeaseCandidateV1Alpha2", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLeaseCandidateV1Alpha2_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLeaseCandidateV1Alpha2", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go new file mode 100644 index 000000000..b44532a8e --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go @@ -0,0 +1,13 @@ +package k8s + +// LeaseCandidate defines a candidate for a Lease object. +// +// Candidates are created such that coordinated leader election will pick the best leader from the list of candidates. +type KubeLeaseCandidateV1Alpha2Props struct { + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec contains the specification of the Lease. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *LeaseCandidateSpecV1Alpha2 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go new file mode 100644 index 000000000..6f3156fd5 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props *KubeLeaseCandidateV1Alpha2Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLeaseCandidateV1Alpha2_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLeaseCandidateV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go new file mode 100644 index 000000000..48fd68ace --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props *KubeLeaseCandidateV1Alpha2Props) error { + return nil +} + +func validateKubeLeaseCandidateV1Alpha2_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLeaseCandidateV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeLeaseList.go b/pods/imports/k8s/KubeLeaseList.go new file mode 100644 index 000000000..0535494aa --- /dev/null +++ b/pods/imports/k8s/KubeLeaseList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// LeaseList is a list of Lease objects. +type KubeLeaseList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLeaseList +type jsiiProxy_KubeLeaseList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLeaseList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLeaseList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.coordination.v1.LeaseList" API object. +func NewKubeLeaseList(scope constructs.Construct, id *string, props *KubeLeaseListProps) KubeLeaseList { + _init_.Initialize() + + if err := validateNewKubeLeaseListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLeaseList{} + + _jsii_.Create( + "k8s.KubeLeaseList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.coordination.v1.LeaseList" API object. +func NewKubeLeaseList_Override(k KubeLeaseList, scope constructs.Construct, id *string, props *KubeLeaseListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLeaseList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLeaseList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLeaseList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLeaseList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLeaseList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLeaseList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLeaseList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1.LeaseList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLeaseList_Manifest(props *KubeLeaseListProps) interface{} { + _init_.Initialize() + + if err := validateKubeLeaseList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLeaseList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLeaseList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLeaseList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLeaseList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLeaseList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLeaseList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLeaseList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLeaseList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLeaseList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLeaseList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLeaseListProps.go b/pods/imports/k8s/KubeLeaseListProps.go new file mode 100644 index 000000000..8fdfd1466 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseListProps.go @@ -0,0 +1,11 @@ +package k8s + +// LeaseList is a list of Lease objects. +type KubeLeaseListProps struct { + // items is a list of schema objects. + Items *[]*KubeLeaseProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeLeaseList__checks.go b/pods/imports/k8s/KubeLeaseList__checks.go new file mode 100644 index 000000000..d8a8f00a9 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLeaseList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLeaseList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLeaseList_ManifestParameters(props *KubeLeaseListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLeaseList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLeaseListParameters(scope constructs.Construct, id *string, props *KubeLeaseListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLeaseList__no_checks.go b/pods/imports/k8s/KubeLeaseList__no_checks.go new file mode 100644 index 000000000..b09eb7301 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLeaseList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLeaseList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLeaseList_ManifestParameters(props *KubeLeaseListProps) error { + return nil +} + +func validateKubeLeaseList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLeaseListParameters(scope constructs.Construct, id *string, props *KubeLeaseListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeLeaseProps.go b/pods/imports/k8s/KubeLeaseProps.go new file mode 100644 index 000000000..ab6a9de37 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseProps.go @@ -0,0 +1,11 @@ +package k8s + +// Lease defines a lease concept. +type KubeLeaseProps struct { + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec contains the specification of the Lease. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *LeaseSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeLease__checks.go b/pods/imports/k8s/KubeLease__checks.go new file mode 100644 index 000000000..69c5af198 --- /dev/null +++ b/pods/imports/k8s/KubeLease__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLease_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLease_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLease_ManifestParameters(props *KubeLeaseProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLease_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLeaseParameters(scope constructs.Construct, id *string, props *KubeLeaseProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLease__no_checks.go b/pods/imports/k8s/KubeLease__no_checks.go new file mode 100644 index 000000000..da5fb3577 --- /dev/null +++ b/pods/imports/k8s/KubeLease__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLease_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLease_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLease_ManifestParameters(props *KubeLeaseProps) error { + return nil +} + +func validateKubeLease_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLeaseParameters(scope constructs.Construct, id *string, props *KubeLeaseProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeLimitRange.go b/pods/imports/k8s/KubeLimitRange.go new file mode 100644 index 000000000..e0afa87af --- /dev/null +++ b/pods/imports/k8s/KubeLimitRange.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +type KubeLimitRange interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLimitRange +type jsiiProxy_KubeLimitRange struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLimitRange) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRange) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRange) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRange) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRange) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRange) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRange) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.LimitRange" API object. +func NewKubeLimitRange(scope constructs.Construct, id *string, props *KubeLimitRangeProps) KubeLimitRange { + _init_.Initialize() + + if err := validateNewKubeLimitRangeParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLimitRange{} + + _jsii_.Create( + "k8s.KubeLimitRange", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.LimitRange" API object. +func NewKubeLimitRange_Override(k KubeLimitRange, scope constructs.Construct, id *string, props *KubeLimitRangeProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLimitRange", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLimitRange_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLimitRange_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLimitRange", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLimitRange_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLimitRange_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLimitRange", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.LimitRange". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLimitRange_Manifest(props *KubeLimitRangeProps) interface{} { + _init_.Initialize() + + if err := validateKubeLimitRange_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLimitRange", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLimitRange_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLimitRange_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLimitRange", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLimitRange_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLimitRange", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLimitRange) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLimitRange) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLimitRange) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLimitRange) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLimitRangeList.go b/pods/imports/k8s/KubeLimitRangeList.go new file mode 100644 index 000000000..2a20b2793 --- /dev/null +++ b/pods/imports/k8s/KubeLimitRangeList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// LimitRangeList is a list of LimitRange items. +type KubeLimitRangeList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLimitRangeList +type jsiiProxy_KubeLimitRangeList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLimitRangeList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRangeList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRangeList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRangeList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRangeList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRangeList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLimitRangeList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.LimitRangeList" API object. +func NewKubeLimitRangeList(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) KubeLimitRangeList { + _init_.Initialize() + + if err := validateNewKubeLimitRangeListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLimitRangeList{} + + _jsii_.Create( + "k8s.KubeLimitRangeList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.LimitRangeList" API object. +func NewKubeLimitRangeList_Override(k KubeLimitRangeList, scope constructs.Construct, id *string, props *KubeLimitRangeListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLimitRangeList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLimitRangeList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLimitRangeList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLimitRangeList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLimitRangeList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLimitRangeList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLimitRangeList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.LimitRangeList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLimitRangeList_Manifest(props *KubeLimitRangeListProps) interface{} { + _init_.Initialize() + + if err := validateKubeLimitRangeList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLimitRangeList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLimitRangeList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLimitRangeList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLimitRangeList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLimitRangeList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLimitRangeList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLimitRangeList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLimitRangeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLimitRangeList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLimitRangeList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLimitRangeListProps.go b/pods/imports/k8s/KubeLimitRangeListProps.go new file mode 100644 index 000000000..4e91a48a7 --- /dev/null +++ b/pods/imports/k8s/KubeLimitRangeListProps.go @@ -0,0 +1,13 @@ +package k8s + +// LimitRangeList is a list of LimitRange items. +type KubeLimitRangeListProps struct { + // Items is a list of LimitRange objects. + // + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Items *[]*KubeLimitRangeProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeLimitRangeList__checks.go b/pods/imports/k8s/KubeLimitRangeList__checks.go new file mode 100644 index 000000000..f6083cac3 --- /dev/null +++ b/pods/imports/k8s/KubeLimitRangeList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLimitRangeList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLimitRangeList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLimitRangeList_ManifestParameters(props *KubeLimitRangeListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLimitRangeList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLimitRangeListParameters(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLimitRangeList__no_checks.go b/pods/imports/k8s/KubeLimitRangeList__no_checks.go new file mode 100644 index 000000000..fa7658331 --- /dev/null +++ b/pods/imports/k8s/KubeLimitRangeList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLimitRangeList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLimitRangeList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLimitRangeList_ManifestParameters(props *KubeLimitRangeListProps) error { + return nil +} + +func validateKubeLimitRangeList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLimitRangeListParameters(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeLimitRangeProps.go b/pods/imports/k8s/KubeLimitRangeProps.go new file mode 100644 index 000000000..71d43ae1c --- /dev/null +++ b/pods/imports/k8s/KubeLimitRangeProps.go @@ -0,0 +1,13 @@ +package k8s + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +type KubeLimitRangeProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the limits enforced. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *LimitRangeSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeLimitRange__checks.go b/pods/imports/k8s/KubeLimitRange__checks.go new file mode 100644 index 000000000..8d2b96927 --- /dev/null +++ b/pods/imports/k8s/KubeLimitRange__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLimitRange_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLimitRange_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLimitRange_ManifestParameters(props *KubeLimitRangeProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLimitRange_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLimitRangeParameters(scope constructs.Construct, id *string, props *KubeLimitRangeProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLimitRange__no_checks.go b/pods/imports/k8s/KubeLimitRange__no_checks.go new file mode 100644 index 000000000..27e315c61 --- /dev/null +++ b/pods/imports/k8s/KubeLimitRange__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLimitRange_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLimitRange_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLimitRange_ManifestParameters(props *KubeLimitRangeProps) error { + return nil +} + +func validateKubeLimitRange_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLimitRangeParameters(scope constructs.Construct, id *string, props *KubeLimitRangeProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview.go b/pods/imports/k8s/KubeLocalSubjectAccessReview.go new file mode 100644 index 000000000..758e95ceb --- /dev/null +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking. +type KubeLocalSubjectAccessReview interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeLocalSubjectAccessReview +type jsiiProxy_KubeLocalSubjectAccessReview struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeLocalSubjectAccessReview) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authorization.v1.LocalSubjectAccessReview" API object. +func NewKubeLocalSubjectAccessReview(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) KubeLocalSubjectAccessReview { + _init_.Initialize() + + if err := validateNewKubeLocalSubjectAccessReviewParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeLocalSubjectAccessReview{} + + _jsii_.Create( + "k8s.KubeLocalSubjectAccessReview", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authorization.v1.LocalSubjectAccessReview" API object. +func NewKubeLocalSubjectAccessReview_Override(k KubeLocalSubjectAccessReview, scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeLocalSubjectAccessReview", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeLocalSubjectAccessReview_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLocalSubjectAccessReview_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLocalSubjectAccessReview", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeLocalSubjectAccessReview_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeLocalSubjectAccessReview_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeLocalSubjectAccessReview", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.LocalSubjectAccessReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeLocalSubjectAccessReview_Manifest(props *KubeLocalSubjectAccessReviewProps) interface{} { + _init_.Initialize() + + if err := validateKubeLocalSubjectAccessReview_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeLocalSubjectAccessReview", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeLocalSubjectAccessReview_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeLocalSubjectAccessReview_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeLocalSubjectAccessReview", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeLocalSubjectAccessReview_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeLocalSubjectAccessReview", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeLocalSubjectAccessReview) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeLocalSubjectAccessReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeLocalSubjectAccessReview) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeLocalSubjectAccessReview) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go b/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go new file mode 100644 index 000000000..6eebba280 --- /dev/null +++ b/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go @@ -0,0 +1,15 @@ +package k8s + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking. +type KubeLocalSubjectAccessReviewProps struct { + // Spec holds information about the request being evaluated. + // + // spec.namespace must be equal to the namespace you made the request against. If empty, it is defaulted. + Spec *SubjectAccessReviewSpec `field:"required" json:"spec" yaml:"spec"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go b/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go new file mode 100644 index 000000000..6118f2dae --- /dev/null +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeLocalSubjectAccessReview_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeLocalSubjectAccessReview_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeLocalSubjectAccessReview_ManifestParameters(props *KubeLocalSubjectAccessReviewProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeLocalSubjectAccessReview_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeLocalSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go new file mode 100644 index 000000000..54fcc31f1 --- /dev/null +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLocalSubjectAccessReview_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLocalSubjectAccessReview_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLocalSubjectAccessReview_ManifestParameters(props *KubeLocalSubjectAccessReviewProps) error { + return nil +} + +func validateKubeLocalSubjectAccessReview_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLocalSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go new file mode 100644 index 000000000..81276286d --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding. +type KubeMutatingAdmissionPolicyBindingListV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeMutatingAdmissionPolicyBindingListV1Alpha1 +type jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList" API object. +func NewKubeMutatingAdmissionPolicyBindingListV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) KubeMutatingAdmissionPolicyBindingListV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1{} + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList" API object. +func NewKubeMutatingAdmissionPolicyBindingListV1Alpha1_Override(k KubeMutatingAdmissionPolicyBindingListV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeMutatingAdmissionPolicyBindingListV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeMutatingAdmissionPolicyBindingListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeMutatingAdmissionPolicyBindingListV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go new file mode 100644 index 000000000..78ac81789 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go @@ -0,0 +1,11 @@ +package k8s + +// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding. +type KubeMutatingAdmissionPolicyBindingListV1Alpha1Props struct { + // List of PolicyBinding. + Items *[]*KubeMutatingAdmissionPolicyBindingV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go new file mode 100644 index 000000000..e7db3793f --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go new file mode 100644 index 000000000..a31f6b85d --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go new file mode 100644 index 000000000..95691a4a7 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go @@ -0,0 +1,321 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources. +// +// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget). +// +// Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeMutatingAdmissionPolicyBindingV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeMutatingAdmissionPolicyBindingV1Alpha1 +type jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding" API object. +func NewKubeMutatingAdmissionPolicyBindingV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) KubeMutatingAdmissionPolicyBindingV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1{} + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding" API object. +func NewKubeMutatingAdmissionPolicyBindingV1Alpha1_Override(k KubeMutatingAdmissionPolicyBindingV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeMutatingAdmissionPolicyBindingV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeMutatingAdmissionPolicyBindingV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeMutatingAdmissionPolicyBindingV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go new file mode 100644 index 000000000..a91831903 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go @@ -0,0 +1,17 @@ +package k8s + +// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources. +// +// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget). +// +// Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeMutatingAdmissionPolicyBindingV1Alpha1Props struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the MutatingAdmissionPolicyBinding. + Spec *MutatingAdmissionPolicyBindingSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go new file mode 100644 index 000000000..e19c40577 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go new file mode 100644 index 000000000..42f57a25d --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go new file mode 100644 index 000000000..96152b3c4 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy. +type KubeMutatingAdmissionPolicyListV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeMutatingAdmissionPolicyListV1Alpha1 +type jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList" API object. +func NewKubeMutatingAdmissionPolicyListV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) KubeMutatingAdmissionPolicyListV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeMutatingAdmissionPolicyListV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1{} + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList" API object. +func NewKubeMutatingAdmissionPolicyListV1Alpha1_Override(k KubeMutatingAdmissionPolicyListV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeMutatingAdmissionPolicyListV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeMutatingAdmissionPolicyListV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeMutatingAdmissionPolicyListV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyListV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeMutatingAdmissionPolicyListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeMutatingAdmissionPolicyListV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go new file mode 100644 index 000000000..8f63fa7d8 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go @@ -0,0 +1,11 @@ +package k8s + +// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy. +type KubeMutatingAdmissionPolicyListV1Alpha1Props struct { + // List of ValidatingAdmissionPolicy. + Items *[]*KubeMutatingAdmissionPolicyV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go new file mode 100644 index 000000000..d5a3d2bee --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeMutatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go new file mode 100644 index 000000000..daac36a9f --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeMutatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go new file mode 100644 index 000000000..9909f610d --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain. +type KubeMutatingAdmissionPolicyV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeMutatingAdmissionPolicyV1Alpha1 +type jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy" API object. +func NewKubeMutatingAdmissionPolicyV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) KubeMutatingAdmissionPolicyV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1{} + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy" API object. +func NewKubeMutatingAdmissionPolicyV1Alpha1_Override(k KubeMutatingAdmissionPolicyV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeMutatingAdmissionPolicyV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeMutatingAdmissionPolicyV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeMutatingAdmissionPolicyV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeMutatingAdmissionPolicyV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeMutatingAdmissionPolicyV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go new file mode 100644 index 000000000..77be2c26d --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go @@ -0,0 +1,11 @@ +package k8s + +// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain. +type KubeMutatingAdmissionPolicyV1Alpha1Props struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the MutatingAdmissionPolicy. + Spec *MutatingAdmissionPolicySpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go new file mode 100644 index 000000000..eb55b1a2c --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go new file mode 100644 index 000000000..914d184cb --- /dev/null +++ b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { + return nil +} + +func validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go new file mode 100644 index 000000000..175e5073c --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. +type KubeMutatingWebhookConfiguration interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeMutatingWebhookConfiguration +type jsiiProxy_KubeMutatingWebhookConfiguration struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" API object. +func NewKubeMutatingWebhookConfiguration(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) KubeMutatingWebhookConfiguration { + _init_.Initialize() + + if err := validateNewKubeMutatingWebhookConfigurationParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeMutatingWebhookConfiguration{} + + _jsii_.Create( + "k8s.KubeMutatingWebhookConfiguration", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" API object. +func NewKubeMutatingWebhookConfiguration_Override(k KubeMutatingWebhookConfiguration, scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeMutatingWebhookConfiguration", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeMutatingWebhookConfiguration_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfiguration_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfiguration", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeMutatingWebhookConfiguration_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfiguration_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfiguration", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeMutatingWebhookConfiguration_Manifest(props *KubeMutatingWebhookConfigurationProps) interface{} { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfiguration_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfiguration", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeMutatingWebhookConfiguration_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfiguration_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfiguration", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeMutatingWebhookConfiguration_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeMutatingWebhookConfiguration", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeMutatingWebhookConfiguration) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingWebhookConfiguration) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingWebhookConfiguration) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeMutatingWebhookConfiguration) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go new file mode 100644 index 000000000..becf0ef83 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration. +type KubeMutatingWebhookConfigurationList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeMutatingWebhookConfigurationList +type jsiiProxy_KubeMutatingWebhookConfigurationList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" API object. +func NewKubeMutatingWebhookConfigurationList(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) KubeMutatingWebhookConfigurationList { + _init_.Initialize() + + if err := validateNewKubeMutatingWebhookConfigurationListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeMutatingWebhookConfigurationList{} + + _jsii_.Create( + "k8s.KubeMutatingWebhookConfigurationList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" API object. +func NewKubeMutatingWebhookConfigurationList_Override(k KubeMutatingWebhookConfigurationList, scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeMutatingWebhookConfigurationList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeMutatingWebhookConfigurationList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfigurationList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfigurationList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeMutatingWebhookConfigurationList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfigurationList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfigurationList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeMutatingWebhookConfigurationList_Manifest(props *KubeMutatingWebhookConfigurationListProps) interface{} { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfigurationList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfigurationList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeMutatingWebhookConfigurationList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeMutatingWebhookConfigurationList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeMutatingWebhookConfigurationList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeMutatingWebhookConfigurationList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeMutatingWebhookConfigurationList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go new file mode 100644 index 000000000..dfbd8db43 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go @@ -0,0 +1,11 @@ +package k8s + +// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration. +type KubeMutatingWebhookConfigurationListProps struct { + // List of MutatingWebhookConfiguration. + Items *[]*KubeMutatingWebhookConfigurationProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go new file mode 100644 index 000000000..7dad00365 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeMutatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingWebhookConfigurationList_ManifestParameters(props *KubeMutatingWebhookConfigurationListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeMutatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeMutatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go new file mode 100644 index 000000000..f4352f7ea --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeMutatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeMutatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeMutatingWebhookConfigurationList_ManifestParameters(props *KubeMutatingWebhookConfigurationListProps) error { + return nil +} + +func validateKubeMutatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeMutatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go new file mode 100644 index 000000000..461ebf843 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go @@ -0,0 +1,11 @@ +package k8s + +// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. +type KubeMutatingWebhookConfigurationProps struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Webhooks is a list of webhooks and the affected resources and operations. + Webhooks *[]*MutatingWebhook `field:"optional" json:"webhooks" yaml:"webhooks"` +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go new file mode 100644 index 000000000..b5306acfd --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeMutatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingWebhookConfiguration_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeMutatingWebhookConfiguration_ManifestParameters(props *KubeMutatingWebhookConfigurationProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeMutatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeMutatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go new file mode 100644 index 000000000..1dbe0c8b7 --- /dev/null +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeMutatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeMutatingWebhookConfiguration_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeMutatingWebhookConfiguration_ManifestParameters(props *KubeMutatingWebhookConfigurationProps) error { + return nil +} + +func validateKubeMutatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeMutatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeNamespace.go b/pods/imports/k8s/KubeNamespace.go new file mode 100644 index 000000000..252a2ae3a --- /dev/null +++ b/pods/imports/k8s/KubeNamespace.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Namespace provides a scope for Names. +// +// Use of multiple namespaces is optional. +type KubeNamespace interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeNamespace +type jsiiProxy_KubeNamespace struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeNamespace) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespace) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespace) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespace) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespace) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespace) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespace) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Namespace" API object. +func NewKubeNamespace(scope constructs.Construct, id *string, props *KubeNamespaceProps) KubeNamespace { + _init_.Initialize() + + if err := validateNewKubeNamespaceParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeNamespace{} + + _jsii_.Create( + "k8s.KubeNamespace", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Namespace" API object. +func NewKubeNamespace_Override(k KubeNamespace, scope constructs.Construct, id *string, props *KubeNamespaceProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeNamespace", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeNamespace_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNamespace_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNamespace", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeNamespace_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNamespace_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNamespace", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Namespace". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeNamespace_Manifest(props *KubeNamespaceProps) interface{} { + _init_.Initialize() + + if err := validateKubeNamespace_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeNamespace", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeNamespace_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeNamespace_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeNamespace", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeNamespace_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeNamespace", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeNamespace) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeNamespace) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeNamespace) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeNamespace) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeNamespaceList.go b/pods/imports/k8s/KubeNamespaceList.go new file mode 100644 index 000000000..29d8d680c --- /dev/null +++ b/pods/imports/k8s/KubeNamespaceList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// NamespaceList is a list of Namespaces. +type KubeNamespaceList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeNamespaceList +type jsiiProxy_KubeNamespaceList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeNamespaceList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespaceList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespaceList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespaceList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespaceList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespaceList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNamespaceList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.NamespaceList" API object. +func NewKubeNamespaceList(scope constructs.Construct, id *string, props *KubeNamespaceListProps) KubeNamespaceList { + _init_.Initialize() + + if err := validateNewKubeNamespaceListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeNamespaceList{} + + _jsii_.Create( + "k8s.KubeNamespaceList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.NamespaceList" API object. +func NewKubeNamespaceList_Override(k KubeNamespaceList, scope constructs.Construct, id *string, props *KubeNamespaceListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeNamespaceList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeNamespaceList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNamespaceList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNamespaceList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeNamespaceList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNamespaceList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNamespaceList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.NamespaceList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeNamespaceList_Manifest(props *KubeNamespaceListProps) interface{} { + _init_.Initialize() + + if err := validateKubeNamespaceList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeNamespaceList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeNamespaceList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeNamespaceList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeNamespaceList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeNamespaceList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeNamespaceList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeNamespaceList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeNamespaceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeNamespaceList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeNamespaceList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeNamespaceListProps.go b/pods/imports/k8s/KubeNamespaceListProps.go new file mode 100644 index 000000000..76032e1ca --- /dev/null +++ b/pods/imports/k8s/KubeNamespaceListProps.go @@ -0,0 +1,13 @@ +package k8s + +// NamespaceList is a list of Namespaces. +type KubeNamespaceListProps struct { + // Items is the list of Namespace objects in the list. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + Items *[]*KubeNamespaceProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeNamespaceList__checks.go b/pods/imports/k8s/KubeNamespaceList__checks.go new file mode 100644 index 000000000..c913feafd --- /dev/null +++ b/pods/imports/k8s/KubeNamespaceList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeNamespaceList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeNamespaceList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeNamespaceList_ManifestParameters(props *KubeNamespaceListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeNamespaceList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeNamespaceListParameters(scope constructs.Construct, id *string, props *KubeNamespaceListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeNamespaceList__no_checks.go b/pods/imports/k8s/KubeNamespaceList__no_checks.go new file mode 100644 index 000000000..d00326d2b --- /dev/null +++ b/pods/imports/k8s/KubeNamespaceList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeNamespaceList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeNamespaceList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeNamespaceList_ManifestParameters(props *KubeNamespaceListProps) error { + return nil +} + +func validateKubeNamespaceList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeNamespaceListParameters(scope constructs.Construct, id *string, props *KubeNamespaceListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeNamespaceProps.go b/pods/imports/k8s/KubeNamespaceProps.go new file mode 100644 index 000000000..e1d545dc4 --- /dev/null +++ b/pods/imports/k8s/KubeNamespaceProps.go @@ -0,0 +1,15 @@ +package k8s + +// Namespace provides a scope for Names. +// +// Use of multiple namespaces is optional. +type KubeNamespaceProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the behavior of the Namespace. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *NamespaceSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeNamespace__checks.go b/pods/imports/k8s/KubeNamespace__checks.go new file mode 100644 index 000000000..32ed1a4d6 --- /dev/null +++ b/pods/imports/k8s/KubeNamespace__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeNamespace_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeNamespace_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeNamespace_ManifestParameters(props *KubeNamespaceProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeNamespace_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeNamespaceParameters(scope constructs.Construct, id *string, props *KubeNamespaceProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeNamespace__no_checks.go b/pods/imports/k8s/KubeNamespace__no_checks.go new file mode 100644 index 000000000..acb93ea5f --- /dev/null +++ b/pods/imports/k8s/KubeNamespace__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeNamespace_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeNamespace_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeNamespace_ManifestParameters(props *KubeNamespaceProps) error { + return nil +} + +func validateKubeNamespace_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeNamespaceParameters(scope constructs.Construct, id *string, props *KubeNamespaceProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeNetworkPolicy.go b/pods/imports/k8s/KubeNetworkPolicy.go new file mode 100644 index 000000000..3a9e0fe8d --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicy.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// NetworkPolicy describes what network traffic is allowed for a set of Pods. +type KubeNetworkPolicy interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeNetworkPolicy +type jsiiProxy_KubeNetworkPolicy struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeNetworkPolicy) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicy) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicy) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicy) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicy) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicy) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicy) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1.NetworkPolicy" API object. +func NewKubeNetworkPolicy(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) KubeNetworkPolicy { + _init_.Initialize() + + if err := validateNewKubeNetworkPolicyParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeNetworkPolicy{} + + _jsii_.Create( + "k8s.KubeNetworkPolicy", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1.NetworkPolicy" API object. +func NewKubeNetworkPolicy_Override(k KubeNetworkPolicy, scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeNetworkPolicy", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeNetworkPolicy_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNetworkPolicy_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicy", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeNetworkPolicy_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNetworkPolicy_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicy", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.NetworkPolicy". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeNetworkPolicy_Manifest(props *KubeNetworkPolicyProps) interface{} { + _init_.Initialize() + + if err := validateKubeNetworkPolicy_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicy", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeNetworkPolicy_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeNetworkPolicy_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicy", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeNetworkPolicy_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeNetworkPolicy", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeNetworkPolicy) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeNetworkPolicy) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeNetworkPolicy) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeNetworkPolicy) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeNetworkPolicyList.go b/pods/imports/k8s/KubeNetworkPolicyList.go new file mode 100644 index 000000000..d64b50fd1 --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicyList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// NetworkPolicyList is a list of NetworkPolicy objects. +type KubeNetworkPolicyList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeNetworkPolicyList +type jsiiProxy_KubeNetworkPolicyList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeNetworkPolicyList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicyList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicyList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicyList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicyList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicyList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNetworkPolicyList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1.NetworkPolicyList" API object. +func NewKubeNetworkPolicyList(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) KubeNetworkPolicyList { + _init_.Initialize() + + if err := validateNewKubeNetworkPolicyListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeNetworkPolicyList{} + + _jsii_.Create( + "k8s.KubeNetworkPolicyList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1.NetworkPolicyList" API object. +func NewKubeNetworkPolicyList_Override(k KubeNetworkPolicyList, scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeNetworkPolicyList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeNetworkPolicyList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNetworkPolicyList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicyList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeNetworkPolicyList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNetworkPolicyList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicyList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.NetworkPolicyList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeNetworkPolicyList_Manifest(props *KubeNetworkPolicyListProps) interface{} { + _init_.Initialize() + + if err := validateKubeNetworkPolicyList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicyList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeNetworkPolicyList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeNetworkPolicyList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeNetworkPolicyList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeNetworkPolicyList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeNetworkPolicyList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeNetworkPolicyList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeNetworkPolicyList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeNetworkPolicyList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeNetworkPolicyList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeNetworkPolicyListProps.go b/pods/imports/k8s/KubeNetworkPolicyListProps.go new file mode 100644 index 000000000..07ba093a1 --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicyListProps.go @@ -0,0 +1,11 @@ +package k8s + +// NetworkPolicyList is a list of NetworkPolicy objects. +type KubeNetworkPolicyListProps struct { + // items is a list of schema objects. + Items *[]*KubeNetworkPolicyProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeNetworkPolicyList__checks.go b/pods/imports/k8s/KubeNetworkPolicyList__checks.go new file mode 100644 index 000000000..d02c8376c --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicyList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeNetworkPolicyList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeNetworkPolicyList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeNetworkPolicyList_ManifestParameters(props *KubeNetworkPolicyListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeNetworkPolicyList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeNetworkPolicyListParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go b/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go new file mode 100644 index 000000000..dceaeb487 --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeNetworkPolicyList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeNetworkPolicyList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeNetworkPolicyList_ManifestParameters(props *KubeNetworkPolicyListProps) error { + return nil +} + +func validateKubeNetworkPolicyList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeNetworkPolicyListParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeNetworkPolicyProps.go b/pods/imports/k8s/KubeNetworkPolicyProps.go new file mode 100644 index 000000000..5a1bd6467 --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicyProps.go @@ -0,0 +1,11 @@ +package k8s + +// NetworkPolicy describes what network traffic is allowed for a set of Pods. +type KubeNetworkPolicyProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec represents the specification of the desired behavior for this NetworkPolicy. + Spec *NetworkPolicySpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeNetworkPolicy__checks.go b/pods/imports/k8s/KubeNetworkPolicy__checks.go new file mode 100644 index 000000000..b3ae652cc --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicy__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeNetworkPolicy_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeNetworkPolicy_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeNetworkPolicy_ManifestParameters(props *KubeNetworkPolicyProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeNetworkPolicy_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeNetworkPolicyParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeNetworkPolicy__no_checks.go b/pods/imports/k8s/KubeNetworkPolicy__no_checks.go new file mode 100644 index 000000000..20af7c73b --- /dev/null +++ b/pods/imports/k8s/KubeNetworkPolicy__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeNetworkPolicy_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeNetworkPolicy_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeNetworkPolicy_ManifestParameters(props *KubeNetworkPolicyProps) error { + return nil +} + +func validateKubeNetworkPolicy_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeNetworkPolicyParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeNode.go b/pods/imports/k8s/KubeNode.go new file mode 100644 index 000000000..1cd341a0e --- /dev/null +++ b/pods/imports/k8s/KubeNode.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Node is a worker node in Kubernetes. +// +// Each node will have a unique identifier in the cache (i.e. in etcd). +type KubeNode interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeNode +type jsiiProxy_KubeNode struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeNode) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNode) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNode) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNode) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNode) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNode) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNode) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Node" API object. +func NewKubeNode(scope constructs.Construct, id *string, props *KubeNodeProps) KubeNode { + _init_.Initialize() + + if err := validateNewKubeNodeParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeNode{} + + _jsii_.Create( + "k8s.KubeNode", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Node" API object. +func NewKubeNode_Override(k KubeNode, scope constructs.Construct, id *string, props *KubeNodeProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeNode", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeNode_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNode_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNode", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeNode_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNode_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNode", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Node". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeNode_Manifest(props *KubeNodeProps) interface{} { + _init_.Initialize() + + if err := validateKubeNode_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeNode", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeNode_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeNode_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeNode", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeNode_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeNode", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeNode) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeNode) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeNode) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeNode) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeNodeList.go b/pods/imports/k8s/KubeNodeList.go new file mode 100644 index 000000000..83b3c79aa --- /dev/null +++ b/pods/imports/k8s/KubeNodeList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// NodeList is the whole list of all Nodes which have been registered with master. +type KubeNodeList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeNodeList +type jsiiProxy_KubeNodeList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeNodeList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNodeList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNodeList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNodeList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNodeList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNodeList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeNodeList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.NodeList" API object. +func NewKubeNodeList(scope constructs.Construct, id *string, props *KubeNodeListProps) KubeNodeList { + _init_.Initialize() + + if err := validateNewKubeNodeListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeNodeList{} + + _jsii_.Create( + "k8s.KubeNodeList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.NodeList" API object. +func NewKubeNodeList_Override(k KubeNodeList, scope constructs.Construct, id *string, props *KubeNodeListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeNodeList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeNodeList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNodeList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNodeList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeNodeList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeNodeList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeNodeList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.NodeList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeNodeList_Manifest(props *KubeNodeListProps) interface{} { + _init_.Initialize() + + if err := validateKubeNodeList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeNodeList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeNodeList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeNodeList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeNodeList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeNodeList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeNodeList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeNodeList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeNodeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeNodeList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeNodeList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeNodeListProps.go b/pods/imports/k8s/KubeNodeListProps.go new file mode 100644 index 000000000..b6268b21d --- /dev/null +++ b/pods/imports/k8s/KubeNodeListProps.go @@ -0,0 +1,11 @@ +package k8s + +// NodeList is the whole list of all Nodes which have been registered with master. +type KubeNodeListProps struct { + // List of nodes. + Items *[]*KubeNodeProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeNodeList__checks.go b/pods/imports/k8s/KubeNodeList__checks.go new file mode 100644 index 000000000..4750d47c4 --- /dev/null +++ b/pods/imports/k8s/KubeNodeList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeNodeList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeNodeList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeNodeList_ManifestParameters(props *KubeNodeListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeNodeList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeNodeListParameters(scope constructs.Construct, id *string, props *KubeNodeListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeNodeList__no_checks.go b/pods/imports/k8s/KubeNodeList__no_checks.go new file mode 100644 index 000000000..9f227870c --- /dev/null +++ b/pods/imports/k8s/KubeNodeList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeNodeList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeNodeList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeNodeList_ManifestParameters(props *KubeNodeListProps) error { + return nil +} + +func validateKubeNodeList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeNodeListParameters(scope constructs.Construct, id *string, props *KubeNodeListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeNodeProps.go b/pods/imports/k8s/KubeNodeProps.go new file mode 100644 index 000000000..e306be73b --- /dev/null +++ b/pods/imports/k8s/KubeNodeProps.go @@ -0,0 +1,15 @@ +package k8s + +// Node is a worker node in Kubernetes. +// +// Each node will have a unique identifier in the cache (i.e. in etcd). +type KubeNodeProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the behavior of a node. + // + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *NodeSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeNode__checks.go b/pods/imports/k8s/KubeNode__checks.go new file mode 100644 index 000000000..e69002a33 --- /dev/null +++ b/pods/imports/k8s/KubeNode__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeNode_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeNode_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeNode_ManifestParameters(props *KubeNodeProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeNode_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeNodeParameters(scope constructs.Construct, id *string, props *KubeNodeProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeNode__no_checks.go b/pods/imports/k8s/KubeNode__no_checks.go new file mode 100644 index 000000000..235cbeb56 --- /dev/null +++ b/pods/imports/k8s/KubeNode__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeNode_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeNode_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeNode_ManifestParameters(props *KubeNodeProps) error { + return nil +} + +func validateKubeNode_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeNodeParameters(scope constructs.Construct, id *string, props *KubeNodeProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolume.go b/pods/imports/k8s/KubePersistentVolume.go new file mode 100644 index 000000000..ab4e52d96 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolume.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// +// It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes +type KubePersistentVolume interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePersistentVolume +type jsiiProxy_KubePersistentVolume struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePersistentVolume) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolume) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolume) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolume) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolume) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolume) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolume) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PersistentVolume" API object. +func NewKubePersistentVolume(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) KubePersistentVolume { + _init_.Initialize() + + if err := validateNewKubePersistentVolumeParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePersistentVolume{} + + _jsii_.Create( + "k8s.KubePersistentVolume", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PersistentVolume" API object. +func NewKubePersistentVolume_Override(k KubePersistentVolume, scope constructs.Construct, id *string, props *KubePersistentVolumeProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePersistentVolume", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePersistentVolume_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolume_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolume", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePersistentVolume_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolume_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolume", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolume". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePersistentVolume_Manifest(props *KubePersistentVolumeProps) interface{} { + _init_.Initialize() + + if err := validateKubePersistentVolume_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolume", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePersistentVolume_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePersistentVolume_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolume", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePersistentVolume_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePersistentVolume", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePersistentVolume) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolume) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolume) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePersistentVolume) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaim.go b/pods/imports/k8s/KubePersistentVolumeClaim.go new file mode 100644 index 000000000..1a4ee038b --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaim.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume. +type KubePersistentVolumeClaim interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePersistentVolumeClaim +type jsiiProxy_KubePersistentVolumeClaim struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaim) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PersistentVolumeClaim" API object. +func NewKubePersistentVolumeClaim(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) KubePersistentVolumeClaim { + _init_.Initialize() + + if err := validateNewKubePersistentVolumeClaimParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePersistentVolumeClaim{} + + _jsii_.Create( + "k8s.KubePersistentVolumeClaim", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PersistentVolumeClaim" API object. +func NewKubePersistentVolumeClaim_Override(k KubePersistentVolumeClaim, scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePersistentVolumeClaim", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePersistentVolumeClaim_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaim_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaim", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePersistentVolumeClaim_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaim_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaim", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeClaim". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePersistentVolumeClaim_Manifest(props *KubePersistentVolumeClaimProps) interface{} { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaim_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaim", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePersistentVolumeClaim_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaim_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaim", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePersistentVolumeClaim_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePersistentVolumeClaim", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePersistentVolumeClaim) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolumeClaim) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolumeClaim) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePersistentVolumeClaim) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList.go b/pods/imports/k8s/KubePersistentVolumeClaimList.go new file mode 100644 index 000000000..cb30fd294 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaimList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +type KubePersistentVolumeClaimList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePersistentVolumeClaimList +type jsiiProxy_KubePersistentVolumeClaimList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeClaimList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PersistentVolumeClaimList" API object. +func NewKubePersistentVolumeClaimList(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) KubePersistentVolumeClaimList { + _init_.Initialize() + + if err := validateNewKubePersistentVolumeClaimListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePersistentVolumeClaimList{} + + _jsii_.Create( + "k8s.KubePersistentVolumeClaimList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PersistentVolumeClaimList" API object. +func NewKubePersistentVolumeClaimList_Override(k KubePersistentVolumeClaimList, scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePersistentVolumeClaimList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePersistentVolumeClaimList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaimList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaimList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePersistentVolumeClaimList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaimList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaimList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeClaimList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePersistentVolumeClaimList_Manifest(props *KubePersistentVolumeClaimListProps) interface{} { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaimList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaimList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePersistentVolumeClaimList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePersistentVolumeClaimList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeClaimList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePersistentVolumeClaimList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePersistentVolumeClaimList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePersistentVolumeClaimList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolumeClaimList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolumeClaimList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePersistentVolumeClaimList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaimListProps.go b/pods/imports/k8s/KubePersistentVolumeClaimListProps.go new file mode 100644 index 000000000..23214fd03 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaimListProps.go @@ -0,0 +1,13 @@ +package k8s + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +type KubePersistentVolumeClaimListProps struct { + // items is a list of persistent volume claims. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + Items *[]*KubePersistentVolumeClaimProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go b/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go new file mode 100644 index 000000000..c06e25109 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePersistentVolumeClaimList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolumeClaimList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolumeClaimList_ManifestParameters(props *KubePersistentVolumeClaimListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePersistentVolumeClaimList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePersistentVolumeClaimListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go b/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go new file mode 100644 index 000000000..fb2f5cb93 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePersistentVolumeClaimList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePersistentVolumeClaimList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePersistentVolumeClaimList_ManifestParameters(props *KubePersistentVolumeClaimListProps) error { + return nil +} + +func validateKubePersistentVolumeClaimList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePersistentVolumeClaimListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaimProps.go b/pods/imports/k8s/KubePersistentVolumeClaimProps.go new file mode 100644 index 000000000..cf920009e --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaimProps.go @@ -0,0 +1,13 @@ +package k8s + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume. +type KubePersistentVolumeClaimProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec defines the desired characteristics of a volume requested by a pod author. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + Spec *PersistentVolumeClaimSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaim__checks.go b/pods/imports/k8s/KubePersistentVolumeClaim__checks.go new file mode 100644 index 000000000..e7bfef198 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaim__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePersistentVolumeClaim_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolumeClaim_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolumeClaim_ManifestParameters(props *KubePersistentVolumeClaimProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePersistentVolumeClaim_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePersistentVolumeClaimParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go b/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go new file mode 100644 index 000000000..cb4366ad2 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePersistentVolumeClaim_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePersistentVolumeClaim_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePersistentVolumeClaim_ManifestParameters(props *KubePersistentVolumeClaimProps) error { + return nil +} + +func validateKubePersistentVolumeClaim_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePersistentVolumeClaimParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolumeList.go b/pods/imports/k8s/KubePersistentVolumeList.go new file mode 100644 index 000000000..d4e38a7a3 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PersistentVolumeList is a list of PersistentVolume items. +type KubePersistentVolumeList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePersistentVolumeList +type jsiiProxy_KubePersistentVolumeList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePersistentVolumeList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePersistentVolumeList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PersistentVolumeList" API object. +func NewKubePersistentVolumeList(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) KubePersistentVolumeList { + _init_.Initialize() + + if err := validateNewKubePersistentVolumeListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePersistentVolumeList{} + + _jsii_.Create( + "k8s.KubePersistentVolumeList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PersistentVolumeList" API object. +func NewKubePersistentVolumeList_Override(k KubePersistentVolumeList, scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePersistentVolumeList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePersistentVolumeList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolumeList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePersistentVolumeList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePersistentVolumeList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePersistentVolumeList_Manifest(props *KubePersistentVolumeListProps) interface{} { + _init_.Initialize() + + if err := validateKubePersistentVolumeList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePersistentVolumeList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePersistentVolumeList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePersistentVolumeList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePersistentVolumeList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePersistentVolumeList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePersistentVolumeList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolumeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePersistentVolumeList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePersistentVolumeList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePersistentVolumeListProps.go b/pods/imports/k8s/KubePersistentVolumeListProps.go new file mode 100644 index 000000000..a4d676804 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeListProps.go @@ -0,0 +1,13 @@ +package k8s + +// PersistentVolumeList is a list of PersistentVolume items. +type KubePersistentVolumeListProps struct { + // items is a list of persistent volumes. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes + Items *[]*KubePersistentVolumeProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePersistentVolumeList__checks.go b/pods/imports/k8s/KubePersistentVolumeList__checks.go new file mode 100644 index 000000000..623e21129 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePersistentVolumeList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolumeList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolumeList_ManifestParameters(props *KubePersistentVolumeListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePersistentVolumeList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePersistentVolumeListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolumeList__no_checks.go b/pods/imports/k8s/KubePersistentVolumeList__no_checks.go new file mode 100644 index 000000000..a3dca366f --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePersistentVolumeList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePersistentVolumeList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePersistentVolumeList_ManifestParameters(props *KubePersistentVolumeListProps) error { + return nil +} + +func validateKubePersistentVolumeList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePersistentVolumeListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolumeProps.go b/pods/imports/k8s/KubePersistentVolumeProps.go new file mode 100644 index 000000000..71b274276 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolumeProps.go @@ -0,0 +1,15 @@ +package k8s + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// +// It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes +type KubePersistentVolumeProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec defines a specification of a persistent volume owned by the cluster. + // + // Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + Spec *PersistentVolumeSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubePersistentVolume__checks.go b/pods/imports/k8s/KubePersistentVolume__checks.go new file mode 100644 index 000000000..1b25adfeb --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolume__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePersistentVolume_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolume_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePersistentVolume_ManifestParameters(props *KubePersistentVolumeProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePersistentVolume_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePersistentVolumeParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePersistentVolume__no_checks.go b/pods/imports/k8s/KubePersistentVolume__no_checks.go new file mode 100644 index 000000000..153ef9fd1 --- /dev/null +++ b/pods/imports/k8s/KubePersistentVolume__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePersistentVolume_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePersistentVolume_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePersistentVolume_ManifestParameters(props *KubePersistentVolumeProps) error { + return nil +} + +func validateKubePersistentVolume_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePersistentVolumeParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePod.go b/pods/imports/k8s/KubePod.go new file mode 100644 index 000000000..b630eae9f --- /dev/null +++ b/pods/imports/k8s/KubePod.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Pod is a collection of containers that can run on a host. +// +// This resource is created by clients and scheduled onto hosts. +type KubePod interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePod +type jsiiProxy_KubePod struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePod) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePod) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePod) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePod) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePod) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePod) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePod) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Pod" API object. +func NewKubePod(scope constructs.Construct, id *string, props *KubePodProps) KubePod { + _init_.Initialize() + + if err := validateNewKubePodParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePod{} + + _jsii_.Create( + "k8s.KubePod", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Pod" API object. +func NewKubePod_Override(k KubePod, scope constructs.Construct, id *string, props *KubePodProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePod", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePod_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePod_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePod", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePod_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePod_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePod", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Pod". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePod_Manifest(props *KubePodProps) interface{} { + _init_.Initialize() + + if err := validateKubePod_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePod", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePod_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePod_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePod", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePod_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePod", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePod) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePod) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePod) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePod) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePodDisruptionBudget.go b/pods/imports/k8s/KubePodDisruptionBudget.go new file mode 100644 index 000000000..d05417814 --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudget.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods. +type KubePodDisruptionBudget interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePodDisruptionBudget +type jsiiProxy_KubePodDisruptionBudget struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePodDisruptionBudget) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudget) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudget) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudget) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudget) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudget) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudget) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.policy.v1.PodDisruptionBudget" API object. +func NewKubePodDisruptionBudget(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) KubePodDisruptionBudget { + _init_.Initialize() + + if err := validateNewKubePodDisruptionBudgetParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePodDisruptionBudget{} + + _jsii_.Create( + "k8s.KubePodDisruptionBudget", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.policy.v1.PodDisruptionBudget" API object. +func NewKubePodDisruptionBudget_Override(k KubePodDisruptionBudget, scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePodDisruptionBudget", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePodDisruptionBudget_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodDisruptionBudget_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudget", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePodDisruptionBudget_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodDisruptionBudget_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudget", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.policy.v1.PodDisruptionBudget". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePodDisruptionBudget_Manifest(props *KubePodDisruptionBudgetProps) interface{} { + _init_.Initialize() + + if err := validateKubePodDisruptionBudget_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudget", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePodDisruptionBudget_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePodDisruptionBudget_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudget", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePodDisruptionBudget_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePodDisruptionBudget", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePodDisruptionBudget) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePodDisruptionBudget) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePodDisruptionBudget) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePodDisruptionBudget) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList.go b/pods/imports/k8s/KubePodDisruptionBudgetList.go new file mode 100644 index 000000000..f153fbc4b --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudgetList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type KubePodDisruptionBudgetList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePodDisruptionBudgetList +type jsiiProxy_KubePodDisruptionBudgetList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodDisruptionBudgetList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.policy.v1.PodDisruptionBudgetList" API object. +func NewKubePodDisruptionBudgetList(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) KubePodDisruptionBudgetList { + _init_.Initialize() + + if err := validateNewKubePodDisruptionBudgetListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePodDisruptionBudgetList{} + + _jsii_.Create( + "k8s.KubePodDisruptionBudgetList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.policy.v1.PodDisruptionBudgetList" API object. +func NewKubePodDisruptionBudgetList_Override(k KubePodDisruptionBudgetList, scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePodDisruptionBudgetList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePodDisruptionBudgetList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodDisruptionBudgetList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudgetList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePodDisruptionBudgetList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodDisruptionBudgetList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudgetList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.policy.v1.PodDisruptionBudgetList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePodDisruptionBudgetList_Manifest(props *KubePodDisruptionBudgetListProps) interface{} { + _init_.Initialize() + + if err := validateKubePodDisruptionBudgetList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudgetList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePodDisruptionBudgetList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePodDisruptionBudgetList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePodDisruptionBudgetList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePodDisruptionBudgetList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePodDisruptionBudgetList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePodDisruptionBudgetList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePodDisruptionBudgetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePodDisruptionBudgetList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePodDisruptionBudgetList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePodDisruptionBudgetListProps.go b/pods/imports/k8s/KubePodDisruptionBudgetListProps.go new file mode 100644 index 000000000..75bf6d71c --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudgetListProps.go @@ -0,0 +1,11 @@ +package k8s + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type KubePodDisruptionBudgetListProps struct { + // Items is a list of PodDisruptionBudgets. + Items *[]*KubePodDisruptionBudgetProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go b/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go new file mode 100644 index 000000000..d8d49030c --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePodDisruptionBudgetList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePodDisruptionBudgetList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePodDisruptionBudgetList_ManifestParameters(props *KubePodDisruptionBudgetListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePodDisruptionBudgetList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePodDisruptionBudgetListParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go b/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go new file mode 100644 index 000000000..a32aa2db3 --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodDisruptionBudgetList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodDisruptionBudgetList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodDisruptionBudgetList_ManifestParameters(props *KubePodDisruptionBudgetListProps) error { + return nil +} + +func validateKubePodDisruptionBudgetList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodDisruptionBudgetListParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePodDisruptionBudgetProps.go b/pods/imports/k8s/KubePodDisruptionBudgetProps.go new file mode 100644 index 000000000..355dfa924 --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudgetProps.go @@ -0,0 +1,11 @@ +package k8s + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods. +type KubePodDisruptionBudgetProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the PodDisruptionBudget. + Spec *PodDisruptionBudgetSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubePodDisruptionBudget__checks.go b/pods/imports/k8s/KubePodDisruptionBudget__checks.go new file mode 100644 index 000000000..bb280631a --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudget__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePodDisruptionBudget_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePodDisruptionBudget_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePodDisruptionBudget_ManifestParameters(props *KubePodDisruptionBudgetProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePodDisruptionBudget_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePodDisruptionBudgetParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go b/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go new file mode 100644 index 000000000..2dd7dbdf8 --- /dev/null +++ b/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodDisruptionBudget_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodDisruptionBudget_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodDisruptionBudget_ManifestParameters(props *KubePodDisruptionBudgetProps) error { + return nil +} + +func validateKubePodDisruptionBudget_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodDisruptionBudgetParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePodList.go b/pods/imports/k8s/KubePodList.go new file mode 100644 index 000000000..acc93b191 --- /dev/null +++ b/pods/imports/k8s/KubePodList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PodList is a list of Pods. +type KubePodList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePodList +type jsiiProxy_KubePodList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePodList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PodList" API object. +func NewKubePodList(scope constructs.Construct, id *string, props *KubePodListProps) KubePodList { + _init_.Initialize() + + if err := validateNewKubePodListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePodList{} + + _jsii_.Create( + "k8s.KubePodList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PodList" API object. +func NewKubePodList_Override(k KubePodList, scope constructs.Construct, id *string, props *KubePodListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePodList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePodList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePodList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePodList_Manifest(props *KubePodListProps) interface{} { + _init_.Initialize() + + if err := validateKubePodList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePodList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePodList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePodList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePodList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePodList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePodList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePodList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePodList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePodList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePodList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePodListProps.go b/pods/imports/k8s/KubePodListProps.go new file mode 100644 index 000000000..00dc1bbf4 --- /dev/null +++ b/pods/imports/k8s/KubePodListProps.go @@ -0,0 +1,13 @@ +package k8s + +// PodList is a list of Pods. +type KubePodListProps struct { + // List of pods. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md + Items *[]*KubePodProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePodList__checks.go b/pods/imports/k8s/KubePodList__checks.go new file mode 100644 index 000000000..fceb14041 --- /dev/null +++ b/pods/imports/k8s/KubePodList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePodList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePodList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePodList_ManifestParameters(props *KubePodListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePodList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePodListParameters(scope constructs.Construct, id *string, props *KubePodListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePodList__no_checks.go b/pods/imports/k8s/KubePodList__no_checks.go new file mode 100644 index 000000000..1d2ec331b --- /dev/null +++ b/pods/imports/k8s/KubePodList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodList_ManifestParameters(props *KubePodListProps) error { + return nil +} + +func validateKubePodList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodListParameters(scope constructs.Construct, id *string, props *KubePodListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePodProps.go b/pods/imports/k8s/KubePodProps.go new file mode 100644 index 000000000..c98e533c9 --- /dev/null +++ b/pods/imports/k8s/KubePodProps.go @@ -0,0 +1,15 @@ +package k8s + +// Pod is a collection of containers that can run on a host. +// +// This resource is created by clients and scheduled onto hosts. +type KubePodProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the pod. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *PodSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubePodTemplate.go b/pods/imports/k8s/KubePodTemplate.go new file mode 100644 index 000000000..5d42ac74e --- /dev/null +++ b/pods/imports/k8s/KubePodTemplate.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PodTemplate describes a template for creating copies of a predefined pod. +type KubePodTemplate interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePodTemplate +type jsiiProxy_KubePodTemplate struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePodTemplate) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplate) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplate) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplate) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplate) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplate) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplate) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PodTemplate" API object. +func NewKubePodTemplate(scope constructs.Construct, id *string, props *KubePodTemplateProps) KubePodTemplate { + _init_.Initialize() + + if err := validateNewKubePodTemplateParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePodTemplate{} + + _jsii_.Create( + "k8s.KubePodTemplate", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PodTemplate" API object. +func NewKubePodTemplate_Override(k KubePodTemplate, scope constructs.Construct, id *string, props *KubePodTemplateProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePodTemplate", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePodTemplate_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodTemplate_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodTemplate", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePodTemplate_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodTemplate_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodTemplate", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodTemplate". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePodTemplate_Manifest(props *KubePodTemplateProps) interface{} { + _init_.Initialize() + + if err := validateKubePodTemplate_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePodTemplate", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePodTemplate_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePodTemplate_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePodTemplate", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePodTemplate_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePodTemplate", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePodTemplate) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePodTemplate) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePodTemplate) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePodTemplate) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePodTemplateList.go b/pods/imports/k8s/KubePodTemplateList.go new file mode 100644 index 000000000..a857643cb --- /dev/null +++ b/pods/imports/k8s/KubePodTemplateList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PodTemplateList is a list of PodTemplates. +type KubePodTemplateList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePodTemplateList +type jsiiProxy_KubePodTemplateList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePodTemplateList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplateList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplateList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplateList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplateList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplateList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePodTemplateList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.PodTemplateList" API object. +func NewKubePodTemplateList(scope constructs.Construct, id *string, props *KubePodTemplateListProps) KubePodTemplateList { + _init_.Initialize() + + if err := validateNewKubePodTemplateListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePodTemplateList{} + + _jsii_.Create( + "k8s.KubePodTemplateList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.PodTemplateList" API object. +func NewKubePodTemplateList_Override(k KubePodTemplateList, scope constructs.Construct, id *string, props *KubePodTemplateListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePodTemplateList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePodTemplateList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodTemplateList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodTemplateList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePodTemplateList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePodTemplateList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePodTemplateList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodTemplateList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePodTemplateList_Manifest(props *KubePodTemplateListProps) interface{} { + _init_.Initialize() + + if err := validateKubePodTemplateList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePodTemplateList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePodTemplateList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePodTemplateList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePodTemplateList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePodTemplateList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePodTemplateList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePodTemplateList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePodTemplateList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePodTemplateList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePodTemplateList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePodTemplateListProps.go b/pods/imports/k8s/KubePodTemplateListProps.go new file mode 100644 index 000000000..2ec5c8e5c --- /dev/null +++ b/pods/imports/k8s/KubePodTemplateListProps.go @@ -0,0 +1,11 @@ +package k8s + +// PodTemplateList is a list of PodTemplates. +type KubePodTemplateListProps struct { + // List of pod templates. + Items *[]*KubePodTemplateProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePodTemplateList__checks.go b/pods/imports/k8s/KubePodTemplateList__checks.go new file mode 100644 index 000000000..bc7da1503 --- /dev/null +++ b/pods/imports/k8s/KubePodTemplateList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePodTemplateList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePodTemplateList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePodTemplateList_ManifestParameters(props *KubePodTemplateListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePodTemplateList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePodTemplateListParameters(scope constructs.Construct, id *string, props *KubePodTemplateListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePodTemplateList__no_checks.go b/pods/imports/k8s/KubePodTemplateList__no_checks.go new file mode 100644 index 000000000..1347545c0 --- /dev/null +++ b/pods/imports/k8s/KubePodTemplateList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodTemplateList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodTemplateList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodTemplateList_ManifestParameters(props *KubePodTemplateListProps) error { + return nil +} + +func validateKubePodTemplateList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodTemplateListParameters(scope constructs.Construct, id *string, props *KubePodTemplateListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePodTemplateProps.go b/pods/imports/k8s/KubePodTemplateProps.go new file mode 100644 index 000000000..e85e4355f --- /dev/null +++ b/pods/imports/k8s/KubePodTemplateProps.go @@ -0,0 +1,13 @@ +package k8s + +// PodTemplate describes a template for creating copies of a predefined pod. +type KubePodTemplateProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Template defines the pods that will be created from this pod template. + // + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` +} diff --git a/pods/imports/k8s/KubePodTemplate__checks.go b/pods/imports/k8s/KubePodTemplate__checks.go new file mode 100644 index 000000000..42f77b93e --- /dev/null +++ b/pods/imports/k8s/KubePodTemplate__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePodTemplate_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePodTemplate_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePodTemplate_ManifestParameters(props *KubePodTemplateProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePodTemplate_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePodTemplateParameters(scope constructs.Construct, id *string, props *KubePodTemplateProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePodTemplate__no_checks.go b/pods/imports/k8s/KubePodTemplate__no_checks.go new file mode 100644 index 000000000..72ff7156a --- /dev/null +++ b/pods/imports/k8s/KubePodTemplate__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodTemplate_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodTemplate_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodTemplate_ManifestParameters(props *KubePodTemplateProps) error { + return nil +} + +func validateKubePodTemplate_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodTemplateParameters(scope constructs.Construct, id *string, props *KubePodTemplateProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePod__checks.go b/pods/imports/k8s/KubePod__checks.go new file mode 100644 index 000000000..e70337403 --- /dev/null +++ b/pods/imports/k8s/KubePod__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePod_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePod_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePod_ManifestParameters(props *KubePodProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePod_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePodParameters(scope constructs.Construct, id *string, props *KubePodProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePod__no_checks.go b/pods/imports/k8s/KubePod__no_checks.go new file mode 100644 index 000000000..37224b400 --- /dev/null +++ b/pods/imports/k8s/KubePod__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePod_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePod_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePod_ManifestParameters(props *KubePodProps) error { + return nil +} + +func validateKubePod_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodParameters(scope constructs.Construct, id *string, props *KubePodProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePriorityClass.go b/pods/imports/k8s/KubePriorityClass.go new file mode 100644 index 000000000..dfac3e62f --- /dev/null +++ b/pods/imports/k8s/KubePriorityClass.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PriorityClass defines mapping from a priority class name to the priority integer value. +// +// The value can be any valid integer. +type KubePriorityClass interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePriorityClass +type jsiiProxy_KubePriorityClass struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePriorityClass) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClass) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClass) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClass) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClass) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClass) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClass) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.scheduling.v1.PriorityClass" API object. +func NewKubePriorityClass(scope constructs.Construct, id *string, props *KubePriorityClassProps) KubePriorityClass { + _init_.Initialize() + + if err := validateNewKubePriorityClassParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePriorityClass{} + + _jsii_.Create( + "k8s.KubePriorityClass", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.scheduling.v1.PriorityClass" API object. +func NewKubePriorityClass_Override(k KubePriorityClass, scope constructs.Construct, id *string, props *KubePriorityClassProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePriorityClass", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePriorityClass_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityClass_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityClass", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePriorityClass_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityClass_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityClass", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.scheduling.v1.PriorityClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePriorityClass_Manifest(props *KubePriorityClassProps) interface{} { + _init_.Initialize() + + if err := validateKubePriorityClass_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePriorityClass", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePriorityClass_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePriorityClass_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePriorityClass", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePriorityClass_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePriorityClass", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePriorityClass) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePriorityClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePriorityClass) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePriorityClass) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePriorityClassList.go b/pods/imports/k8s/KubePriorityClassList.go new file mode 100644 index 000000000..25aaa9a47 --- /dev/null +++ b/pods/imports/k8s/KubePriorityClassList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PriorityClassList is a collection of priority classes. +type KubePriorityClassList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePriorityClassList +type jsiiProxy_KubePriorityClassList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePriorityClassList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClassList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClassList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClassList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClassList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityClassList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.scheduling.v1.PriorityClassList" API object. +func NewKubePriorityClassList(scope constructs.Construct, id *string, props *KubePriorityClassListProps) KubePriorityClassList { + _init_.Initialize() + + if err := validateNewKubePriorityClassListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePriorityClassList{} + + _jsii_.Create( + "k8s.KubePriorityClassList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.scheduling.v1.PriorityClassList" API object. +func NewKubePriorityClassList_Override(k KubePriorityClassList, scope constructs.Construct, id *string, props *KubePriorityClassListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePriorityClassList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePriorityClassList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityClassList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityClassList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePriorityClassList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityClassList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityClassList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.scheduling.v1.PriorityClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePriorityClassList_Manifest(props *KubePriorityClassListProps) interface{} { + _init_.Initialize() + + if err := validateKubePriorityClassList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePriorityClassList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePriorityClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePriorityClassList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePriorityClassList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePriorityClassList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePriorityClassList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePriorityClassList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePriorityClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePriorityClassList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePriorityClassList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePriorityClassListProps.go b/pods/imports/k8s/KubePriorityClassListProps.go new file mode 100644 index 000000000..736b738ee --- /dev/null +++ b/pods/imports/k8s/KubePriorityClassListProps.go @@ -0,0 +1,9 @@ +package k8s + +// PriorityClassList is a collection of priority classes. +type KubePriorityClassListProps struct { + // items is the list of PriorityClasses. + Items *[]*KubePriorityClassProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePriorityClassList__checks.go b/pods/imports/k8s/KubePriorityClassList__checks.go new file mode 100644 index 000000000..d8a15bddf --- /dev/null +++ b/pods/imports/k8s/KubePriorityClassList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePriorityClassList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityClassList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityClassList_ManifestParameters(props *KubePriorityClassListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePriorityClassList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePriorityClassListParameters(scope constructs.Construct, id *string, props *KubePriorityClassListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePriorityClassList__no_checks.go b/pods/imports/k8s/KubePriorityClassList__no_checks.go new file mode 100644 index 000000000..b2fdb5469 --- /dev/null +++ b/pods/imports/k8s/KubePriorityClassList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePriorityClassList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePriorityClassList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePriorityClassList_ManifestParameters(props *KubePriorityClassListProps) error { + return nil +} + +func validateKubePriorityClassList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePriorityClassListParameters(scope constructs.Construct, id *string, props *KubePriorityClassListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePriorityClassProps.go b/pods/imports/k8s/KubePriorityClassProps.go new file mode 100644 index 000000000..cb1d90db4 --- /dev/null +++ b/pods/imports/k8s/KubePriorityClassProps.go @@ -0,0 +1,27 @@ +package k8s + +// PriorityClass defines mapping from a priority class name to the priority integer value. +// +// The value can be any valid integer. +type KubePriorityClassProps struct { + // value represents the integer value of this priority class. + // + // This is the actual priority that pods receive when they have the name of this class in their pod spec. + Value *float64 `field:"required" json:"value" yaml:"value"` + // description is an arbitrary string that usually provides guidelines on when this priority class should be used. + Description *string `field:"optional" json:"description" yaml:"description"` + // globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. + // + // Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority. + GlobalDefault *bool `field:"optional" json:"globalDefault" yaml:"globalDefault"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // preemptionPolicy is the Policy for preempting pods with lower priority. + // + // One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. + // Default: PreemptLowerPriority if unset. + // + PreemptionPolicy *string `field:"optional" json:"preemptionPolicy" yaml:"preemptionPolicy"` +} diff --git a/pods/imports/k8s/KubePriorityClass__checks.go b/pods/imports/k8s/KubePriorityClass__checks.go new file mode 100644 index 000000000..5fa8c6d56 --- /dev/null +++ b/pods/imports/k8s/KubePriorityClass__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePriorityClass_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityClass_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityClass_ManifestParameters(props *KubePriorityClassProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePriorityClass_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePriorityClassParameters(scope constructs.Construct, id *string, props *KubePriorityClassProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePriorityClass__no_checks.go b/pods/imports/k8s/KubePriorityClass__no_checks.go new file mode 100644 index 000000000..d2fd488ee --- /dev/null +++ b/pods/imports/k8s/KubePriorityClass__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePriorityClass_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePriorityClass_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePriorityClass_ManifestParameters(props *KubePriorityClassProps) error { + return nil +} + +func validateKubePriorityClass_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePriorityClassParameters(scope constructs.Construct, id *string, props *KubePriorityClassProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration.go b/pods/imports/k8s/KubePriorityLevelConfiguration.go new file mode 100644 index 000000000..680dd16dd --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfiguration.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PriorityLevelConfiguration represents the configuration of a priority level. +type KubePriorityLevelConfiguration interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePriorityLevelConfiguration +type jsiiProxy_KubePriorityLevelConfiguration struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfiguration) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" API object. +func NewKubePriorityLevelConfiguration(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) KubePriorityLevelConfiguration { + _init_.Initialize() + + if err := validateNewKubePriorityLevelConfigurationParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePriorityLevelConfiguration{} + + _jsii_.Create( + "k8s.KubePriorityLevelConfiguration", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" API object. +func NewKubePriorityLevelConfiguration_Override(k KubePriorityLevelConfiguration, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePriorityLevelConfiguration", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePriorityLevelConfiguration_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityLevelConfiguration_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfiguration", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePriorityLevelConfiguration_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityLevelConfiguration_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfiguration", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePriorityLevelConfiguration_Manifest(props *KubePriorityLevelConfigurationProps) interface{} { + _init_.Initialize() + + if err := validateKubePriorityLevelConfiguration_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfiguration", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePriorityLevelConfiguration_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePriorityLevelConfiguration_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfiguration", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePriorityLevelConfiguration_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePriorityLevelConfiguration", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePriorityLevelConfiguration) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePriorityLevelConfiguration) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePriorityLevelConfiguration) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePriorityLevelConfiguration) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList.go b/pods/imports/k8s/KubePriorityLevelConfigurationList.go new file mode 100644 index 000000000..d59dc1db8 --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. +type KubePriorityLevelConfigurationList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubePriorityLevelConfigurationList +type jsiiProxy_KubePriorityLevelConfigurationList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubePriorityLevelConfigurationList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" API object. +func NewKubePriorityLevelConfigurationList(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) KubePriorityLevelConfigurationList { + _init_.Initialize() + + if err := validateNewKubePriorityLevelConfigurationListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubePriorityLevelConfigurationList{} + + _jsii_.Create( + "k8s.KubePriorityLevelConfigurationList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" API object. +func NewKubePriorityLevelConfigurationList_Override(k KubePriorityLevelConfigurationList, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubePriorityLevelConfigurationList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubePriorityLevelConfigurationList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityLevelConfigurationList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfigurationList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubePriorityLevelConfigurationList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubePriorityLevelConfigurationList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfigurationList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubePriorityLevelConfigurationList_Manifest(props *KubePriorityLevelConfigurationListProps) interface{} { + _init_.Initialize() + + if err := validateKubePriorityLevelConfigurationList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfigurationList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubePriorityLevelConfigurationList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubePriorityLevelConfigurationList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubePriorityLevelConfigurationList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubePriorityLevelConfigurationList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubePriorityLevelConfigurationList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubePriorityLevelConfigurationList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubePriorityLevelConfigurationList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubePriorityLevelConfigurationList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubePriorityLevelConfigurationList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go b/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go new file mode 100644 index 000000000..76b19185a --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go @@ -0,0 +1,11 @@ +package k8s + +// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. +type KubePriorityLevelConfigurationListProps struct { + // `items` is a list of request-priorities. + Items *[]*KubePriorityLevelConfigurationProps `field:"required" json:"items" yaml:"items"` + // `metadata` is the standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go new file mode 100644 index 000000000..2f9c8c90f --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePriorityLevelConfigurationList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityLevelConfigurationList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityLevelConfigurationList_ManifestParameters(props *KubePriorityLevelConfigurationListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePriorityLevelConfigurationList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePriorityLevelConfigurationListParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go new file mode 100644 index 000000000..89aac0087 --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePriorityLevelConfigurationList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePriorityLevelConfigurationList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePriorityLevelConfigurationList_ManifestParameters(props *KubePriorityLevelConfigurationListProps) error { + return nil +} + +func validateKubePriorityLevelConfigurationList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePriorityLevelConfigurationListParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationProps.go b/pods/imports/k8s/KubePriorityLevelConfigurationProps.go new file mode 100644 index 000000000..ebbb83bcf --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationProps.go @@ -0,0 +1,13 @@ +package k8s + +// PriorityLevelConfiguration represents the configuration of a priority level. +type KubePriorityLevelConfigurationProps struct { + // `metadata` is the standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // `spec` is the specification of the desired behavior of a "request-priority". + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *PriorityLevelConfigurationSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go b/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go new file mode 100644 index 000000000..e32b91c04 --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubePriorityLevelConfiguration_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityLevelConfiguration_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubePriorityLevelConfiguration_ManifestParameters(props *KubePriorityLevelConfigurationProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubePriorityLevelConfiguration_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubePriorityLevelConfigurationParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go new file mode 100644 index 000000000..fbdf3a645 --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePriorityLevelConfiguration_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePriorityLevelConfiguration_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePriorityLevelConfiguration_ManifestParameters(props *KubePriorityLevelConfigurationProps) error { + return nil +} + +func validateKubePriorityLevelConfiguration_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePriorityLevelConfigurationParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeReplicaSet.go b/pods/imports/k8s/KubeReplicaSet.go new file mode 100644 index 000000000..4e5b22d80 --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSet.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ReplicaSet ensures that a specified number of pod replicas are running at any given time. +type KubeReplicaSet interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeReplicaSet +type jsiiProxy_KubeReplicaSet struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeReplicaSet) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSet) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSet) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSet) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSet) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSet) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSet) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.ReplicaSet" API object. +func NewKubeReplicaSet(scope constructs.Construct, id *string, props *KubeReplicaSetProps) KubeReplicaSet { + _init_.Initialize() + + if err := validateNewKubeReplicaSetParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeReplicaSet{} + + _jsii_.Create( + "k8s.KubeReplicaSet", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.ReplicaSet" API object. +func NewKubeReplicaSet_Override(k KubeReplicaSet, scope constructs.Construct, id *string, props *KubeReplicaSetProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeReplicaSet", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeReplicaSet_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicaSet_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSet", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeReplicaSet_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicaSet_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSet", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ReplicaSet". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeReplicaSet_Manifest(props *KubeReplicaSetProps) interface{} { + _init_.Initialize() + + if err := validateKubeReplicaSet_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSet", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeReplicaSet_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeReplicaSet_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSet", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeReplicaSet_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeReplicaSet", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeReplicaSet) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeReplicaSet) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeReplicaSet) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeReplicaSet) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeReplicaSetList.go b/pods/imports/k8s/KubeReplicaSetList.go new file mode 100644 index 000000000..6fcac2a44 --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSetList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ReplicaSetList is a collection of ReplicaSets. +type KubeReplicaSetList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeReplicaSetList +type jsiiProxy_KubeReplicaSetList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeReplicaSetList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSetList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSetList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSetList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSetList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSetList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicaSetList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.ReplicaSetList" API object. +func NewKubeReplicaSetList(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) KubeReplicaSetList { + _init_.Initialize() + + if err := validateNewKubeReplicaSetListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeReplicaSetList{} + + _jsii_.Create( + "k8s.KubeReplicaSetList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.ReplicaSetList" API object. +func NewKubeReplicaSetList_Override(k KubeReplicaSetList, scope constructs.Construct, id *string, props *KubeReplicaSetListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeReplicaSetList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeReplicaSetList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicaSetList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSetList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeReplicaSetList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicaSetList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSetList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ReplicaSetList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeReplicaSetList_Manifest(props *KubeReplicaSetListProps) interface{} { + _init_.Initialize() + + if err := validateKubeReplicaSetList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSetList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeReplicaSetList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeReplicaSetList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeReplicaSetList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeReplicaSetList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeReplicaSetList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeReplicaSetList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeReplicaSetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeReplicaSetList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeReplicaSetList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeReplicaSetListProps.go b/pods/imports/k8s/KubeReplicaSetListProps.go new file mode 100644 index 000000000..7a9375925 --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSetListProps.go @@ -0,0 +1,13 @@ +package k8s + +// ReplicaSetList is a collection of ReplicaSets. +type KubeReplicaSetListProps struct { + // List of ReplicaSets. + // + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + Items *[]*KubeReplicaSetProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeReplicaSetList__checks.go b/pods/imports/k8s/KubeReplicaSetList__checks.go new file mode 100644 index 000000000..bd0ea87fd --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSetList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeReplicaSetList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicaSetList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicaSetList_ManifestParameters(props *KubeReplicaSetListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeReplicaSetList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeReplicaSetListParameters(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeReplicaSetList__no_checks.go b/pods/imports/k8s/KubeReplicaSetList__no_checks.go new file mode 100644 index 000000000..11ec2ef28 --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSetList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeReplicaSetList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeReplicaSetList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeReplicaSetList_ManifestParameters(props *KubeReplicaSetListProps) error { + return nil +} + +func validateKubeReplicaSetList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeReplicaSetListParameters(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeReplicaSetProps.go b/pods/imports/k8s/KubeReplicaSetProps.go new file mode 100644 index 000000000..f6964773e --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSetProps.go @@ -0,0 +1,13 @@ +package k8s + +// ReplicaSet ensures that a specified number of pod replicas are running at any given time. +type KubeReplicaSetProps struct { + // If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. + // + // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the specification of the desired behavior of the ReplicaSet. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *ReplicaSetSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeReplicaSet__checks.go b/pods/imports/k8s/KubeReplicaSet__checks.go new file mode 100644 index 000000000..7647dcd2e --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSet__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeReplicaSet_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicaSet_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicaSet_ManifestParameters(props *KubeReplicaSetProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeReplicaSet_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeReplicaSetParameters(scope constructs.Construct, id *string, props *KubeReplicaSetProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeReplicaSet__no_checks.go b/pods/imports/k8s/KubeReplicaSet__no_checks.go new file mode 100644 index 000000000..1e3221556 --- /dev/null +++ b/pods/imports/k8s/KubeReplicaSet__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeReplicaSet_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeReplicaSet_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeReplicaSet_ManifestParameters(props *KubeReplicaSetProps) error { + return nil +} + +func validateKubeReplicaSet_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeReplicaSetParameters(scope constructs.Construct, id *string, props *KubeReplicaSetProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeReplicationController.go b/pods/imports/k8s/KubeReplicationController.go new file mode 100644 index 000000000..3d89c696b --- /dev/null +++ b/pods/imports/k8s/KubeReplicationController.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ReplicationController represents the configuration of a replication controller. +type KubeReplicationController interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeReplicationController +type jsiiProxy_KubeReplicationController struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeReplicationController) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationController) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationController) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationController) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationController) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationController) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationController) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ReplicationController" API object. +func NewKubeReplicationController(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) KubeReplicationController { + _init_.Initialize() + + if err := validateNewKubeReplicationControllerParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeReplicationController{} + + _jsii_.Create( + "k8s.KubeReplicationController", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ReplicationController" API object. +func NewKubeReplicationController_Override(k KubeReplicationController, scope constructs.Construct, id *string, props *KubeReplicationControllerProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeReplicationController", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeReplicationController_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicationController_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicationController", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeReplicationController_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicationController_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicationController", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ReplicationController". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeReplicationController_Manifest(props *KubeReplicationControllerProps) interface{} { + _init_.Initialize() + + if err := validateKubeReplicationController_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeReplicationController", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeReplicationController_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeReplicationController_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeReplicationController", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeReplicationController_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeReplicationController", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeReplicationController) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeReplicationController) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeReplicationController) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeReplicationController) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeReplicationControllerList.go b/pods/imports/k8s/KubeReplicationControllerList.go new file mode 100644 index 000000000..fddf9121c --- /dev/null +++ b/pods/imports/k8s/KubeReplicationControllerList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ReplicationControllerList is a collection of replication controllers. +type KubeReplicationControllerList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeReplicationControllerList +type jsiiProxy_KubeReplicationControllerList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeReplicationControllerList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationControllerList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationControllerList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationControllerList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationControllerList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationControllerList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeReplicationControllerList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ReplicationControllerList" API object. +func NewKubeReplicationControllerList(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) KubeReplicationControllerList { + _init_.Initialize() + + if err := validateNewKubeReplicationControllerListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeReplicationControllerList{} + + _jsii_.Create( + "k8s.KubeReplicationControllerList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ReplicationControllerList" API object. +func NewKubeReplicationControllerList_Override(k KubeReplicationControllerList, scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeReplicationControllerList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeReplicationControllerList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicationControllerList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicationControllerList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeReplicationControllerList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeReplicationControllerList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeReplicationControllerList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ReplicationControllerList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeReplicationControllerList_Manifest(props *KubeReplicationControllerListProps) interface{} { + _init_.Initialize() + + if err := validateKubeReplicationControllerList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeReplicationControllerList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeReplicationControllerList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeReplicationControllerList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeReplicationControllerList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeReplicationControllerList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeReplicationControllerList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeReplicationControllerList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeReplicationControllerList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeReplicationControllerList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeReplicationControllerList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeReplicationControllerListProps.go b/pods/imports/k8s/KubeReplicationControllerListProps.go new file mode 100644 index 000000000..20389f1db --- /dev/null +++ b/pods/imports/k8s/KubeReplicationControllerListProps.go @@ -0,0 +1,13 @@ +package k8s + +// ReplicationControllerList is a collection of replication controllers. +type KubeReplicationControllerListProps struct { + // List of replication controllers. + // + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + Items *[]*KubeReplicationControllerProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeReplicationControllerList__checks.go b/pods/imports/k8s/KubeReplicationControllerList__checks.go new file mode 100644 index 000000000..866dddd8f --- /dev/null +++ b/pods/imports/k8s/KubeReplicationControllerList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeReplicationControllerList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicationControllerList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicationControllerList_ManifestParameters(props *KubeReplicationControllerListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeReplicationControllerList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeReplicationControllerListParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeReplicationControllerList__no_checks.go b/pods/imports/k8s/KubeReplicationControllerList__no_checks.go new file mode 100644 index 000000000..29a832a0e --- /dev/null +++ b/pods/imports/k8s/KubeReplicationControllerList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeReplicationControllerList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeReplicationControllerList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeReplicationControllerList_ManifestParameters(props *KubeReplicationControllerListProps) error { + return nil +} + +func validateKubeReplicationControllerList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeReplicationControllerListParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeReplicationControllerProps.go b/pods/imports/k8s/KubeReplicationControllerProps.go new file mode 100644 index 000000000..fbfb72b98 --- /dev/null +++ b/pods/imports/k8s/KubeReplicationControllerProps.go @@ -0,0 +1,13 @@ +package k8s + +// ReplicationController represents the configuration of a replication controller. +type KubeReplicationControllerProps struct { + // If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. + // + // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the specification of the desired behavior of the replication controller. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *ReplicationControllerSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeReplicationController__checks.go b/pods/imports/k8s/KubeReplicationController__checks.go new file mode 100644 index 000000000..e835e37c4 --- /dev/null +++ b/pods/imports/k8s/KubeReplicationController__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeReplicationController_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicationController_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeReplicationController_ManifestParameters(props *KubeReplicationControllerProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeReplicationController_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeReplicationControllerParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeReplicationController__no_checks.go b/pods/imports/k8s/KubeReplicationController__no_checks.go new file mode 100644 index 000000000..3ada28106 --- /dev/null +++ b/pods/imports/k8s/KubeReplicationController__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeReplicationController_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeReplicationController_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeReplicationController_ManifestParameters(props *KubeReplicationControllerProps) error { + return nil +} + +func validateKubeReplicationController_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeReplicationControllerParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go new file mode 100644 index 000000000..9687bf449 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaimList is a collection of claims. +type KubeResourceClaimListV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimListV1Alpha3 +type jsiiProxy_KubeResourceClaimListV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimList" API object. +func NewKubeResourceClaimListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) KubeResourceClaimListV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimListV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimListV1Alpha3{} + + _jsii_.Create( + "k8s.KubeResourceClaimListV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimList" API object. +func NewKubeResourceClaimListV1Alpha3_Override(k KubeResourceClaimListV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimListV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimListV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimListV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaimList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimListV1Alpha3_Manifest(props *KubeResourceClaimListV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimListV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimListV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go new file mode 100644 index 000000000..b02bed03b --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceClaimList is a collection of claims. +type KubeResourceClaimListV1Alpha3Props struct { + // Items is the list of resource claims. + Items *[]*KubeResourceClaimV1Alpha3Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go new file mode 100644 index 000000000..48e4b7ad1 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimListV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimListV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimListV1Alpha3_ManifestParameters(props *KubeResourceClaimListV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimListV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go new file mode 100644 index 000000000..aa49927cf --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimListV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimListV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimListV1Alpha3_ManifestParameters(props *KubeResourceClaimListV1Alpha3Props) error { + return nil +} + +func validateKubeResourceClaimListV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1.go new file mode 100644 index 000000000..44d754d8f --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaimList is a collection of claims. +type KubeResourceClaimListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimListV1Beta1 +type jsiiProxy_KubeResourceClaimListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimList" API object. +func NewKubeResourceClaimListV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) KubeResourceClaimListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimListV1Beta1{} + + _jsii_.Create( + "k8s.KubeResourceClaimListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimList" API object. +func NewKubeResourceClaimListV1Beta1_Override(k KubeResourceClaimListV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaimList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimListV1Beta1_Manifest(props *KubeResourceClaimListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go new file mode 100644 index 000000000..e8b40208f --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceClaimList is a collection of claims. +type KubeResourceClaimListV1Beta1Props struct { + // Items is the list of resource claims. + Items *[]*KubeResourceClaimV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go new file mode 100644 index 000000000..078e22eb7 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimListV1Beta1_ManifestParameters(props *KubeResourceClaimListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go new file mode 100644 index 000000000..65a1ae019 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimListV1Beta1_ManifestParameters(props *KubeResourceClaimListV1Beta1Props) error { + return nil +} + +func validateKubeResourceClaimListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go new file mode 100644 index 000000000..56783a003 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaimTemplateList is a collection of claim templates. +type KubeResourceClaimTemplateListV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimTemplateListV1Alpha3 +type jsiiProxy_KubeResourceClaimTemplateListV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList" API object. +func NewKubeResourceClaimTemplateListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) KubeResourceClaimTemplateListV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimTemplateListV1Alpha3{} + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList" API object. +func NewKubeResourceClaimTemplateListV1Alpha3_Override(k KubeResourceClaimTemplateListV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimTemplateListV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimTemplateListV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimTemplateListV1Alpha3_Manifest(props *KubeResourceClaimTemplateListV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimTemplateListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimTemplateListV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go new file mode 100644 index 000000000..57eacb054 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceClaimTemplateList is a collection of claim templates. +type KubeResourceClaimTemplateListV1Alpha3Props struct { + // Items is the list of resource claim templates. + Items *[]*KubeResourceClaimTemplateV1Alpha3Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go new file mode 100644 index 000000000..61b7a19c6 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimTemplateListV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateListV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateListV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateListV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go new file mode 100644 index 000000000..f52c218ab --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimTemplateListV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateListV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateListV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateListV1Alpha3Props) error { + return nil +} + +func validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go new file mode 100644 index 000000000..232aa7cc5 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaimTemplateList is a collection of claim templates. +type KubeResourceClaimTemplateListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimTemplateListV1Beta1 +type jsiiProxy_KubeResourceClaimTemplateListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplateList" API object. +func NewKubeResourceClaimTemplateListV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) KubeResourceClaimTemplateListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimTemplateListV1Beta1{} + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplateList" API object. +func NewKubeResourceClaimTemplateListV1Beta1_Override(k KubeResourceClaimTemplateListV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimTemplateListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimTemplateListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaimTemplateList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimTemplateListV1Beta1_Manifest(props *KubeResourceClaimTemplateListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimTemplateListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimTemplateListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimTemplateListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go new file mode 100644 index 000000000..fa0303ee5 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceClaimTemplateList is a collection of claim templates. +type KubeResourceClaimTemplateListV1Beta1Props struct { + // Items is the list of resource claim templates. + Items *[]*KubeResourceClaimTemplateV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go new file mode 100644 index 000000000..3c434baab --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go new file mode 100644 index 000000000..c879edb89 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateListV1Beta1Props) error { + return nil +} + +func validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go new file mode 100644 index 000000000..3c2cec4a3 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaimTemplate is used to produce ResourceClaim objects. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimTemplateV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimTemplateV1Alpha3 +type jsiiProxy_KubeResourceClaimTemplateV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate" API object. +func NewKubeResourceClaimTemplateV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) KubeResourceClaimTemplateV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimTemplateV1Alpha3{} + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate" API object. +func NewKubeResourceClaimTemplateV1Alpha3_Override(k KubeResourceClaimTemplateV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimTemplateV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimTemplateV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimTemplateV1Alpha3_Manifest(props *KubeResourceClaimTemplateV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimTemplateV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimTemplateV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimTemplateV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go new file mode 100644 index 000000000..b4319ae14 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go @@ -0,0 +1,13 @@ +package k8s + +// ResourceClaimTemplate is used to produce ResourceClaim objects. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimTemplateV1Alpha3Props struct { + // Describes the ResourceClaim that is to be generated. + // + // This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore. + Spec *ResourceClaimTemplateSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go new file mode 100644 index 000000000..6d4a9ac4d --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimTemplateV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go new file mode 100644 index 000000000..52002d24f --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimTemplateV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateV1Alpha3Props) error { + return nil +} + +func validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go new file mode 100644 index 000000000..b5c46a9e2 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaimTemplate is used to produce ResourceClaim objects. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimTemplateV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimTemplateV1Beta1 +type jsiiProxy_KubeResourceClaimTemplateV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplate" API object. +func NewKubeResourceClaimTemplateV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) KubeResourceClaimTemplateV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimTemplateV1Beta1{} + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplate" API object. +func NewKubeResourceClaimTemplateV1Beta1_Override(k KubeResourceClaimTemplateV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimTemplateV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimTemplateV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimTemplateV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaimTemplate". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimTemplateV1Beta1_Manifest(props *KubeResourceClaimTemplateV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimTemplateV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimTemplateV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimTemplateV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimTemplateV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimTemplateV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go new file mode 100644 index 000000000..aa83da803 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go @@ -0,0 +1,13 @@ +package k8s + +// ResourceClaimTemplate is used to produce ResourceClaim objects. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimTemplateV1Beta1Props struct { + // Describes the ResourceClaim that is to be generated. + // + // This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore. + Spec *ResourceClaimTemplateSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go new file mode 100644 index 000000000..4f86674da --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimTemplateV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go new file mode 100644 index 000000000..174891e67 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateV1Beta1Props) error { + return nil +} + +func validateKubeResourceClaimTemplateV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go new file mode 100644 index 000000000..1dc08283f --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go @@ -0,0 +1,319 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. +// +// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimV1Alpha3 +type jsiiProxy_KubeResourceClaimV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaim" API object. +func NewKubeResourceClaimV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) KubeResourceClaimV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimV1Alpha3{} + + _jsii_.Create( + "k8s.KubeResourceClaimV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaim" API object. +func NewKubeResourceClaimV1Alpha3_Override(k KubeResourceClaimV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaim". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimV1Alpha3_Manifest(props *KubeResourceClaimV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go new file mode 100644 index 000000000..270e88e75 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go @@ -0,0 +1,15 @@ +package k8s + +// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. +// +// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimV1Alpha3Props struct { + // Spec describes what is being requested and how to configure it. + // + // The spec is immutable. + Spec *ResourceClaimSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go new file mode 100644 index 000000000..9b4273f6c --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimV1Alpha3_ManifestParameters(props *KubeResourceClaimV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go new file mode 100644 index 000000000..30e465b7f --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimV1Alpha3_ManifestParameters(props *KubeResourceClaimV1Alpha3Props) error { + return nil +} + +func validateKubeResourceClaimV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1.go b/pods/imports/k8s/KubeResourceClaimV1Beta1.go new file mode 100644 index 000000000..c8f86c478 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Beta1.go @@ -0,0 +1,319 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. +// +// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceClaimV1Beta1 +type jsiiProxy_KubeResourceClaimV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceClaimV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaim" API object. +func NewKubeResourceClaimV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) KubeResourceClaimV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeResourceClaimV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceClaimV1Beta1{} + + _jsii_.Create( + "k8s.KubeResourceClaimV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceClaim" API object. +func NewKubeResourceClaimV1Beta1_Override(k KubeResourceClaimV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceClaimV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceClaimV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceClaimV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaim". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceClaimV1Beta1_Manifest(props *KubeResourceClaimV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceClaimV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceClaimV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceClaimV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceClaimV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceClaimV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceClaimV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceClaimV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceClaimV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimV1Beta1Props.go new file mode 100644 index 000000000..dbdf933fd --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Beta1Props.go @@ -0,0 +1,15 @@ +package k8s + +// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. +// +// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceClaimV1Beta1Props struct { + // Spec describes what is being requested and how to configure it. + // + // The spec is immutable. + Spec *ResourceClaimSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go b/pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go new file mode 100644 index 000000000..a774fd041 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceClaimV1Beta1_ManifestParameters(props *KubeResourceClaimV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceClaimV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceClaimV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go new file mode 100644 index 000000000..97177e6a8 --- /dev/null +++ b/pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceClaimV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceClaimV1Beta1_ManifestParameters(props *KubeResourceClaimV1Beta1Props) error { + return nil +} + +func validateKubeResourceClaimV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceClaimV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceQuota.go b/pods/imports/k8s/KubeResourceQuota.go new file mode 100644 index 000000000..5a830fd72 --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuota.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceQuota sets aggregate quota restrictions enforced per namespace. +type KubeResourceQuota interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceQuota +type jsiiProxy_KubeResourceQuota struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceQuota) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuota) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuota) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuota) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuota) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuota) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuota) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ResourceQuota" API object. +func NewKubeResourceQuota(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) KubeResourceQuota { + _init_.Initialize() + + if err := validateNewKubeResourceQuotaParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceQuota{} + + _jsii_.Create( + "k8s.KubeResourceQuota", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ResourceQuota" API object. +func NewKubeResourceQuota_Override(k KubeResourceQuota, scope constructs.Construct, id *string, props *KubeResourceQuotaProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceQuota", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceQuota_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceQuota_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuota", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceQuota_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceQuota_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuota", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ResourceQuota". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceQuota_Manifest(props *KubeResourceQuotaProps) interface{} { + _init_.Initialize() + + if err := validateKubeResourceQuota_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuota", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceQuota_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceQuota_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuota", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceQuota_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceQuota", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceQuota) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceQuota) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceQuota) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceQuota) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceQuotaList.go b/pods/imports/k8s/KubeResourceQuotaList.go new file mode 100644 index 000000000..6fcbea325 --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuotaList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceQuotaList is a list of ResourceQuota items. +type KubeResourceQuotaList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceQuotaList +type jsiiProxy_KubeResourceQuotaList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceQuotaList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuotaList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuotaList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuotaList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuotaList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuotaList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceQuotaList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ResourceQuotaList" API object. +func NewKubeResourceQuotaList(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) KubeResourceQuotaList { + _init_.Initialize() + + if err := validateNewKubeResourceQuotaListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceQuotaList{} + + _jsii_.Create( + "k8s.KubeResourceQuotaList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ResourceQuotaList" API object. +func NewKubeResourceQuotaList_Override(k KubeResourceQuotaList, scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceQuotaList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceQuotaList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceQuotaList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuotaList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceQuotaList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceQuotaList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuotaList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ResourceQuotaList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceQuotaList_Manifest(props *KubeResourceQuotaListProps) interface{} { + _init_.Initialize() + + if err := validateKubeResourceQuotaList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuotaList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceQuotaList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceQuotaList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceQuotaList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceQuotaList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceQuotaList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceQuotaList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceQuotaList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceQuotaList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceQuotaList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceQuotaListProps.go b/pods/imports/k8s/KubeResourceQuotaListProps.go new file mode 100644 index 000000000..ee17eeba4 --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuotaListProps.go @@ -0,0 +1,13 @@ +package k8s + +// ResourceQuotaList is a list of ResourceQuota items. +type KubeResourceQuotaListProps struct { + // Items is a list of ResourceQuota objects. + // + // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ + Items *[]*KubeResourceQuotaProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceQuotaList__checks.go b/pods/imports/k8s/KubeResourceQuotaList__checks.go new file mode 100644 index 000000000..38571bd7f --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuotaList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceQuotaList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceQuotaList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceQuotaList_ManifestParameters(props *KubeResourceQuotaListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceQuotaList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceQuotaListParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceQuotaList__no_checks.go b/pods/imports/k8s/KubeResourceQuotaList__no_checks.go new file mode 100644 index 000000000..ac11f0606 --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuotaList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceQuotaList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceQuotaList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceQuotaList_ManifestParameters(props *KubeResourceQuotaListProps) error { + return nil +} + +func validateKubeResourceQuotaList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceQuotaListParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceQuotaProps.go b/pods/imports/k8s/KubeResourceQuotaProps.go new file mode 100644 index 000000000..ae1495b3a --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuotaProps.go @@ -0,0 +1,13 @@ +package k8s + +// ResourceQuota sets aggregate quota restrictions enforced per namespace. +type KubeResourceQuotaProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the desired quota. + // + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *ResourceQuotaSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeResourceQuota__checks.go b/pods/imports/k8s/KubeResourceQuota__checks.go new file mode 100644 index 000000000..69f8227c8 --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuota__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceQuota_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceQuota_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceQuota_ManifestParameters(props *KubeResourceQuotaProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceQuota_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceQuotaParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceQuota__no_checks.go b/pods/imports/k8s/KubeResourceQuota__no_checks.go new file mode 100644 index 000000000..b0a4317bd --- /dev/null +++ b/pods/imports/k8s/KubeResourceQuota__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceQuota_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceQuota_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceQuota_ManifestParameters(props *KubeResourceQuotaProps) error { + return nil +} + +func validateKubeResourceQuota_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceQuotaParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3.go b/pods/imports/k8s/KubeResourceSliceListV1Alpha3.go new file mode 100644 index 000000000..bab68c852 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Alpha3.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceSliceList is a collection of ResourceSlices. +type KubeResourceSliceListV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceSliceListV1Alpha3 +type jsiiProxy_KubeResourceSliceListV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceSliceList" API object. +func NewKubeResourceSliceListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) KubeResourceSliceListV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeResourceSliceListV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceSliceListV1Alpha3{} + + _jsii_.Create( + "k8s.KubeResourceSliceListV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceSliceList" API object. +func NewKubeResourceSliceListV1Alpha3_Override(k KubeResourceSliceListV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceSliceListV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceSliceListV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceSliceListV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceSliceList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceSliceListV1Alpha3_Manifest(props *KubeResourceSliceListV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceSliceListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceSliceListV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceSliceListV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go new file mode 100644 index 000000000..029be890c --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceSliceList is a collection of ResourceSlices. +type KubeResourceSliceListV1Alpha3Props struct { + // Items is the list of resource ResourceSlices. + Items *[]*KubeResourceSliceV1Alpha3Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go new file mode 100644 index 000000000..15ef16ad6 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceListV1Alpha3_ManifestParameters(props *KubeResourceSliceListV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceSliceListV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceSliceListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go new file mode 100644 index 000000000..2c62ed91d --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceSliceListV1Alpha3_ManifestParameters(props *KubeResourceSliceListV1Alpha3Props) error { + return nil +} + +func validateKubeResourceSliceListV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceSliceListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1.go new file mode 100644 index 000000000..f16f4492d --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceSliceList is a collection of ResourceSlices. +type KubeResourceSliceListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceSliceListV1Beta1 +type jsiiProxy_KubeResourceSliceListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceSliceList" API object. +func NewKubeResourceSliceListV1Beta1(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) KubeResourceSliceListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeResourceSliceListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceSliceListV1Beta1{} + + _jsii_.Create( + "k8s.KubeResourceSliceListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceSliceList" API object. +func NewKubeResourceSliceListV1Beta1_Override(k KubeResourceSliceListV1Beta1, scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceSliceListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceSliceListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceSliceListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceSliceList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceSliceListV1Beta1_Manifest(props *KubeResourceSliceListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceSliceListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceSliceListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceSliceListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceSliceListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceSliceListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceSliceListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go new file mode 100644 index 000000000..d6461f992 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceSliceList is a collection of ResourceSlices. +type KubeResourceSliceListV1Beta1Props struct { + // Items is the list of resource ResourceSlices. + Items *[]*KubeResourceSliceV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go new file mode 100644 index 000000000..af0059449 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceSliceListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceListV1Beta1_ManifestParameters(props *KubeResourceSliceListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceSliceListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceSliceListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go new file mode 100644 index 000000000..5eaffe46d --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceSliceListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceSliceListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceSliceListV1Beta1_ManifestParameters(props *KubeResourceSliceListV1Beta1Props) error { + return nil +} + +func validateKubeResourceSliceListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceSliceListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go new file mode 100644 index 000000000..253bdeab5 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go @@ -0,0 +1,327 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. +// +// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. +// +// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . +// +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. +// +// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. +// +// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceSliceV1Alpha3 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceSliceV1Alpha3 +type jsiiProxy_KubeResourceSliceV1Alpha3 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceSlice" API object. +func NewKubeResourceSliceV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) KubeResourceSliceV1Alpha3 { + _init_.Initialize() + + if err := validateNewKubeResourceSliceV1Alpha3Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceSliceV1Alpha3{} + + _jsii_.Create( + "k8s.KubeResourceSliceV1Alpha3", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1alpha3.ResourceSlice" API object. +func NewKubeResourceSliceV1Alpha3_Override(k KubeResourceSliceV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceSliceV1Alpha3", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceSliceV1Alpha3_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Alpha3_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Alpha3", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceSliceV1Alpha3_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Alpha3_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Alpha3", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceSlice". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceSliceV1Alpha3_Manifest(props *KubeResourceSliceV1Alpha3Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Alpha3_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Alpha3", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceSliceV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Alpha3_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Alpha3", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceSliceV1Alpha3_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceSliceV1Alpha3", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceSliceV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceV1Alpha3) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceSliceV1Alpha3) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go new file mode 100644 index 000000000..2648973a9 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go @@ -0,0 +1,23 @@ +package k8s + +// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. +// +// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. +// +// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . +// +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. +// +// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. +// +// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceSliceV1Alpha3Props struct { + // Contains the information published by the driver. + // + // Changing the spec automatically increments the metadata.generation number. + Spec *ResourceSliceSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go new file mode 100644 index 000000000..c1f82f89e --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceSliceV1Alpha3_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceV1Alpha3_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceV1Alpha3_ManifestParameters(props *KubeResourceSliceV1Alpha3Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceSliceV1Alpha3_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceSliceV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go new file mode 100644 index 000000000..4ba654a98 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceSliceV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceSliceV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceSliceV1Alpha3_ManifestParameters(props *KubeResourceSliceV1Alpha3Props) error { + return nil +} + +func validateKubeResourceSliceV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceSliceV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1.go b/pods/imports/k8s/KubeResourceSliceV1Beta1.go new file mode 100644 index 000000000..6124cd566 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Beta1.go @@ -0,0 +1,327 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. +// +// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. +// +// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . +// +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. +// +// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. +// +// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceSliceV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeResourceSliceV1Beta1 +type jsiiProxy_KubeResourceSliceV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeResourceSliceV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceSlice" API object. +func NewKubeResourceSliceV1Beta1(scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) KubeResourceSliceV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeResourceSliceV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeResourceSliceV1Beta1{} + + _jsii_.Create( + "k8s.KubeResourceSliceV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.resource.v1beta1.ResourceSlice" API object. +func NewKubeResourceSliceV1Beta1_Override(k KubeResourceSliceV1Beta1, scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeResourceSliceV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeResourceSliceV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeResourceSliceV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceSlice". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeResourceSliceV1Beta1_Manifest(props *KubeResourceSliceV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeResourceSliceV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeResourceSliceV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeResourceSliceV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeResourceSliceV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeResourceSliceV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeResourceSliceV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeResourceSliceV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeResourceSliceV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1Props.go b/pods/imports/k8s/KubeResourceSliceV1Beta1Props.go new file mode 100644 index 000000000..a05349ce2 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Beta1Props.go @@ -0,0 +1,23 @@ +package k8s + +// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. +// +// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. +// +// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . +// +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. +// +// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. +// +// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. +type KubeResourceSliceV1Beta1Props struct { + // Contains the information published by the driver. + // + // Changing the spec automatically increments the metadata.generation number. + Spec *ResourceSliceSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go b/pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go new file mode 100644 index 000000000..08a2c899f --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeResourceSliceV1Beta1_ManifestParameters(props *KubeResourceSliceV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeResourceSliceV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeResourceSliceV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go new file mode 100644 index 000000000..f0973fd82 --- /dev/null +++ b/pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeResourceSliceV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeResourceSliceV1Beta1_ManifestParameters(props *KubeResourceSliceV1Beta1Props) error { + return nil +} + +func validateKubeResourceSliceV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeResourceSliceV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeRole.go b/pods/imports/k8s/KubeRole.go new file mode 100644 index 000000000..b4de3eb1c --- /dev/null +++ b/pods/imports/k8s/KubeRole.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type KubeRole interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeRole +type jsiiProxy_KubeRole struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeRole) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRole) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRole) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRole) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRole) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRole) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRole) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.Role" API object. +func NewKubeRole(scope constructs.Construct, id *string, props *KubeRoleProps) KubeRole { + _init_.Initialize() + + if err := validateNewKubeRoleParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeRole{} + + _jsii_.Create( + "k8s.KubeRole", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.Role" API object. +func NewKubeRole_Override(k KubeRole, scope constructs.Construct, id *string, props *KubeRoleProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeRole", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeRole_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRole_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRole", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeRole_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRole_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRole", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.Role". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeRole_Manifest(props *KubeRoleProps) interface{} { + _init_.Initialize() + + if err := validateKubeRole_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeRole", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeRole_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeRole_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeRole", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeRole_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeRole", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeRole) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeRole) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeRole) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeRole) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeRoleBinding.go b/pods/imports/k8s/KubeRoleBinding.go new file mode 100644 index 000000000..8dcc4f162 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBinding.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// RoleBinding references a role, but does not contain it. +// +// It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. +type KubeRoleBinding interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeRoleBinding +type jsiiProxy_KubeRoleBinding struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeRoleBinding) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBinding) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBinding) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBinding) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBinding) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBinding) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.RoleBinding" API object. +func NewKubeRoleBinding(scope constructs.Construct, id *string, props *KubeRoleBindingProps) KubeRoleBinding { + _init_.Initialize() + + if err := validateNewKubeRoleBindingParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeRoleBinding{} + + _jsii_.Create( + "k8s.KubeRoleBinding", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.RoleBinding" API object. +func NewKubeRoleBinding_Override(k KubeRoleBinding, scope constructs.Construct, id *string, props *KubeRoleBindingProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeRoleBinding", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeRoleBinding_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRoleBinding_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRoleBinding", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeRoleBinding_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRoleBinding_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRoleBinding", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleBinding". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeRoleBinding_Manifest(props *KubeRoleBindingProps) interface{} { + _init_.Initialize() + + if err := validateKubeRoleBinding_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeRoleBinding", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeRoleBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeRoleBinding_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeRoleBinding", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeRoleBinding_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeRoleBinding", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeRoleBinding) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeRoleBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeRoleBinding) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeRoleBinding) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeRoleBindingList.go b/pods/imports/k8s/KubeRoleBindingList.go new file mode 100644 index 000000000..bc50add94 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBindingList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// RoleBindingList is a collection of RoleBindings. +type KubeRoleBindingList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeRoleBindingList +type jsiiProxy_KubeRoleBindingList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeRoleBindingList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBindingList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBindingList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBindingList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBindingList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBindingList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleBindingList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.RoleBindingList" API object. +func NewKubeRoleBindingList(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) KubeRoleBindingList { + _init_.Initialize() + + if err := validateNewKubeRoleBindingListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeRoleBindingList{} + + _jsii_.Create( + "k8s.KubeRoleBindingList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.RoleBindingList" API object. +func NewKubeRoleBindingList_Override(k KubeRoleBindingList, scope constructs.Construct, id *string, props *KubeRoleBindingListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeRoleBindingList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeRoleBindingList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRoleBindingList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRoleBindingList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeRoleBindingList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRoleBindingList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRoleBindingList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleBindingList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeRoleBindingList_Manifest(props *KubeRoleBindingListProps) interface{} { + _init_.Initialize() + + if err := validateKubeRoleBindingList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeRoleBindingList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeRoleBindingList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeRoleBindingList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeRoleBindingList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeRoleBindingList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeRoleBindingList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeRoleBindingList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeRoleBindingList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeRoleBindingList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeRoleBindingList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeRoleBindingListProps.go b/pods/imports/k8s/KubeRoleBindingListProps.go new file mode 100644 index 000000000..2c9b2b8d0 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBindingListProps.go @@ -0,0 +1,9 @@ +package k8s + +// RoleBindingList is a collection of RoleBindings. +type KubeRoleBindingListProps struct { + // Items is a list of RoleBindings. + Items *[]*KubeRoleBindingProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeRoleBindingList__checks.go b/pods/imports/k8s/KubeRoleBindingList__checks.go new file mode 100644 index 000000000..5723e2fad --- /dev/null +++ b/pods/imports/k8s/KubeRoleBindingList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeRoleBindingList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeRoleBindingList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeRoleBindingList_ManifestParameters(props *KubeRoleBindingListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeRoleBindingList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeRoleBindingList__no_checks.go b/pods/imports/k8s/KubeRoleBindingList__no_checks.go new file mode 100644 index 000000000..1edf108c2 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBindingList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeRoleBindingList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeRoleBindingList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeRoleBindingList_ManifestParameters(props *KubeRoleBindingListProps) error { + return nil +} + +func validateKubeRoleBindingList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeRoleBindingProps.go b/pods/imports/k8s/KubeRoleBindingProps.go new file mode 100644 index 000000000..026fd8978 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBindingProps.go @@ -0,0 +1,15 @@ +package k8s + +// RoleBinding references a role, but does not contain it. +// +// It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. +type KubeRoleBindingProps struct { + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // + // If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable. + RoleRef *RoleRef `field:"required" json:"roleRef" yaml:"roleRef"` + // Standard object's metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Subjects holds references to the objects the role applies to. + Subjects *[]*Subject `field:"optional" json:"subjects" yaml:"subjects"` +} diff --git a/pods/imports/k8s/KubeRoleBinding__checks.go b/pods/imports/k8s/KubeRoleBinding__checks.go new file mode 100644 index 000000000..4bb888ba1 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBinding__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeRoleBinding_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeRoleBinding_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeRoleBinding_ManifestParameters(props *KubeRoleBindingProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeRoleBinding_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeRoleBindingParameters(scope constructs.Construct, id *string, props *KubeRoleBindingProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeRoleBinding__no_checks.go b/pods/imports/k8s/KubeRoleBinding__no_checks.go new file mode 100644 index 000000000..64f3ce1d0 --- /dev/null +++ b/pods/imports/k8s/KubeRoleBinding__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeRoleBinding_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeRoleBinding_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeRoleBinding_ManifestParameters(props *KubeRoleBindingProps) error { + return nil +} + +func validateKubeRoleBinding_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeRoleBindingParameters(scope constructs.Construct, id *string, props *KubeRoleBindingProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeRoleList.go b/pods/imports/k8s/KubeRoleList.go new file mode 100644 index 000000000..b16154a12 --- /dev/null +++ b/pods/imports/k8s/KubeRoleList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// RoleList is a collection of Roles. +type KubeRoleList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeRoleList +type jsiiProxy_KubeRoleList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeRoleList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRoleList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.rbac.v1.RoleList" API object. +func NewKubeRoleList(scope constructs.Construct, id *string, props *KubeRoleListProps) KubeRoleList { + _init_.Initialize() + + if err := validateNewKubeRoleListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeRoleList{} + + _jsii_.Create( + "k8s.KubeRoleList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.rbac.v1.RoleList" API object. +func NewKubeRoleList_Override(k KubeRoleList, scope constructs.Construct, id *string, props *KubeRoleListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeRoleList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeRoleList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRoleList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRoleList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeRoleList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRoleList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRoleList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeRoleList_Manifest(props *KubeRoleListProps) interface{} { + _init_.Initialize() + + if err := validateKubeRoleList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeRoleList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeRoleList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeRoleList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeRoleList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeRoleList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeRoleList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeRoleList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeRoleList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeRoleList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeRoleList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeRoleListProps.go b/pods/imports/k8s/KubeRoleListProps.go new file mode 100644 index 000000000..e91932b8b --- /dev/null +++ b/pods/imports/k8s/KubeRoleListProps.go @@ -0,0 +1,9 @@ +package k8s + +// RoleList is a collection of Roles. +type KubeRoleListProps struct { + // Items is a list of Roles. + Items *[]*KubeRoleProps `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeRoleList__checks.go b/pods/imports/k8s/KubeRoleList__checks.go new file mode 100644 index 000000000..2f0e901bb --- /dev/null +++ b/pods/imports/k8s/KubeRoleList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeRoleList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeRoleList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeRoleList_ManifestParameters(props *KubeRoleListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeRoleList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeRoleListParameters(scope constructs.Construct, id *string, props *KubeRoleListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeRoleList__no_checks.go b/pods/imports/k8s/KubeRoleList__no_checks.go new file mode 100644 index 000000000..33e4af397 --- /dev/null +++ b/pods/imports/k8s/KubeRoleList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeRoleList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeRoleList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeRoleList_ManifestParameters(props *KubeRoleListProps) error { + return nil +} + +func validateKubeRoleList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeRoleListParameters(scope constructs.Construct, id *string, props *KubeRoleListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeRoleProps.go b/pods/imports/k8s/KubeRoleProps.go new file mode 100644 index 000000000..60dac4e1a --- /dev/null +++ b/pods/imports/k8s/KubeRoleProps.go @@ -0,0 +1,9 @@ +package k8s + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type KubeRoleProps struct { + // Standard object's metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Rules holds all the PolicyRules for this Role. + Rules *[]*PolicyRule `field:"optional" json:"rules" yaml:"rules"` +} diff --git a/pods/imports/k8s/KubeRole__checks.go b/pods/imports/k8s/KubeRole__checks.go new file mode 100644 index 000000000..f1410b701 --- /dev/null +++ b/pods/imports/k8s/KubeRole__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeRole_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeRole_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeRole_ManifestParameters(props *KubeRoleProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeRole_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeRoleParameters(scope constructs.Construct, id *string, props *KubeRoleProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeRole__no_checks.go b/pods/imports/k8s/KubeRole__no_checks.go new file mode 100644 index 000000000..05e0629f3 --- /dev/null +++ b/pods/imports/k8s/KubeRole__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeRole_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeRole_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeRole_ManifestParameters(props *KubeRoleProps) error { + return nil +} + +func validateKubeRole_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeRoleParameters(scope constructs.Construct, id *string, props *KubeRoleProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeRuntimeClass.go b/pods/imports/k8s/KubeRuntimeClass.go new file mode 100644 index 000000000..7ce0c5f4f --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClass.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// RuntimeClass defines a class of container runtime supported in the cluster. +// +// The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/ +type KubeRuntimeClass interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeRuntimeClass +type jsiiProxy_KubeRuntimeClass struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeRuntimeClass) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClass) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClass) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClass) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClass) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClass) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClass) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.node.v1.RuntimeClass" API object. +func NewKubeRuntimeClass(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) KubeRuntimeClass { + _init_.Initialize() + + if err := validateNewKubeRuntimeClassParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeRuntimeClass{} + + _jsii_.Create( + "k8s.KubeRuntimeClass", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.node.v1.RuntimeClass" API object. +func NewKubeRuntimeClass_Override(k KubeRuntimeClass, scope constructs.Construct, id *string, props *KubeRuntimeClassProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeRuntimeClass", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeRuntimeClass_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRuntimeClass_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClass", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeRuntimeClass_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRuntimeClass_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClass", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.node.v1.RuntimeClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeRuntimeClass_Manifest(props *KubeRuntimeClassProps) interface{} { + _init_.Initialize() + + if err := validateKubeRuntimeClass_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClass", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeRuntimeClass_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeRuntimeClass_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClass", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeRuntimeClass_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeRuntimeClass", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeRuntimeClass) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeRuntimeClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeRuntimeClass) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeRuntimeClass) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeRuntimeClassList.go b/pods/imports/k8s/KubeRuntimeClassList.go new file mode 100644 index 000000000..86f09be45 --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClassList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// RuntimeClassList is a list of RuntimeClass objects. +type KubeRuntimeClassList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeRuntimeClassList +type jsiiProxy_KubeRuntimeClassList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeRuntimeClassList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClassList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClassList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClassList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClassList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeRuntimeClassList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.node.v1.RuntimeClassList" API object. +func NewKubeRuntimeClassList(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) KubeRuntimeClassList { + _init_.Initialize() + + if err := validateNewKubeRuntimeClassListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeRuntimeClassList{} + + _jsii_.Create( + "k8s.KubeRuntimeClassList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.node.v1.RuntimeClassList" API object. +func NewKubeRuntimeClassList_Override(k KubeRuntimeClassList, scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeRuntimeClassList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeRuntimeClassList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRuntimeClassList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClassList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeRuntimeClassList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeRuntimeClassList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClassList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.node.v1.RuntimeClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeRuntimeClassList_Manifest(props *KubeRuntimeClassListProps) interface{} { + _init_.Initialize() + + if err := validateKubeRuntimeClassList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClassList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeRuntimeClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeRuntimeClassList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeRuntimeClassList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeRuntimeClassList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeRuntimeClassList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeRuntimeClassList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeRuntimeClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeRuntimeClassList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeRuntimeClassList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeRuntimeClassListProps.go b/pods/imports/k8s/KubeRuntimeClassListProps.go new file mode 100644 index 000000000..2119a0cce --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClassListProps.go @@ -0,0 +1,11 @@ +package k8s + +// RuntimeClassList is a list of RuntimeClass objects. +type KubeRuntimeClassListProps struct { + // items is a list of schema objects. + Items *[]*KubeRuntimeClassProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeRuntimeClassList__checks.go b/pods/imports/k8s/KubeRuntimeClassList__checks.go new file mode 100644 index 000000000..59be36ce1 --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClassList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeRuntimeClassList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeRuntimeClassList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeRuntimeClassList_ManifestParameters(props *KubeRuntimeClassListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeRuntimeClassList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeRuntimeClassListParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeRuntimeClassList__no_checks.go b/pods/imports/k8s/KubeRuntimeClassList__no_checks.go new file mode 100644 index 000000000..60f387985 --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClassList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeRuntimeClassList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeRuntimeClassList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeRuntimeClassList_ManifestParameters(props *KubeRuntimeClassListProps) error { + return nil +} + +func validateKubeRuntimeClassList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeRuntimeClassListParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeRuntimeClassProps.go b/pods/imports/k8s/KubeRuntimeClassProps.go new file mode 100644 index 000000000..e3ea3df1f --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClassProps.go @@ -0,0 +1,22 @@ +package k8s + +// RuntimeClass defines a class of container runtime supported in the cluster. +// +// The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/ +type KubeRuntimeClassProps struct { + // handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. + // + // The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable. + Handler *string `field:"required" json:"handler" yaml:"handler"` + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // overhead represents the resource overhead associated with running a pod for a given RuntimeClass. + // + // For more details, see + // https://kubernetes.io/docs/concepts/scheduling-eviction/pod-overhead/ + Overhead *Overhead `field:"optional" json:"overhead" yaml:"overhead"` + // scheduling holds the scheduling constraints to ensure that pods running with this RuntimeClass are scheduled to nodes that support it. + // + // If scheduling is nil, this RuntimeClass is assumed to be supported by all nodes. + Scheduling *Scheduling `field:"optional" json:"scheduling" yaml:"scheduling"` +} diff --git a/pods/imports/k8s/KubeRuntimeClass__checks.go b/pods/imports/k8s/KubeRuntimeClass__checks.go new file mode 100644 index 000000000..adac637ad --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClass__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeRuntimeClass_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeRuntimeClass_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeRuntimeClass_ManifestParameters(props *KubeRuntimeClassProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeRuntimeClass_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeRuntimeClassParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeRuntimeClass__no_checks.go b/pods/imports/k8s/KubeRuntimeClass__no_checks.go new file mode 100644 index 000000000..12ad3efb3 --- /dev/null +++ b/pods/imports/k8s/KubeRuntimeClass__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeRuntimeClass_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeRuntimeClass_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeRuntimeClass_ManifestParameters(props *KubeRuntimeClassProps) error { + return nil +} + +func validateKubeRuntimeClass_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeRuntimeClassParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeScale.go b/pods/imports/k8s/KubeScale.go new file mode 100644 index 000000000..da43c8a3c --- /dev/null +++ b/pods/imports/k8s/KubeScale.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Scale represents a scaling request for a resource. +type KubeScale interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeScale +type jsiiProxy_KubeScale struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeScale) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeScale) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeScale) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeScale) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeScale) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeScale) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeScale) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.autoscaling.v1.Scale" API object. +func NewKubeScale(scope constructs.Construct, id *string, props *KubeScaleProps) KubeScale { + _init_.Initialize() + + if err := validateNewKubeScaleParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeScale{} + + _jsii_.Create( + "k8s.KubeScale", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.autoscaling.v1.Scale" API object. +func NewKubeScale_Override(k KubeScale, scope constructs.Construct, id *string, props *KubeScaleProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeScale", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeScale_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeScale_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeScale", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeScale_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeScale_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeScale", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.Scale". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeScale_Manifest(props *KubeScaleProps) interface{} { + _init_.Initialize() + + if err := validateKubeScale_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeScale", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeScale_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeScale_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeScale", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeScale_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeScale", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeScale) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeScale) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeScale) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeScale) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeScaleProps.go b/pods/imports/k8s/KubeScaleProps.go new file mode 100644 index 000000000..ff7a06523 --- /dev/null +++ b/pods/imports/k8s/KubeScaleProps.go @@ -0,0 +1,13 @@ +package k8s + +// Scale represents a scaling request for a resource. +type KubeScaleProps struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec defines the behavior of the scale. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. + Spec *ScaleSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeScale__checks.go b/pods/imports/k8s/KubeScale__checks.go new file mode 100644 index 000000000..57ab509dd --- /dev/null +++ b/pods/imports/k8s/KubeScale__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeScale_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeScale_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeScale_ManifestParameters(props *KubeScaleProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeScale_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeScaleParameters(scope constructs.Construct, id *string, props *KubeScaleProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeScale__no_checks.go b/pods/imports/k8s/KubeScale__no_checks.go new file mode 100644 index 000000000..cd4e11010 --- /dev/null +++ b/pods/imports/k8s/KubeScale__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeScale_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeScale_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeScale_ManifestParameters(props *KubeScaleProps) error { + return nil +} + +func validateKubeScale_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeScaleParameters(scope constructs.Construct, id *string, props *KubeScaleProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeSecret.go b/pods/imports/k8s/KubeSecret.go new file mode 100644 index 000000000..a94ca928f --- /dev/null +++ b/pods/imports/k8s/KubeSecret.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Secret holds secret data of a certain type. +// +// The total bytes of the values in the Data field must be less than MaxSecretSize bytes. +type KubeSecret interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSecret +type jsiiProxy_KubeSecret struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSecret) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecret) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecret) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecret) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecret) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecret) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecret) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Secret" API object. +func NewKubeSecret(scope constructs.Construct, id *string, props *KubeSecretProps) KubeSecret { + _init_.Initialize() + + if err := validateNewKubeSecretParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSecret{} + + _jsii_.Create( + "k8s.KubeSecret", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Secret" API object. +func NewKubeSecret_Override(k KubeSecret, scope constructs.Construct, id *string, props *KubeSecretProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSecret", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSecret_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSecret_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSecret", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSecret_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSecret_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSecret", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Secret". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSecret_Manifest(props *KubeSecretProps) interface{} { + _init_.Initialize() + + if err := validateKubeSecret_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSecret", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSecret_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSecret_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSecret", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSecret_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSecret", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSecret) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSecret) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSecret) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSecret) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSecretList.go b/pods/imports/k8s/KubeSecretList.go new file mode 100644 index 000000000..a31ce7e4d --- /dev/null +++ b/pods/imports/k8s/KubeSecretList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// SecretList is a list of Secret. +type KubeSecretList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSecretList +type jsiiProxy_KubeSecretList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSecretList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecretList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecretList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecretList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecretList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecretList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSecretList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.SecretList" API object. +func NewKubeSecretList(scope constructs.Construct, id *string, props *KubeSecretListProps) KubeSecretList { + _init_.Initialize() + + if err := validateNewKubeSecretListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSecretList{} + + _jsii_.Create( + "k8s.KubeSecretList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.SecretList" API object. +func NewKubeSecretList_Override(k KubeSecretList, scope constructs.Construct, id *string, props *KubeSecretListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSecretList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSecretList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSecretList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSecretList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSecretList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSecretList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSecretList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.SecretList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSecretList_Manifest(props *KubeSecretListProps) interface{} { + _init_.Initialize() + + if err := validateKubeSecretList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSecretList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSecretList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSecretList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSecretList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSecretList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSecretList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSecretList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSecretList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSecretList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSecretList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSecretListProps.go b/pods/imports/k8s/KubeSecretListProps.go new file mode 100644 index 000000000..dd2e728a7 --- /dev/null +++ b/pods/imports/k8s/KubeSecretListProps.go @@ -0,0 +1,13 @@ +package k8s + +// SecretList is a list of Secret. +type KubeSecretListProps struct { + // Items is a list of secret objects. + // + // More info: https://kubernetes.io/docs/concepts/configuration/secret + Items *[]*KubeSecretProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeSecretList__checks.go b/pods/imports/k8s/KubeSecretList__checks.go new file mode 100644 index 000000000..dc115794f --- /dev/null +++ b/pods/imports/k8s/KubeSecretList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSecretList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSecretList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSecretList_ManifestParameters(props *KubeSecretListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSecretList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSecretListParameters(scope constructs.Construct, id *string, props *KubeSecretListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSecretList__no_checks.go b/pods/imports/k8s/KubeSecretList__no_checks.go new file mode 100644 index 000000000..76fa0cfb9 --- /dev/null +++ b/pods/imports/k8s/KubeSecretList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSecretList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSecretList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSecretList_ManifestParameters(props *KubeSecretListProps) error { + return nil +} + +func validateKubeSecretList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSecretListParameters(scope constructs.Construct, id *string, props *KubeSecretListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeSecretProps.go b/pods/imports/k8s/KubeSecretProps.go new file mode 100644 index 000000000..a19f3988e --- /dev/null +++ b/pods/imports/k8s/KubeSecretProps.go @@ -0,0 +1,27 @@ +package k8s + +// Secret holds secret data of a certain type. +// +// The total bytes of the values in the Data field must be less than MaxSecretSize bytes. +type KubeSecretProps struct { + // Data contains the secret data. + // + // Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4 + Data *map[string]*string `field:"optional" json:"data" yaml:"data"` + // Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). + // + // If not set to true, the field can be modified at any time. Defaulted to nil. + Immutable *bool `field:"optional" json:"immutable" yaml:"immutable"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // stringData allows specifying non-binary secret data in string form. + // + // It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API. + StringData *map[string]*string `field:"optional" json:"stringData" yaml:"stringData"` + // Used to facilitate programmatic handling of secret data. + // + // More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/KubeSecret__checks.go b/pods/imports/k8s/KubeSecret__checks.go new file mode 100644 index 000000000..423b07ab9 --- /dev/null +++ b/pods/imports/k8s/KubeSecret__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSecret_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSecret_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSecret_ManifestParameters(props *KubeSecretProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSecret_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSecretParameters(scope constructs.Construct, id *string, props *KubeSecretProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSecret__no_checks.go b/pods/imports/k8s/KubeSecret__no_checks.go new file mode 100644 index 000000000..49a7df947 --- /dev/null +++ b/pods/imports/k8s/KubeSecret__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSecret_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSecret_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSecret_ManifestParameters(props *KubeSecretProps) error { + return nil +} + +func validateKubeSecret_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSecretParameters(scope constructs.Construct, id *string, props *KubeSecretProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview.go b/pods/imports/k8s/KubeSelfSubjectAccessReview.go new file mode 100644 index 000000000..3e53433ed --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// SelfSubjectAccessReview checks whether or the current user can perform an action. +// +// Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action +type KubeSelfSubjectAccessReview interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSelfSubjectAccessReview +type jsiiProxy_KubeSelfSubjectAccessReview struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectAccessReview) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authorization.v1.SelfSubjectAccessReview" API object. +func NewKubeSelfSubjectAccessReview(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) KubeSelfSubjectAccessReview { + _init_.Initialize() + + if err := validateNewKubeSelfSubjectAccessReviewParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSelfSubjectAccessReview{} + + _jsii_.Create( + "k8s.KubeSelfSubjectAccessReview", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authorization.v1.SelfSubjectAccessReview" API object. +func NewKubeSelfSubjectAccessReview_Override(k KubeSelfSubjectAccessReview, scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSelfSubjectAccessReview", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSelfSubjectAccessReview_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectAccessReview_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectAccessReview", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSelfSubjectAccessReview_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectAccessReview_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectAccessReview", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SelfSubjectAccessReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSelfSubjectAccessReview_Manifest(props *KubeSelfSubjectAccessReviewProps) interface{} { + _init_.Initialize() + + if err := validateKubeSelfSubjectAccessReview_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectAccessReview", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSelfSubjectAccessReview_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSelfSubjectAccessReview_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectAccessReview", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSelfSubjectAccessReview_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSelfSubjectAccessReview", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectAccessReview) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectAccessReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectAccessReview) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectAccessReview) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go b/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go new file mode 100644 index 000000000..b5dadf366 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go @@ -0,0 +1,15 @@ +package k8s + +// SelfSubjectAccessReview checks whether or the current user can perform an action. +// +// Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action +type KubeSelfSubjectAccessReviewProps struct { + // Spec holds information about the request being evaluated. + // + // user and groups must be empty. + Spec *SelfSubjectAccessReviewSpec `field:"required" json:"spec" yaml:"spec"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go b/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go new file mode 100644 index 000000000..9ca16c41f --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSelfSubjectAccessReview_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectAccessReview_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectAccessReview_ManifestParameters(props *KubeSelfSubjectAccessReviewProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSelfSubjectAccessReview_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSelfSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go new file mode 100644 index 000000000..bb9e9f36c --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSelfSubjectAccessReview_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSelfSubjectAccessReview_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSelfSubjectAccessReview_ManifestParameters(props *KubeSelfSubjectAccessReviewProps) error { + return nil +} + +func validateKubeSelfSubjectAccessReview_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSelfSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectReview.go b/pods/imports/k8s/KubeSelfSubjectReview.go new file mode 100644 index 000000000..7d0389138 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReview.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. +// +// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. +type KubeSelfSubjectReview interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSelfSubjectReview +type jsiiProxy_KubeSelfSubjectReview struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSelfSubjectReview) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReview) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReview) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReview) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReview) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReview) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReview) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authentication.v1.SelfSubjectReview" API object. +func NewKubeSelfSubjectReview(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) KubeSelfSubjectReview { + _init_.Initialize() + + if err := validateNewKubeSelfSubjectReviewParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSelfSubjectReview{} + + _jsii_.Create( + "k8s.KubeSelfSubjectReview", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authentication.v1.SelfSubjectReview" API object. +func NewKubeSelfSubjectReview_Override(k KubeSelfSubjectReview, scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSelfSubjectReview", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSelfSubjectReview_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectReview_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReview", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSelfSubjectReview_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectReview_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReview", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.SelfSubjectReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSelfSubjectReview_Manifest(props *KubeSelfSubjectReviewProps) interface{} { + _init_.Initialize() + + if err := validateKubeSelfSubjectReview_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReview", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSelfSubjectReview_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSelfSubjectReview_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReview", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSelfSubjectReview_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSelfSubjectReview", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectReview) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectReview) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectReview) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSelfSubjectReviewProps.go b/pods/imports/k8s/KubeSelfSubjectReviewProps.go new file mode 100644 index 000000000..cc5d3417c --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewProps.go @@ -0,0 +1,11 @@ +package k8s + +// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. +// +// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. +type KubeSelfSubjectReviewProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go new file mode 100644 index 000000000..71ce76298 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. +// +// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. +type KubeSelfSubjectReviewV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSelfSubjectReviewV1Beta1 +type jsiiProxy_KubeSelfSubjectReviewV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authentication.v1beta1.SelfSubjectReview" API object. +func NewKubeSelfSubjectReviewV1Beta1(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) KubeSelfSubjectReviewV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSelfSubjectReviewV1Beta1{} + + _jsii_.Create( + "k8s.KubeSelfSubjectReviewV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authentication.v1beta1.SelfSubjectReview" API object. +func NewKubeSelfSubjectReviewV1Beta1_Override(k KubeSelfSubjectReviewV1Beta1, scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSelfSubjectReviewV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSelfSubjectReviewV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectReviewV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReviewV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSelfSubjectReviewV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectReviewV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReviewV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1beta1.SelfSubjectReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSelfSubjectReviewV1Beta1_Manifest(props *KubeSelfSubjectReviewV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeSelfSubjectReviewV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReviewV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSelfSubjectReviewV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSelfSubjectReviewV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectReviewV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSelfSubjectReviewV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSelfSubjectReviewV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go new file mode 100644 index 000000000..7f1c24dbf --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go @@ -0,0 +1,11 @@ +package k8s + +// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. +// +// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. +type KubeSelfSubjectReviewV1Beta1Props struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go new file mode 100644 index 000000000..8a1172c1a --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSelfSubjectReviewV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectReviewV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectReviewV1Beta1_ManifestParameters(props *KubeSelfSubjectReviewV1Beta1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSelfSubjectReviewV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go new file mode 100644 index 000000000..1d102c229 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSelfSubjectReviewV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSelfSubjectReviewV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSelfSubjectReviewV1Beta1_ManifestParameters(props *KubeSelfSubjectReviewV1Beta1Props) error { + return nil +} + +func validateKubeSelfSubjectReviewV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectReview__checks.go b/pods/imports/k8s/KubeSelfSubjectReview__checks.go new file mode 100644 index 000000000..b43d43f32 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReview__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSelfSubjectReview_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectReview_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectReview_ManifestParameters(props *KubeSelfSubjectReviewProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSelfSubjectReview_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSelfSubjectReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go new file mode 100644 index 000000000..e90480388 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSelfSubjectReview_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSelfSubjectReview_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSelfSubjectReview_ManifestParameters(props *KubeSelfSubjectReviewProps) error { + return nil +} + +func validateKubeSelfSubjectReview_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSelfSubjectReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview.go b/pods/imports/k8s/KubeSelfSubjectRulesReview.go new file mode 100644 index 000000000..5187d58d9 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. +// +// The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. +type KubeSelfSubjectRulesReview interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSelfSubjectRulesReview +type jsiiProxy_KubeSelfSubjectRulesReview struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSelfSubjectRulesReview) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authorization.v1.SelfSubjectRulesReview" API object. +func NewKubeSelfSubjectRulesReview(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) KubeSelfSubjectRulesReview { + _init_.Initialize() + + if err := validateNewKubeSelfSubjectRulesReviewParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSelfSubjectRulesReview{} + + _jsii_.Create( + "k8s.KubeSelfSubjectRulesReview", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authorization.v1.SelfSubjectRulesReview" API object. +func NewKubeSelfSubjectRulesReview_Override(k KubeSelfSubjectRulesReview, scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSelfSubjectRulesReview", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSelfSubjectRulesReview_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectRulesReview_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectRulesReview", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSelfSubjectRulesReview_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSelfSubjectRulesReview_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectRulesReview", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SelfSubjectRulesReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSelfSubjectRulesReview_Manifest(props *KubeSelfSubjectRulesReviewProps) interface{} { + _init_.Initialize() + + if err := validateKubeSelfSubjectRulesReview_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectRulesReview", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSelfSubjectRulesReview_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSelfSubjectRulesReview_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSelfSubjectRulesReview", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSelfSubjectRulesReview_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSelfSubjectRulesReview", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectRulesReview) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectRulesReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSelfSubjectRulesReview) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSelfSubjectRulesReview) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go b/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go new file mode 100644 index 000000000..7358953c5 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go @@ -0,0 +1,13 @@ +package k8s + +// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. +// +// The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. +type KubeSelfSubjectRulesReviewProps struct { + // Spec holds information about the request being evaluated. + Spec *SelfSubjectRulesReviewSpec `field:"required" json:"spec" yaml:"spec"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go b/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go new file mode 100644 index 000000000..fd4870166 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSelfSubjectRulesReview_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectRulesReview_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSelfSubjectRulesReview_ManifestParameters(props *KubeSelfSubjectRulesReviewProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSelfSubjectRulesReview_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSelfSubjectRulesReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go new file mode 100644 index 000000000..ba8a31c96 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSelfSubjectRulesReview_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSelfSubjectRulesReview_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSelfSubjectRulesReview_ManifestParameters(props *KubeSelfSubjectRulesReviewProps) error { + return nil +} + +func validateKubeSelfSubjectRulesReview_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSelfSubjectRulesReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeService.go b/pods/imports/k8s/KubeService.go new file mode 100644 index 000000000..bd5e9ab05 --- /dev/null +++ b/pods/imports/k8s/KubeService.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. +type KubeService interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeService +type jsiiProxy_KubeService struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeService) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeService) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeService) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeService) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeService) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeService) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeService) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.Service" API object. +func NewKubeService(scope constructs.Construct, id *string, props *KubeServiceProps) KubeService { + _init_.Initialize() + + if err := validateNewKubeServiceParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeService{} + + _jsii_.Create( + "k8s.KubeService", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.Service" API object. +func NewKubeService_Override(k KubeService, scope constructs.Construct, id *string, props *KubeServiceProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeService", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeService_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeService_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeService", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeService_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeService_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeService", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Service". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeService_Manifest(props *KubeServiceProps) interface{} { + _init_.Initialize() + + if err := validateKubeService_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeService", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeService_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeService_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeService", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeService_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeService", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeService) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeService) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeService) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeService) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeServiceAccount.go b/pods/imports/k8s/KubeServiceAccount.go new file mode 100644 index 000000000..dfca2aa15 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccount.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets. +type KubeServiceAccount interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeServiceAccount +type jsiiProxy_KubeServiceAccount struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeServiceAccount) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccount) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccount) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccount) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccount) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccount) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccount) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ServiceAccount" API object. +func NewKubeServiceAccount(scope constructs.Construct, id *string, props *KubeServiceAccountProps) KubeServiceAccount { + _init_.Initialize() + + if err := validateNewKubeServiceAccountParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeServiceAccount{} + + _jsii_.Create( + "k8s.KubeServiceAccount", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ServiceAccount" API object. +func NewKubeServiceAccount_Override(k KubeServiceAccount, scope constructs.Construct, id *string, props *KubeServiceAccountProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeServiceAccount", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeServiceAccount_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceAccount_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccount", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeServiceAccount_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceAccount_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccount", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceAccount". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeServiceAccount_Manifest(props *KubeServiceAccountProps) interface{} { + _init_.Initialize() + + if err := validateKubeServiceAccount_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccount", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeServiceAccount_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeServiceAccount_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccount", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeServiceAccount_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeServiceAccount", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeServiceAccount) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeServiceAccount) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeServiceAccount) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeServiceAccount) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeServiceAccountList.go b/pods/imports/k8s/KubeServiceAccountList.go new file mode 100644 index 000000000..6212f33c8 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccountList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ServiceAccountList is a list of ServiceAccount objects. +type KubeServiceAccountList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeServiceAccountList +type jsiiProxy_KubeServiceAccountList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeServiceAccountList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccountList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccountList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccountList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccountList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccountList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceAccountList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ServiceAccountList" API object. +func NewKubeServiceAccountList(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) KubeServiceAccountList { + _init_.Initialize() + + if err := validateNewKubeServiceAccountListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeServiceAccountList{} + + _jsii_.Create( + "k8s.KubeServiceAccountList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ServiceAccountList" API object. +func NewKubeServiceAccountList_Override(k KubeServiceAccountList, scope constructs.Construct, id *string, props *KubeServiceAccountListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeServiceAccountList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeServiceAccountList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceAccountList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccountList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeServiceAccountList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceAccountList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccountList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceAccountList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeServiceAccountList_Manifest(props *KubeServiceAccountListProps) interface{} { + _init_.Initialize() + + if err := validateKubeServiceAccountList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccountList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeServiceAccountList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeServiceAccountList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeServiceAccountList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeServiceAccountList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeServiceAccountList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeServiceAccountList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeServiceAccountList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeServiceAccountList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeServiceAccountList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeServiceAccountListProps.go b/pods/imports/k8s/KubeServiceAccountListProps.go new file mode 100644 index 000000000..609701727 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccountListProps.go @@ -0,0 +1,13 @@ +package k8s + +// ServiceAccountList is a list of ServiceAccount objects. +type KubeServiceAccountListProps struct { + // List of ServiceAccounts. + // + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + Items *[]*KubeServiceAccountProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeServiceAccountList__checks.go b/pods/imports/k8s/KubeServiceAccountList__checks.go new file mode 100644 index 000000000..3d2b4058e --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccountList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeServiceAccountList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceAccountList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceAccountList_ManifestParameters(props *KubeServiceAccountListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeServiceAccountList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeServiceAccountListParameters(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeServiceAccountList__no_checks.go b/pods/imports/k8s/KubeServiceAccountList__no_checks.go new file mode 100644 index 000000000..597e8f1a9 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccountList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeServiceAccountList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeServiceAccountList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeServiceAccountList_ManifestParameters(props *KubeServiceAccountListProps) error { + return nil +} + +func validateKubeServiceAccountList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeServiceAccountListParameters(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeServiceAccountProps.go b/pods/imports/k8s/KubeServiceAccountProps.go new file mode 100644 index 000000000..36f801322 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccountProps.go @@ -0,0 +1,21 @@ +package k8s + +// ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets. +type KubeServiceAccountProps struct { + // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. + // + // Can be overridden at the pod level. + AutomountServiceAccountToken *bool `field:"optional" json:"automountServiceAccountToken" yaml:"automountServiceAccountToken"` + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. + // + // ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod + ImagePullSecrets *[]*LocalObjectReference `field:"optional" json:"imagePullSecrets" yaml:"imagePullSecrets"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. + // + // Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true". The "kubernetes.io/enforce-mountable-secrets" annotation is deprecated since v1.32. Prefer separate namespaces to isolate access to mounted secrets. This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret + Secrets *[]*ObjectReference `field:"optional" json:"secrets" yaml:"secrets"` +} diff --git a/pods/imports/k8s/KubeServiceAccount__checks.go b/pods/imports/k8s/KubeServiceAccount__checks.go new file mode 100644 index 000000000..4f5bd03f0 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccount__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeServiceAccount_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceAccount_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceAccount_ManifestParameters(props *KubeServiceAccountProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeServiceAccount_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeServiceAccountParameters(scope constructs.Construct, id *string, props *KubeServiceAccountProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeServiceAccount__no_checks.go b/pods/imports/k8s/KubeServiceAccount__no_checks.go new file mode 100644 index 000000000..7c25815a2 --- /dev/null +++ b/pods/imports/k8s/KubeServiceAccount__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeServiceAccount_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeServiceAccount_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeServiceAccount_ManifestParameters(props *KubeServiceAccountProps) error { + return nil +} + +func validateKubeServiceAccount_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeServiceAccountParameters(scope constructs.Construct, id *string, props *KubeServiceAccountProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go new file mode 100644 index 000000000..1443c1e53 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ServiceCIDRList contains a list of ServiceCIDR objects. +type KubeServiceCidrListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeServiceCidrListV1Beta1 +type jsiiProxy_KubeServiceCidrListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDRList" API object. +func NewKubeServiceCidrListV1Beta1(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) KubeServiceCidrListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeServiceCidrListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeServiceCidrListV1Beta1{} + + _jsii_.Create( + "k8s.KubeServiceCidrListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDRList" API object. +func NewKubeServiceCidrListV1Beta1_Override(k KubeServiceCidrListV1Beta1, scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeServiceCidrListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeServiceCidrListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceCidrListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeServiceCidrListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceCidrListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.ServiceCIDRList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeServiceCidrListV1Beta1_Manifest(props *KubeServiceCidrListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeServiceCidrListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeServiceCidrListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeServiceCidrListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeServiceCidrListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeServiceCidrListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeServiceCidrListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeServiceCidrListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeServiceCidrListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeServiceCidrListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go new file mode 100644 index 000000000..56c093624 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go @@ -0,0 +1,11 @@ +package k8s + +// ServiceCIDRList contains a list of ServiceCIDR objects. +type KubeServiceCidrListV1Beta1Props struct { + // items is the list of ServiceCIDRs. + Items *[]*KubeServiceCidrv1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go new file mode 100644 index 000000000..81546cbb8 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeServiceCidrListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceCidrListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceCidrListV1Beta1_ManifestParameters(props *KubeServiceCidrListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeServiceCidrListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeServiceCidrListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go new file mode 100644 index 000000000..fea8828e7 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeServiceCidrListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeServiceCidrListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeServiceCidrListV1Beta1_ManifestParameters(props *KubeServiceCidrListV1Beta1Props) error { + return nil +} + +func validateKubeServiceCidrListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeServiceCidrListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1.go b/pods/imports/k8s/KubeServiceCidrv1Beta1.go new file mode 100644 index 000000000..928e7e79b --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. +type KubeServiceCidrv1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeServiceCidrv1Beta1 +type jsiiProxy_KubeServiceCidrv1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceCidrv1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDR" API object. +func NewKubeServiceCidrv1Beta1(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) KubeServiceCidrv1Beta1 { + _init_.Initialize() + + if err := validateNewKubeServiceCidrv1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeServiceCidrv1Beta1{} + + _jsii_.Create( + "k8s.KubeServiceCidrv1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDR" API object. +func NewKubeServiceCidrv1Beta1_Override(k KubeServiceCidrv1Beta1, scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeServiceCidrv1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeServiceCidrv1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceCidrv1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrv1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeServiceCidrv1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceCidrv1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrv1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.ServiceCIDR". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeServiceCidrv1Beta1_Manifest(props *KubeServiceCidrv1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeServiceCidrv1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrv1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeServiceCidrv1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeServiceCidrv1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeServiceCidrv1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeServiceCidrv1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeServiceCidrv1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeServiceCidrv1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeServiceCidrv1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeServiceCidrv1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeServiceCidrv1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go b/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go new file mode 100644 index 000000000..d54fcacb9 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go @@ -0,0 +1,13 @@ +package k8s + +// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. +type KubeServiceCidrv1Beta1Props struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // spec is the desired state of the ServiceCIDR. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *ServiceCidrSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go b/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go new file mode 100644 index 000000000..c12696285 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeServiceCidrv1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceCidrv1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceCidrv1Beta1_ManifestParameters(props *KubeServiceCidrv1Beta1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeServiceCidrv1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeServiceCidrv1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go b/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go new file mode 100644 index 000000000..f539d4051 --- /dev/null +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeServiceCidrv1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeServiceCidrv1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeServiceCidrv1Beta1_ManifestParameters(props *KubeServiceCidrv1Beta1Props) error { + return nil +} + +func validateKubeServiceCidrv1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeServiceCidrv1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeServiceList.go b/pods/imports/k8s/KubeServiceList.go new file mode 100644 index 000000000..dc35f5366 --- /dev/null +++ b/pods/imports/k8s/KubeServiceList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ServiceList holds a list of services. +type KubeServiceList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeServiceList +type jsiiProxy_KubeServiceList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeServiceList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeServiceList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.core.v1.ServiceList" API object. +func NewKubeServiceList(scope constructs.Construct, id *string, props *KubeServiceListProps) KubeServiceList { + _init_.Initialize() + + if err := validateNewKubeServiceListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeServiceList{} + + _jsii_.Create( + "k8s.KubeServiceList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.core.v1.ServiceList" API object. +func NewKubeServiceList_Override(k KubeServiceList, scope constructs.Construct, id *string, props *KubeServiceListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeServiceList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeServiceList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeServiceList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeServiceList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeServiceList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeServiceList_Manifest(props *KubeServiceListProps) interface{} { + _init_.Initialize() + + if err := validateKubeServiceList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeServiceList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeServiceList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeServiceList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeServiceList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeServiceList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeServiceList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeServiceList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeServiceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeServiceList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeServiceList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeServiceListProps.go b/pods/imports/k8s/KubeServiceListProps.go new file mode 100644 index 000000000..d554f59a7 --- /dev/null +++ b/pods/imports/k8s/KubeServiceListProps.go @@ -0,0 +1,11 @@ +package k8s + +// ServiceList holds a list of services. +type KubeServiceListProps struct { + // List of services. + Items *[]*KubeServiceProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeServiceList__checks.go b/pods/imports/k8s/KubeServiceList__checks.go new file mode 100644 index 000000000..c37fdfa73 --- /dev/null +++ b/pods/imports/k8s/KubeServiceList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeServiceList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeServiceList_ManifestParameters(props *KubeServiceListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeServiceList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeServiceListParameters(scope constructs.Construct, id *string, props *KubeServiceListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeServiceList__no_checks.go b/pods/imports/k8s/KubeServiceList__no_checks.go new file mode 100644 index 000000000..08114e1ff --- /dev/null +++ b/pods/imports/k8s/KubeServiceList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeServiceList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeServiceList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeServiceList_ManifestParameters(props *KubeServiceListProps) error { + return nil +} + +func validateKubeServiceList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeServiceListParameters(scope constructs.Construct, id *string, props *KubeServiceListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeServiceProps.go b/pods/imports/k8s/KubeServiceProps.go new file mode 100644 index 000000000..532266f39 --- /dev/null +++ b/pods/imports/k8s/KubeServiceProps.go @@ -0,0 +1,13 @@ +package k8s + +// Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. +type KubeServiceProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the behavior of a service. + // + // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *ServiceSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeService__checks.go b/pods/imports/k8s/KubeService__checks.go new file mode 100644 index 000000000..5c824a58c --- /dev/null +++ b/pods/imports/k8s/KubeService__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeService_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeService_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeService_ManifestParameters(props *KubeServiceProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeService_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeServiceParameters(scope constructs.Construct, id *string, props *KubeServiceProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeService__no_checks.go b/pods/imports/k8s/KubeService__no_checks.go new file mode 100644 index 000000000..1ebefb63f --- /dev/null +++ b/pods/imports/k8s/KubeService__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeService_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeService_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeService_ManifestParameters(props *KubeServiceProps) error { + return nil +} + +func validateKubeService_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeServiceParameters(scope constructs.Construct, id *string, props *KubeServiceProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeStatefulSet.go b/pods/imports/k8s/KubeStatefulSet.go new file mode 100644 index 000000000..e7965a724 --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSet.go @@ -0,0 +1,321 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// StatefulSet represents a set of pods with consistent identities. +// +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// +// The StatefulSet guarantees that a given network identity will always map to the same storage identity. +type KubeStatefulSet interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStatefulSet +type jsiiProxy_KubeStatefulSet struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStatefulSet) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSet) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSet) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSet) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSet) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSet) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSet) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.StatefulSet" API object. +func NewKubeStatefulSet(scope constructs.Construct, id *string, props *KubeStatefulSetProps) KubeStatefulSet { + _init_.Initialize() + + if err := validateNewKubeStatefulSetParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStatefulSet{} + + _jsii_.Create( + "k8s.KubeStatefulSet", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.StatefulSet" API object. +func NewKubeStatefulSet_Override(k KubeStatefulSet, scope constructs.Construct, id *string, props *KubeStatefulSetProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStatefulSet", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStatefulSet_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStatefulSet_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSet", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStatefulSet_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStatefulSet_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSet", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.StatefulSet". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStatefulSet_Manifest(props *KubeStatefulSetProps) interface{} { + _init_.Initialize() + + if err := validateKubeStatefulSet_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSet", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStatefulSet_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStatefulSet_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSet", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStatefulSet_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStatefulSet", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStatefulSet) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStatefulSet) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStatefulSet) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStatefulSet) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStatefulSetList.go b/pods/imports/k8s/KubeStatefulSetList.go new file mode 100644 index 000000000..75e0b33bc --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSetList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// StatefulSetList is a collection of StatefulSets. +type KubeStatefulSetList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStatefulSetList +type jsiiProxy_KubeStatefulSetList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStatefulSetList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSetList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSetList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSetList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSetList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSetList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatefulSetList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apps.v1.StatefulSetList" API object. +func NewKubeStatefulSetList(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) KubeStatefulSetList { + _init_.Initialize() + + if err := validateNewKubeStatefulSetListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStatefulSetList{} + + _jsii_.Create( + "k8s.KubeStatefulSetList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apps.v1.StatefulSetList" API object. +func NewKubeStatefulSetList_Override(k KubeStatefulSetList, scope constructs.Construct, id *string, props *KubeStatefulSetListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStatefulSetList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStatefulSetList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStatefulSetList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSetList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStatefulSetList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStatefulSetList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSetList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.StatefulSetList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStatefulSetList_Manifest(props *KubeStatefulSetListProps) interface{} { + _init_.Initialize() + + if err := validateKubeStatefulSetList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSetList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStatefulSetList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStatefulSetList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStatefulSetList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStatefulSetList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStatefulSetList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStatefulSetList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStatefulSetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStatefulSetList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStatefulSetList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStatefulSetListProps.go b/pods/imports/k8s/KubeStatefulSetListProps.go new file mode 100644 index 000000000..64b759b90 --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSetListProps.go @@ -0,0 +1,11 @@ +package k8s + +// StatefulSetList is a collection of StatefulSets. +type KubeStatefulSetListProps struct { + // Items is the list of stateful sets. + Items *[]*KubeStatefulSetProps `field:"required" json:"items" yaml:"items"` + // Standard list's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeStatefulSetList__checks.go b/pods/imports/k8s/KubeStatefulSetList__checks.go new file mode 100644 index 000000000..cb2c966b7 --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSetList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStatefulSetList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStatefulSetList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStatefulSetList_ManifestParameters(props *KubeStatefulSetListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStatefulSetList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStatefulSetListParameters(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStatefulSetList__no_checks.go b/pods/imports/k8s/KubeStatefulSetList__no_checks.go new file mode 100644 index 000000000..fc8dcfe9a --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSetList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStatefulSetList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStatefulSetList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStatefulSetList_ManifestParameters(props *KubeStatefulSetListProps) error { + return nil +} + +func validateKubeStatefulSetList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStatefulSetListParameters(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeStatefulSetProps.go b/pods/imports/k8s/KubeStatefulSetProps.go new file mode 100644 index 000000000..da97b7dd4 --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSetProps.go @@ -0,0 +1,17 @@ +package k8s + +// StatefulSet represents a set of pods with consistent identities. +// +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// +// The StatefulSet guarantees that a given network identity will always map to the same storage identity. +type KubeStatefulSetProps struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Spec defines the desired identities of pods in this set. + Spec *StatefulSetSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeStatefulSet__checks.go b/pods/imports/k8s/KubeStatefulSet__checks.go new file mode 100644 index 000000000..8adc1735f --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSet__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStatefulSet_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStatefulSet_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStatefulSet_ManifestParameters(props *KubeStatefulSetProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStatefulSet_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStatefulSetParameters(scope constructs.Construct, id *string, props *KubeStatefulSetProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStatefulSet__no_checks.go b/pods/imports/k8s/KubeStatefulSet__no_checks.go new file mode 100644 index 000000000..d725e9b2f --- /dev/null +++ b/pods/imports/k8s/KubeStatefulSet__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStatefulSet_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStatefulSet_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStatefulSet_ManifestParameters(props *KubeStatefulSetProps) error { + return nil +} + +func validateKubeStatefulSet_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStatefulSetParameters(scope constructs.Construct, id *string, props *KubeStatefulSetProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeStatus.go b/pods/imports/k8s/KubeStatus.go new file mode 100644 index 000000000..a8981d5d8 --- /dev/null +++ b/pods/imports/k8s/KubeStatus.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Status is a return value for calls that don't return other objects. +type KubeStatus interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStatus +type jsiiProxy_KubeStatus struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStatus) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatus) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatus) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatus) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatus) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatus) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStatus) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.apimachinery.pkg.apis.meta.v1.Status" API object. +func NewKubeStatus(scope constructs.Construct, id *string, props *KubeStatusProps) KubeStatus { + _init_.Initialize() + + if err := validateNewKubeStatusParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStatus{} + + _jsii_.Create( + "k8s.KubeStatus", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.apimachinery.pkg.apis.meta.v1.Status" API object. +func NewKubeStatus_Override(k KubeStatus, scope constructs.Construct, id *string, props *KubeStatusProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStatus", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStatus_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStatus_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStatus", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStatus_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStatus_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStatus", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.apimachinery.pkg.apis.meta.v1.Status". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStatus_Manifest(props *KubeStatusProps) interface{} { + _init_.Initialize() + + if err := validateKubeStatus_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStatus", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStatus_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStatus_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStatus", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStatus_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStatus", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStatus) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStatus) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStatus) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStatus) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStatusProps.go b/pods/imports/k8s/KubeStatusProps.go new file mode 100644 index 000000000..91fe55cb8 --- /dev/null +++ b/pods/imports/k8s/KubeStatusProps.go @@ -0,0 +1,21 @@ +package k8s + +// Status is a return value for calls that don't return other objects. +type KubeStatusProps struct { + // Suggested HTTP return code for this status, 0 if not set. + Code *float64 `field:"optional" json:"code" yaml:"code"` + // Extended data associated with the reason. + // + // Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type. + Details *StatusDetails `field:"optional" json:"details" yaml:"details"` + // A human-readable description of the status of this operation. + Message *string `field:"optional" json:"message" yaml:"message"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` + // A machine-readable description of why this operation is in the "Failure" status. + // + // If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it. + Reason *string `field:"optional" json:"reason" yaml:"reason"` +} diff --git a/pods/imports/k8s/KubeStatus__checks.go b/pods/imports/k8s/KubeStatus__checks.go new file mode 100644 index 000000000..a624718ba --- /dev/null +++ b/pods/imports/k8s/KubeStatus__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStatus_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStatus_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStatus_ManifestParameters(props *KubeStatusProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStatus_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStatusParameters(scope constructs.Construct, id *string, props *KubeStatusProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStatus__no_checks.go b/pods/imports/k8s/KubeStatus__no_checks.go new file mode 100644 index 000000000..b31b10316 --- /dev/null +++ b/pods/imports/k8s/KubeStatus__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStatus_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStatus_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStatus_ManifestParameters(props *KubeStatusProps) error { + return nil +} + +func validateKubeStatus_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStatusParameters(scope constructs.Construct, id *string, props *KubeStatusProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeStorageClass.go b/pods/imports/k8s/KubeStorageClass.go new file mode 100644 index 000000000..442d1afda --- /dev/null +++ b/pods/imports/k8s/KubeStorageClass.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name. +type KubeStorageClass interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStorageClass +type jsiiProxy_KubeStorageClass struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStorageClass) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClass) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClass) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClass) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClass) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClass) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClass) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.StorageClass" API object. +func NewKubeStorageClass(scope constructs.Construct, id *string, props *KubeStorageClassProps) KubeStorageClass { + _init_.Initialize() + + if err := validateNewKubeStorageClassParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStorageClass{} + + _jsii_.Create( + "k8s.KubeStorageClass", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.StorageClass" API object. +func NewKubeStorageClass_Override(k KubeStorageClass, scope constructs.Construct, id *string, props *KubeStorageClassProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStorageClass", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStorageClass_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageClass_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageClass", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStorageClass_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageClass_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageClass", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStorageClass_Manifest(props *KubeStorageClassProps) interface{} { + _init_.Initialize() + + if err := validateKubeStorageClass_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStorageClass", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStorageClass_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStorageClass_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStorageClass", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStorageClass_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStorageClass", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStorageClass) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStorageClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStorageClass) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStorageClass) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStorageClassList.go b/pods/imports/k8s/KubeStorageClassList.go new file mode 100644 index 000000000..4e1c895c6 --- /dev/null +++ b/pods/imports/k8s/KubeStorageClassList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// StorageClassList is a collection of storage classes. +type KubeStorageClassList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStorageClassList +type jsiiProxy_KubeStorageClassList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStorageClassList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClassList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClassList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClassList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClassList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageClassList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.StorageClassList" API object. +func NewKubeStorageClassList(scope constructs.Construct, id *string, props *KubeStorageClassListProps) KubeStorageClassList { + _init_.Initialize() + + if err := validateNewKubeStorageClassListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStorageClassList{} + + _jsii_.Create( + "k8s.KubeStorageClassList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.StorageClassList" API object. +func NewKubeStorageClassList_Override(k KubeStorageClassList, scope constructs.Construct, id *string, props *KubeStorageClassListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStorageClassList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStorageClassList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageClassList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageClassList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStorageClassList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageClassList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageClassList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStorageClassList_Manifest(props *KubeStorageClassListProps) interface{} { + _init_.Initialize() + + if err := validateKubeStorageClassList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStorageClassList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStorageClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStorageClassList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStorageClassList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStorageClassList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStorageClassList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStorageClassList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStorageClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStorageClassList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStorageClassList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStorageClassListProps.go b/pods/imports/k8s/KubeStorageClassListProps.go new file mode 100644 index 000000000..fda752d1c --- /dev/null +++ b/pods/imports/k8s/KubeStorageClassListProps.go @@ -0,0 +1,9 @@ +package k8s + +// StorageClassList is a collection of storage classes. +type KubeStorageClassListProps struct { + // items is the list of StorageClasses. + Items *[]*KubeStorageClassProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeStorageClassList__checks.go b/pods/imports/k8s/KubeStorageClassList__checks.go new file mode 100644 index 000000000..04e80b0e4 --- /dev/null +++ b/pods/imports/k8s/KubeStorageClassList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStorageClassList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageClassList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageClassList_ManifestParameters(props *KubeStorageClassListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStorageClassList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStorageClassListParameters(scope constructs.Construct, id *string, props *KubeStorageClassListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStorageClassList__no_checks.go b/pods/imports/k8s/KubeStorageClassList__no_checks.go new file mode 100644 index 000000000..193d93710 --- /dev/null +++ b/pods/imports/k8s/KubeStorageClassList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStorageClassList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStorageClassList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStorageClassList_ManifestParameters(props *KubeStorageClassListProps) error { + return nil +} + +func validateKubeStorageClassList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStorageClassListParameters(scope constructs.Construct, id *string, props *KubeStorageClassListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeStorageClassProps.go b/pods/imports/k8s/KubeStorageClassProps.go new file mode 100644 index 000000000..e4edc7595 --- /dev/null +++ b/pods/imports/k8s/KubeStorageClassProps.go @@ -0,0 +1,35 @@ +package k8s + +// StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name. +type KubeStorageClassProps struct { + // provisioner indicates the type of the provisioner. + Provisioner *string `field:"required" json:"provisioner" yaml:"provisioner"` + // allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. + // + // Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature. + AllowedTopologies *[]*TopologySelectorTerm `field:"optional" json:"allowedTopologies" yaml:"allowedTopologies"` + // allowVolumeExpansion shows whether the storage class allow volume expand. + AllowVolumeExpansion *bool `field:"optional" json:"allowVolumeExpansion" yaml:"allowVolumeExpansion"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. + // + // e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid. + MountOptions *[]*string `field:"optional" json:"mountOptions" yaml:"mountOptions"` + // parameters holds the parameters for the provisioner that should create volumes of this storage class. + Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` + // reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. + // + // Defaults to Delete. + // Default: Delete. + // + ReclaimPolicy *string `field:"optional" json:"reclaimPolicy" yaml:"reclaimPolicy"` + // volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. + // + // When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature. + VolumeBindingMode *string `field:"optional" json:"volumeBindingMode" yaml:"volumeBindingMode"` +} diff --git a/pods/imports/k8s/KubeStorageClass__checks.go b/pods/imports/k8s/KubeStorageClass__checks.go new file mode 100644 index 000000000..fab3086f0 --- /dev/null +++ b/pods/imports/k8s/KubeStorageClass__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStorageClass_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageClass_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageClass_ManifestParameters(props *KubeStorageClassProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStorageClass_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStorageClassParameters(scope constructs.Construct, id *string, props *KubeStorageClassProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStorageClass__no_checks.go b/pods/imports/k8s/KubeStorageClass__no_checks.go new file mode 100644 index 000000000..657dfdcd6 --- /dev/null +++ b/pods/imports/k8s/KubeStorageClass__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStorageClass_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStorageClass_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStorageClass_ManifestParameters(props *KubeStorageClassProps) error { + return nil +} + +func validateKubeStorageClass_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStorageClassParameters(scope constructs.Construct, id *string, props *KubeStorageClassProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go new file mode 100644 index 000000000..22046523e --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// A list of StorageVersions. +type KubeStorageVersionListV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStorageVersionListV1Alpha1 +type jsiiProxy_KubeStorageVersionListV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList" API object. +func NewKubeStorageVersionListV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) KubeStorageVersionListV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeStorageVersionListV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStorageVersionListV1Alpha1{} + + _jsii_.Create( + "k8s.KubeStorageVersionListV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList" API object. +func NewKubeStorageVersionListV1Alpha1_Override(k KubeStorageVersionListV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStorageVersionListV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStorageVersionListV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionListV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionListV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStorageVersionListV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionListV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionListV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStorageVersionListV1Alpha1_Manifest(props *KubeStorageVersionListV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeStorageVersionListV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionListV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStorageVersionListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStorageVersionListV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionListV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStorageVersionListV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStorageVersionListV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go new file mode 100644 index 000000000..506f195ba --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go @@ -0,0 +1,11 @@ +package k8s + +// A list of StorageVersions. +type KubeStorageVersionListV1Alpha1Props struct { + // Items holds a list of StorageVersion. + Items *[]*KubeStorageVersionV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go new file mode 100644 index 000000000..83c297471 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStorageVersionListV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionListV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionListV1Alpha1_ManifestParameters(props *KubeStorageVersionListV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStorageVersionListV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStorageVersionListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go new file mode 100644 index 000000000..e8d6b20cb --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStorageVersionListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStorageVersionListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStorageVersionListV1Alpha1_ManifestParameters(props *KubeStorageVersionListV1Alpha1Props) error { + return nil +} + +func validateKubeStorageVersionListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStorageVersionListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go new file mode 100644 index 000000000..f3b27a1ca --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// StorageVersionMigrationList is a collection of storage version migrations. +type KubeStorageVersionMigrationListV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStorageVersionMigrationListV1Alpha1 +type jsiiProxy_KubeStorageVersionMigrationListV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList" API object. +func NewKubeStorageVersionMigrationListV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) KubeStorageVersionMigrationListV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStorageVersionMigrationListV1Alpha1{} + + _jsii_.Create( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList" API object. +func NewKubeStorageVersionMigrationListV1Alpha1_Override(k KubeStorageVersionMigrationListV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStorageVersionMigrationListV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationListV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStorageVersionMigrationListV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationListV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStorageVersionMigrationListV1Alpha1_Manifest(props *KubeStorageVersionMigrationListV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationListV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStorageVersionMigrationListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStorageVersionMigrationListV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go new file mode 100644 index 000000000..402767e59 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go @@ -0,0 +1,9 @@ +package k8s + +// StorageVersionMigrationList is a collection of storage version migrations. +type KubeStorageVersionMigrationListV1Alpha1Props struct { + // Items is the list of StorageVersionMigration. + Items *[]*KubeStorageVersionMigrationV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go new file mode 100644 index 000000000..15276d24a --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStorageVersionMigrationListV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionMigrationListV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionMigrationListV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationListV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go new file mode 100644 index 000000000..a04c9e703 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStorageVersionMigrationListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStorageVersionMigrationListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStorageVersionMigrationListV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationListV1Alpha1Props) error { + return nil +} + +func validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go new file mode 100644 index 000000000..c712ed849 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// StorageVersionMigration represents a migration of stored data to the latest storage version. +type KubeStorageVersionMigrationV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStorageVersionMigrationV1Alpha1 +type jsiiProxy_KubeStorageVersionMigrationV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration" API object. +func NewKubeStorageVersionMigrationV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) KubeStorageVersionMigrationV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStorageVersionMigrationV1Alpha1{} + + _jsii_.Create( + "k8s.KubeStorageVersionMigrationV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration" API object. +func NewKubeStorageVersionMigrationV1Alpha1_Override(k KubeStorageVersionMigrationV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStorageVersionMigrationV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStorageVersionMigrationV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStorageVersionMigrationV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStorageVersionMigrationV1Alpha1_Manifest(props *KubeStorageVersionMigrationV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStorageVersionMigrationV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionMigrationV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStorageVersionMigrationV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStorageVersionMigrationV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go new file mode 100644 index 000000000..c9aca4586 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go @@ -0,0 +1,11 @@ +package k8s + +// StorageVersionMigration represents a migration of stored data to the latest storage version. +type KubeStorageVersionMigrationV1Alpha1Props struct { + // Standard object metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the migration. + Spec *StorageVersionMigrationSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go new file mode 100644 index 000000000..54ea395f9 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStorageVersionMigrationV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionMigrationV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionMigrationV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationV1Alpha1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go new file mode 100644 index 000000000..24067bb14 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStorageVersionMigrationV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStorageVersionMigrationV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStorageVersionMigrationV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationV1Alpha1Props) error { + return nil +} + +func validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go new file mode 100644 index 000000000..f04d8117c --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// Storage version of a specific resource. +type KubeStorageVersionV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeStorageVersionV1Alpha1 +type jsiiProxy_KubeStorageVersionV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion" API object. +func NewKubeStorageVersionV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) KubeStorageVersionV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeStorageVersionV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeStorageVersionV1Alpha1{} + + _jsii_.Create( + "k8s.KubeStorageVersionV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion" API object. +func NewKubeStorageVersionV1Alpha1_Override(k KubeStorageVersionV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeStorageVersionV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeStorageVersionV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeStorageVersionV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeStorageVersionV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeStorageVersionV1Alpha1_Manifest(props *KubeStorageVersionV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeStorageVersionV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeStorageVersionV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeStorageVersionV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeStorageVersionV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeStorageVersionV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeStorageVersionV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeStorageVersionV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeStorageVersionV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeStorageVersionV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go new file mode 100644 index 000000000..e9d994b67 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go @@ -0,0 +1,11 @@ +package k8s + +// Storage version of a specific resource. +type KubeStorageVersionV1Alpha1Props struct { + // Spec is an empty spec. + // + // It is here to comply with Kubernetes API style. + Spec interface{} `field:"required" json:"spec" yaml:"spec"` + // The name is .. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go new file mode 100644 index 000000000..fa25c349f --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeStorageVersionV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeStorageVersionV1Alpha1_ManifestParameters(props *KubeStorageVersionV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeStorageVersionV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeStorageVersionV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go new file mode 100644 index 000000000..245639e69 --- /dev/null +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeStorageVersionV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeStorageVersionV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeStorageVersionV1Alpha1_ManifestParameters(props *KubeStorageVersionV1Alpha1Props) error { + return nil +} + +func validateKubeStorageVersionV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeStorageVersionV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeSubjectAccessReview.go b/pods/imports/k8s/KubeSubjectAccessReview.go new file mode 100644 index 000000000..d76614baf --- /dev/null +++ b/pods/imports/k8s/KubeSubjectAccessReview.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type KubeSubjectAccessReview interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeSubjectAccessReview +type jsiiProxy_KubeSubjectAccessReview struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeSubjectAccessReview) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSubjectAccessReview) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSubjectAccessReview) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSubjectAccessReview) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSubjectAccessReview) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSubjectAccessReview) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeSubjectAccessReview) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authorization.v1.SubjectAccessReview" API object. +func NewKubeSubjectAccessReview(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) KubeSubjectAccessReview { + _init_.Initialize() + + if err := validateNewKubeSubjectAccessReviewParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeSubjectAccessReview{} + + _jsii_.Create( + "k8s.KubeSubjectAccessReview", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authorization.v1.SubjectAccessReview" API object. +func NewKubeSubjectAccessReview_Override(k KubeSubjectAccessReview, scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeSubjectAccessReview", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeSubjectAccessReview_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSubjectAccessReview_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSubjectAccessReview", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeSubjectAccessReview_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeSubjectAccessReview_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeSubjectAccessReview", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SubjectAccessReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeSubjectAccessReview_Manifest(props *KubeSubjectAccessReviewProps) interface{} { + _init_.Initialize() + + if err := validateKubeSubjectAccessReview_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeSubjectAccessReview", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeSubjectAccessReview_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeSubjectAccessReview_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeSubjectAccessReview", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeSubjectAccessReview_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeSubjectAccessReview", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeSubjectAccessReview) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeSubjectAccessReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeSubjectAccessReview) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeSubjectAccessReview) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeSubjectAccessReviewProps.go b/pods/imports/k8s/KubeSubjectAccessReviewProps.go new file mode 100644 index 000000000..4bd1c6fd7 --- /dev/null +++ b/pods/imports/k8s/KubeSubjectAccessReviewProps.go @@ -0,0 +1,11 @@ +package k8s + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type KubeSubjectAccessReviewProps struct { + // Spec holds information about the request being evaluated. + Spec *SubjectAccessReviewSpec `field:"required" json:"spec" yaml:"spec"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeSubjectAccessReview__checks.go b/pods/imports/k8s/KubeSubjectAccessReview__checks.go new file mode 100644 index 000000000..d84c6f586 --- /dev/null +++ b/pods/imports/k8s/KubeSubjectAccessReview__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeSubjectAccessReview_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeSubjectAccessReview_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeSubjectAccessReview_ManifestParameters(props *KubeSubjectAccessReviewProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeSubjectAccessReview_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go new file mode 100644 index 000000000..8e3d0bccf --- /dev/null +++ b/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSubjectAccessReview_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSubjectAccessReview_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSubjectAccessReview_ManifestParameters(props *KubeSubjectAccessReviewProps) error { + return nil +} + +func validateKubeSubjectAccessReview_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeTokenRequest.go b/pods/imports/k8s/KubeTokenRequest.go new file mode 100644 index 000000000..86adfe676 --- /dev/null +++ b/pods/imports/k8s/KubeTokenRequest.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// TokenRequest requests a token for a given service account. +type KubeTokenRequest interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeTokenRequest +type jsiiProxy_KubeTokenRequest struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeTokenRequest) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenRequest) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenRequest) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenRequest) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenRequest) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenRequest) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenRequest) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authentication.v1.TokenRequest" API object. +func NewKubeTokenRequest(scope constructs.Construct, id *string, props *KubeTokenRequestProps) KubeTokenRequest { + _init_.Initialize() + + if err := validateNewKubeTokenRequestParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeTokenRequest{} + + _jsii_.Create( + "k8s.KubeTokenRequest", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authentication.v1.TokenRequest" API object. +func NewKubeTokenRequest_Override(k KubeTokenRequest, scope constructs.Construct, id *string, props *KubeTokenRequestProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeTokenRequest", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeTokenRequest_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeTokenRequest_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeTokenRequest", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeTokenRequest_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeTokenRequest_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeTokenRequest", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.TokenRequest". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeTokenRequest_Manifest(props *KubeTokenRequestProps) interface{} { + _init_.Initialize() + + if err := validateKubeTokenRequest_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeTokenRequest", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeTokenRequest_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeTokenRequest_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeTokenRequest", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeTokenRequest_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeTokenRequest", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeTokenRequest) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeTokenRequest) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeTokenRequest) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeTokenRequest) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeTokenRequestProps.go b/pods/imports/k8s/KubeTokenRequestProps.go new file mode 100644 index 000000000..3d3047805 --- /dev/null +++ b/pods/imports/k8s/KubeTokenRequestProps.go @@ -0,0 +1,11 @@ +package k8s + +// TokenRequest requests a token for a given service account. +type KubeTokenRequestProps struct { + // Spec holds information about the request being evaluated. + Spec *TokenRequestSpec `field:"required" json:"spec" yaml:"spec"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeTokenRequest__checks.go b/pods/imports/k8s/KubeTokenRequest__checks.go new file mode 100644 index 000000000..c47f5c2ab --- /dev/null +++ b/pods/imports/k8s/KubeTokenRequest__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeTokenRequest_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeTokenRequest_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeTokenRequest_ManifestParameters(props *KubeTokenRequestProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeTokenRequest_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeTokenRequestParameters(scope constructs.Construct, id *string, props *KubeTokenRequestProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeTokenRequest__no_checks.go b/pods/imports/k8s/KubeTokenRequest__no_checks.go new file mode 100644 index 000000000..b023159b6 --- /dev/null +++ b/pods/imports/k8s/KubeTokenRequest__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeTokenRequest_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeTokenRequest_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeTokenRequest_ManifestParameters(props *KubeTokenRequestProps) error { + return nil +} + +func validateKubeTokenRequest_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeTokenRequestParameters(scope constructs.Construct, id *string, props *KubeTokenRequestProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeTokenReview.go b/pods/imports/k8s/KubeTokenReview.go new file mode 100644 index 000000000..a8ef3c198 --- /dev/null +++ b/pods/imports/k8s/KubeTokenReview.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// TokenReview attempts to authenticate a token to a known user. +// +// Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. +type KubeTokenReview interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeTokenReview +type jsiiProxy_KubeTokenReview struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeTokenReview) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenReview) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenReview) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenReview) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenReview) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenReview) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeTokenReview) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.authentication.v1.TokenReview" API object. +func NewKubeTokenReview(scope constructs.Construct, id *string, props *KubeTokenReviewProps) KubeTokenReview { + _init_.Initialize() + + if err := validateNewKubeTokenReviewParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeTokenReview{} + + _jsii_.Create( + "k8s.KubeTokenReview", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.authentication.v1.TokenReview" API object. +func NewKubeTokenReview_Override(k KubeTokenReview, scope constructs.Construct, id *string, props *KubeTokenReviewProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeTokenReview", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeTokenReview_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeTokenReview_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeTokenReview", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeTokenReview_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeTokenReview_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeTokenReview", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.TokenReview". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeTokenReview_Manifest(props *KubeTokenReviewProps) interface{} { + _init_.Initialize() + + if err := validateKubeTokenReview_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeTokenReview", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeTokenReview_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeTokenReview_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeTokenReview", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeTokenReview_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeTokenReview", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeTokenReview) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeTokenReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeTokenReview) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeTokenReview) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeTokenReviewProps.go b/pods/imports/k8s/KubeTokenReviewProps.go new file mode 100644 index 000000000..3ec020a5f --- /dev/null +++ b/pods/imports/k8s/KubeTokenReviewProps.go @@ -0,0 +1,13 @@ +package k8s + +// TokenReview attempts to authenticate a token to a known user. +// +// Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. +type KubeTokenReviewProps struct { + // Spec holds information about the request being evaluated. + Spec *TokenReviewSpec `field:"required" json:"spec" yaml:"spec"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeTokenReview__checks.go b/pods/imports/k8s/KubeTokenReview__checks.go new file mode 100644 index 000000000..b8095f4b7 --- /dev/null +++ b/pods/imports/k8s/KubeTokenReview__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeTokenReview_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeTokenReview_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeTokenReview_ManifestParameters(props *KubeTokenReviewProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeTokenReview_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeTokenReviewParameters(scope constructs.Construct, id *string, props *KubeTokenReviewProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeTokenReview__no_checks.go b/pods/imports/k8s/KubeTokenReview__no_checks.go new file mode 100644 index 000000000..9db152c5f --- /dev/null +++ b/pods/imports/k8s/KubeTokenReview__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeTokenReview_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeTokenReview_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeTokenReview_ManifestParameters(props *KubeTokenReviewProps) error { + return nil +} + +func validateKubeTokenReview_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeTokenReviewParameters(scope constructs.Construct, id *string, props *KubeTokenReviewProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go new file mode 100644 index 000000000..771f312e6 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. +type KubeValidatingAdmissionPolicy interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicy +type jsiiProxy_KubeValidatingAdmissionPolicy struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy" API object. +func NewKubeValidatingAdmissionPolicy(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) KubeValidatingAdmissionPolicy { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicy{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicy", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy" API object. +func NewKubeValidatingAdmissionPolicy_Override(k KubeValidatingAdmissionPolicy, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicy", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicy_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicy_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicy", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicy_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicy_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicy", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicy_Manifest(props *KubeValidatingAdmissionPolicyProps) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicy_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicy", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicy_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicy_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicy", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicy_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicy", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicy) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicy) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicy) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicy) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go new file mode 100644 index 000000000..3e119e379 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go @@ -0,0 +1,321 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. +// +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. +// +// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeValidatingAdmissionPolicyBinding interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyBinding +type jsiiProxy_KubeValidatingAdmissionPolicyBinding struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding" API object. +func NewKubeValidatingAdmissionPolicyBinding(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) KubeValidatingAdmissionPolicyBinding { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyBindingParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyBinding{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBinding", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding" API object. +func NewKubeValidatingAdmissionPolicyBinding_Override(k KubeValidatingAdmissionPolicyBinding, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBinding", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyBinding_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBinding_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBinding", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyBinding_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBinding_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBinding", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyBinding_Manifest(props *KubeValidatingAdmissionPolicyBindingProps) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBinding_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBinding", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBinding_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBinding", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyBinding_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyBinding", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go new file mode 100644 index 000000000..9155a5ea8 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. +type KubeValidatingAdmissionPolicyBindingList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingList +type jsiiProxy_KubeValidatingAdmissionPolicyBindingList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList" API object. +func NewKubeValidatingAdmissionPolicyBindingList(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) KubeValidatingAdmissionPolicyBindingList { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingList{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBindingList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList" API object. +func NewKubeValidatingAdmissionPolicyBindingList_Override(k KubeValidatingAdmissionPolicyBindingList, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBindingList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyBindingList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyBindingList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyBindingList_Manifest(props *KubeValidatingAdmissionPolicyBindingListProps) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyBindingList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyBindingList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyBindingList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go new file mode 100644 index 000000000..6960fbf28 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. +type KubeValidatingAdmissionPolicyBindingListProps struct { + // List of PolicyBinding. + Items *[]*KubeValidatingAdmissionPolicyBindingProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go new file mode 100644 index 000000000..e84a397c3 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. +type KubeValidatingAdmissionPolicyBindingListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingListV1Beta1 +type jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" API object. +func NewKubeValidatingAdmissionPolicyBindingListV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) KubeValidatingAdmissionPolicyBindingListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" API object. +func NewKubeValidatingAdmissionPolicyBindingListV1Beta1_Override(k KubeValidatingAdmissionPolicyBindingListV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyBindingListV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyBindingListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyBindingListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go new file mode 100644 index 000000000..79f7e62ce --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. +type KubeValidatingAdmissionPolicyBindingListV1Beta1Props struct { + // List of PolicyBinding. + Items *[]*KubeValidatingAdmissionPolicyBindingV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go new file mode 100644 index 000000000..7d119a33f --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go new file mode 100644 index 000000000..f55430446 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go new file mode 100644 index 000000000..cf01359cf --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyBindingList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingList_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go new file mode 100644 index 000000000..d74243108 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyBindingList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingList_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListProps) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go new file mode 100644 index 000000000..a2a8958b3 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go @@ -0,0 +1,17 @@ +package k8s + +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. +// +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. +// +// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeValidatingAdmissionPolicyBindingProps struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. + Spec *ValidatingAdmissionPolicyBindingSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go new file mode 100644 index 000000000..dba64b691 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go @@ -0,0 +1,321 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. +// +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. +// +// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeValidatingAdmissionPolicyBindingV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingV1Beta1 +type jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" API object. +func NewKubeValidatingAdmissionPolicyBindingV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) KubeValidatingAdmissionPolicyBindingV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" API object. +func NewKubeValidatingAdmissionPolicyBindingV1Beta1_Override(k KubeValidatingAdmissionPolicyBindingV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyBindingV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyBindingV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyBindingV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyBindingV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go new file mode 100644 index 000000000..535fd46c2 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go @@ -0,0 +1,17 @@ +package k8s + +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. +// +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. +// +// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeValidatingAdmissionPolicyBindingV1Beta1Props struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. + Spec *ValidatingAdmissionPolicyBindingSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go new file mode 100644 index 000000000..f1ee8cfcb --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go new file mode 100644 index 000000000..4701d0f7e --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go new file mode 100644 index 000000000..17deb7f1b --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyBinding_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBinding_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBinding_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBinding_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go new file mode 100644 index 000000000..2ffd72245 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyBinding_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBinding_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBinding_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingProps) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBinding_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go new file mode 100644 index 000000000..05229e7ef --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. +type KubeValidatingAdmissionPolicyList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyList +type jsiiProxy_KubeValidatingAdmissionPolicyList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList" API object. +func NewKubeValidatingAdmissionPolicyList(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) KubeValidatingAdmissionPolicyList { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyList{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList" API object. +func NewKubeValidatingAdmissionPolicyList_Override(k KubeValidatingAdmissionPolicyList, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyList_Manifest(props *KubeValidatingAdmissionPolicyListProps) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go new file mode 100644 index 000000000..213be493b --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. +type KubeValidatingAdmissionPolicyListProps struct { + // List of ValidatingAdmissionPolicy. + Items *[]*KubeValidatingAdmissionPolicyProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go new file mode 100644 index 000000000..ecc9fe4f1 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. +type KubeValidatingAdmissionPolicyListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyListV1Beta1 +type jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" API object. +func NewKubeValidatingAdmissionPolicyListV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) KubeValidatingAdmissionPolicyListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" API object. +func NewKubeValidatingAdmissionPolicyListV1Beta1_Override(k KubeValidatingAdmissionPolicyListV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyListV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go new file mode 100644 index 000000000..fc6c3047e --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. +type KubeValidatingAdmissionPolicyListV1Beta1Props struct { + // List of ValidatingAdmissionPolicy. + Items *[]*KubeValidatingAdmissionPolicyV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go new file mode 100644 index 000000000..1bf8623c8 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go new file mode 100644 index 000000000..3f88b9699 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go new file mode 100644 index 000000000..0b2a527f6 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyList_ManifestParameters(props *KubeValidatingAdmissionPolicyListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go new file mode 100644 index 000000000..81492bfd5 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyList_ManifestParameters(props *KubeValidatingAdmissionPolicyListProps) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go new file mode 100644 index 000000000..0defb2c48 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. +type KubeValidatingAdmissionPolicyProps struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the ValidatingAdmissionPolicy. + Spec *ValidatingAdmissionPolicySpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go new file mode 100644 index 000000000..6ce66a983 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. +type KubeValidatingAdmissionPolicyV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingAdmissionPolicyV1Beta1 +type jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" API object. +func NewKubeValidatingAdmissionPolicyV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) KubeValidatingAdmissionPolicyV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1{} + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" API object. +func NewKubeValidatingAdmissionPolicyV1Beta1_Override(k KubeValidatingAdmissionPolicyV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingAdmissionPolicyV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingAdmissionPolicyV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingAdmissionPolicyV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingAdmissionPolicyV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingAdmissionPolicyV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go new file mode 100644 index 000000000..b41d82cc0 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. +type KubeValidatingAdmissionPolicyV1Beta1Props struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the ValidatingAdmissionPolicy. + Spec *ValidatingAdmissionPolicySpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go new file mode 100644 index 000000000..ab26cc6d3 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Beta1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go new file mode 100644 index 000000000..47ebfc913 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Beta1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go new file mode 100644 index 000000000..31d19d98a --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicy_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicy_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicy_ManifestParameters(props *KubeValidatingAdmissionPolicyProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicy_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go new file mode 100644 index 000000000..e2cdc948e --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicy_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicy_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicy_ManifestParameters(props *KubeValidatingAdmissionPolicyProps) error { + return nil +} + +func validateKubeValidatingAdmissionPolicy_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go new file mode 100644 index 000000000..693a9fbd7 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. +type KubeValidatingWebhookConfiguration interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingWebhookConfiguration +type jsiiProxy_KubeValidatingWebhookConfiguration struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" API object. +func NewKubeValidatingWebhookConfiguration(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) KubeValidatingWebhookConfiguration { + _init_.Initialize() + + if err := validateNewKubeValidatingWebhookConfigurationParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingWebhookConfiguration{} + + _jsii_.Create( + "k8s.KubeValidatingWebhookConfiguration", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" API object. +func NewKubeValidatingWebhookConfiguration_Override(k KubeValidatingWebhookConfiguration, scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingWebhookConfiguration", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingWebhookConfiguration_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfiguration_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfiguration", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingWebhookConfiguration_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfiguration_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfiguration", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingWebhookConfiguration_Manifest(props *KubeValidatingWebhookConfigurationProps) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfiguration_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfiguration", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingWebhookConfiguration_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfiguration_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfiguration", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingWebhookConfiguration_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingWebhookConfiguration", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingWebhookConfiguration) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingWebhookConfiguration) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingWebhookConfiguration) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingWebhookConfiguration) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go new file mode 100644 index 000000000..37c39caca --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration. +type KubeValidatingWebhookConfigurationList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeValidatingWebhookConfigurationList +type jsiiProxy_KubeValidatingWebhookConfigurationList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" API object. +func NewKubeValidatingWebhookConfigurationList(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) KubeValidatingWebhookConfigurationList { + _init_.Initialize() + + if err := validateNewKubeValidatingWebhookConfigurationListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeValidatingWebhookConfigurationList{} + + _jsii_.Create( + "k8s.KubeValidatingWebhookConfigurationList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" API object. +func NewKubeValidatingWebhookConfigurationList_Override(k KubeValidatingWebhookConfigurationList, scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeValidatingWebhookConfigurationList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeValidatingWebhookConfigurationList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfigurationList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfigurationList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeValidatingWebhookConfigurationList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfigurationList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfigurationList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeValidatingWebhookConfigurationList_Manifest(props *KubeValidatingWebhookConfigurationListProps) interface{} { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfigurationList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfigurationList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeValidatingWebhookConfigurationList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeValidatingWebhookConfigurationList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeValidatingWebhookConfigurationList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeValidatingWebhookConfigurationList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeValidatingWebhookConfigurationList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go new file mode 100644 index 000000000..a40d90118 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration. +type KubeValidatingWebhookConfigurationListProps struct { + // List of ValidatingWebhookConfiguration. + Items *[]*KubeValidatingWebhookConfigurationProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go new file mode 100644 index 000000000..234297916 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingWebhookConfigurationList_ManifestParameters(props *KubeValidatingWebhookConfigurationListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go new file mode 100644 index 000000000..49c438d1e --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingWebhookConfigurationList_ManifestParameters(props *KubeValidatingWebhookConfigurationListProps) error { + return nil +} + +func validateKubeValidatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go new file mode 100644 index 000000000..39f4b7760 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go @@ -0,0 +1,11 @@ +package k8s + +// ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. +type KubeValidatingWebhookConfigurationProps struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Webhooks is a list of webhooks and the affected resources and operations. + Webhooks *[]*ValidatingWebhook `field:"optional" json:"webhooks" yaml:"webhooks"` +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go new file mode 100644 index 000000000..66d7ab6d5 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go @@ -0,0 +1,59 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingWebhookConfiguration_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingWebhookConfiguration_ManifestParameters(props *KubeValidatingWebhookConfigurationProps) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go new file mode 100644 index 000000000..304e4547d --- /dev/null +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingWebhookConfiguration_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingWebhookConfiguration_ManifestParameters(props *KubeValidatingWebhookConfigurationProps) error { + return nil +} + +func validateKubeValidatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttachment.go b/pods/imports/k8s/KubeVolumeAttachment.go new file mode 100644 index 000000000..6448b00d4 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachment.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node. +// +// VolumeAttachment objects are non-namespaced. +type KubeVolumeAttachment interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeVolumeAttachment +type jsiiProxy_KubeVolumeAttachment struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeVolumeAttachment) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachment) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachment) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachment) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachment) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachment) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachment) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.VolumeAttachment" API object. +func NewKubeVolumeAttachment(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) KubeVolumeAttachment { + _init_.Initialize() + + if err := validateNewKubeVolumeAttachmentParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeVolumeAttachment{} + + _jsii_.Create( + "k8s.KubeVolumeAttachment", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.VolumeAttachment" API object. +func NewKubeVolumeAttachment_Override(k KubeVolumeAttachment, scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeVolumeAttachment", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeVolumeAttachment_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttachment_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachment", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeVolumeAttachment_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttachment_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachment", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.VolumeAttachment". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeVolumeAttachment_Manifest(props *KubeVolumeAttachmentProps) interface{} { + _init_.Initialize() + + if err := validateKubeVolumeAttachment_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachment", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeVolumeAttachment_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeVolumeAttachment_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachment", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeVolumeAttachment_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeVolumeAttachment", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeVolumeAttachment) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttachment) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttachment) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeVolumeAttachment) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeVolumeAttachmentList.go b/pods/imports/k8s/KubeVolumeAttachmentList.go new file mode 100644 index 000000000..a7ad29443 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachmentList.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// VolumeAttachmentList is a collection of VolumeAttachment objects. +type KubeVolumeAttachmentList interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeVolumeAttachmentList +type jsiiProxy_KubeVolumeAttachmentList struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttachmentList) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1.VolumeAttachmentList" API object. +func NewKubeVolumeAttachmentList(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) KubeVolumeAttachmentList { + _init_.Initialize() + + if err := validateNewKubeVolumeAttachmentListParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeVolumeAttachmentList{} + + _jsii_.Create( + "k8s.KubeVolumeAttachmentList", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1.VolumeAttachmentList" API object. +func NewKubeVolumeAttachmentList_Override(k KubeVolumeAttachmentList, scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeVolumeAttachmentList", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeVolumeAttachmentList_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttachmentList_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachmentList", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeVolumeAttachmentList_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttachmentList_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachmentList", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.VolumeAttachmentList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeVolumeAttachmentList_Manifest(props *KubeVolumeAttachmentListProps) interface{} { + _init_.Initialize() + + if err := validateKubeVolumeAttachmentList_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachmentList", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeVolumeAttachmentList_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeVolumeAttachmentList_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttachmentList", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeVolumeAttachmentList_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeVolumeAttachmentList", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeVolumeAttachmentList) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttachmentList) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttachmentList) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeVolumeAttachmentList) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeVolumeAttachmentListProps.go b/pods/imports/k8s/KubeVolumeAttachmentListProps.go new file mode 100644 index 000000000..b32d00bd2 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachmentListProps.go @@ -0,0 +1,9 @@ +package k8s + +// VolumeAttachmentList is a collection of VolumeAttachment objects. +type KubeVolumeAttachmentListProps struct { + // items is the list of VolumeAttachments. + Items *[]*KubeVolumeAttachmentProps `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeVolumeAttachmentList__checks.go b/pods/imports/k8s/KubeVolumeAttachmentList__checks.go new file mode 100644 index 000000000..4e6c52a5d --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachmentList__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeVolumeAttachmentList_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttachmentList_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttachmentList_ManifestParameters(props *KubeVolumeAttachmentListProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeVolumeAttachmentList_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeVolumeAttachmentListParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go b/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go new file mode 100644 index 000000000..0699205cc --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeVolumeAttachmentList_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeVolumeAttachmentList_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeVolumeAttachmentList_ManifestParameters(props *KubeVolumeAttachmentListProps) error { + return nil +} + +func validateKubeVolumeAttachmentList_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeVolumeAttachmentListParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttachmentProps.go b/pods/imports/k8s/KubeVolumeAttachmentProps.go new file mode 100644 index 000000000..bf7dbd510 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachmentProps.go @@ -0,0 +1,15 @@ +package k8s + +// VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node. +// +// VolumeAttachment objects are non-namespaced. +type KubeVolumeAttachmentProps struct { + // spec represents specification of the desired attach/detach volume behavior. + // + // Populated by the Kubernetes system. + Spec *VolumeAttachmentSpec `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeVolumeAttachment__checks.go b/pods/imports/k8s/KubeVolumeAttachment__checks.go new file mode 100644 index 000000000..68cc646ac --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachment__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeVolumeAttachment_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttachment_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttachment_ManifestParameters(props *KubeVolumeAttachmentProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeVolumeAttachment_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeVolumeAttachmentParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttachment__no_checks.go b/pods/imports/k8s/KubeVolumeAttachment__no_checks.go new file mode 100644 index 000000000..841985f82 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttachment__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeVolumeAttachment_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeVolumeAttachment_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeVolumeAttachment_ManifestParameters(props *KubeVolumeAttachmentProps) error { + return nil +} + +func validateKubeVolumeAttachment_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeVolumeAttachmentParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) error { + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go new file mode 100644 index 000000000..d64ed10cb --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. +type KubeVolumeAttributesClassListV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeVolumeAttributesClassListV1Alpha1 +type jsiiProxy_KubeVolumeAttributesClassListV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" API object. +func NewKubeVolumeAttributesClassListV1Alpha1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) KubeVolumeAttributesClassListV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeVolumeAttributesClassListV1Alpha1{} + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" API object. +func NewKubeVolumeAttributesClassListV1Alpha1_Override(k KubeVolumeAttributesClassListV1Alpha1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeVolumeAttributesClassListV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeVolumeAttributesClassListV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeVolumeAttributesClassListV1Alpha1_Manifest(props *KubeVolumeAttributesClassListV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeVolumeAttributesClassListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeVolumeAttributesClassListV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go new file mode 100644 index 000000000..990f5fd0d --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go @@ -0,0 +1,9 @@ +package k8s + +// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. +type KubeVolumeAttributesClassListV1Alpha1Props struct { + // items is the list of VolumeAttributesClass objects. + Items *[]*KubeVolumeAttributesClassV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go new file mode 100644 index 000000000..69199333d --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeVolumeAttributesClassListV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassListV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassListV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassListV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go new file mode 100644 index 000000000..c9ac717a8 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeVolumeAttributesClassListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassListV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassListV1Alpha1Props) error { + return nil +} + +func validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go new file mode 100644 index 000000000..661f36b39 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go @@ -0,0 +1,315 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. +type KubeVolumeAttributesClassListV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeVolumeAttributesClassListV1Beta1 +type jsiiProxy_KubeVolumeAttributesClassListV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClassList" API object. +func NewKubeVolumeAttributesClassListV1Beta1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) KubeVolumeAttributesClassListV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeVolumeAttributesClassListV1Beta1{} + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassListV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClassList" API object. +func NewKubeVolumeAttributesClassListV1Beta1_Override(k KubeVolumeAttributesClassListV1Beta1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassListV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeVolumeAttributesClassListV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeVolumeAttributesClassListV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1beta1.VolumeAttributesClassList". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeVolumeAttributesClassListV1Beta1_Manifest(props *KubeVolumeAttributesClassListV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeVolumeAttributesClassListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassListV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeVolumeAttributesClassListV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeVolumeAttributesClassListV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go new file mode 100644 index 000000000..4baa65995 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go @@ -0,0 +1,9 @@ +package k8s + +// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. +type KubeVolumeAttributesClassListV1Beta1Props struct { + // items is the list of VolumeAttributesClass objects. + Items *[]*KubeVolumeAttributesClassV1Beta1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go new file mode 100644 index 000000000..74516dd75 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeVolumeAttributesClassListV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassListV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassListV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassListV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go new file mode 100644 index 000000000..42cdd2696 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeVolumeAttributesClassListV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassListV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassListV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassListV1Beta1Props) error { + return nil +} + +func validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go new file mode 100644 index 000000000..bbdfb58cc --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. +// +// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. +type KubeVolumeAttributesClassV1Alpha1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeVolumeAttributesClassV1Alpha1 +type jsiiProxy_KubeVolumeAttributesClassV1Alpha1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" API object. +func NewKubeVolumeAttributesClassV1Alpha1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) KubeVolumeAttributesClassV1Alpha1 { + _init_.Initialize() + + if err := validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeVolumeAttributesClassV1Alpha1{} + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassV1Alpha1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" API object. +func NewKubeVolumeAttributesClassV1Alpha1_Override(k KubeVolumeAttributesClassV1Alpha1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassV1Alpha1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeVolumeAttributesClassV1Alpha1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Alpha1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Alpha1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeVolumeAttributesClassV1Alpha1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Alpha1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Alpha1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1alpha1.VolumeAttributesClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeVolumeAttributesClassV1Alpha1_Manifest(props *KubeVolumeAttributesClassV1Alpha1Props) interface{} { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Alpha1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Alpha1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeVolumeAttributesClassV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Alpha1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeVolumeAttributesClassV1Alpha1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeVolumeAttributesClassV1Alpha1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go new file mode 100644 index 000000000..23959ec09 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go @@ -0,0 +1,19 @@ +package k8s + +// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. +// +// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. +type KubeVolumeAttributesClassV1Alpha1Props struct { + // Name of the CSI driver This field is immutable. + DriverName *string `field:"required" json:"driverName" yaml:"driverName"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // parameters hold volume attributes defined by the CSI driver. + // + // These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. + // + // This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. + Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go new file mode 100644 index 000000000..f437f6990 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeVolumeAttributesClassV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassV1Alpha1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go new file mode 100644 index 000000000..8b030f4a9 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeVolumeAttributesClassV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassV1Alpha1Props) error { + return nil +} + +func validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) error { + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go new file mode 100644 index 000000000..1e9009a24 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go @@ -0,0 +1,317 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/k8s/internal" +) + +// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. +// +// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. +type KubeVolumeAttributesClassV1Beta1 interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for KubeVolumeAttributesClassV1Beta1 +type jsiiProxy_KubeVolumeAttributesClassV1Beta1 struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + +// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClass" API object. +func NewKubeVolumeAttributesClassV1Beta1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) KubeVolumeAttributesClassV1Beta1 { + _init_.Initialize() + + if err := validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_KubeVolumeAttributesClassV1Beta1{} + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassV1Beta1", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClass" API object. +func NewKubeVolumeAttributesClassV1Beta1_Override(k KubeVolumeAttributesClassV1Beta1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) { + _init_.Initialize() + + _jsii_.Create( + "k8s.KubeVolumeAttributesClassV1Beta1", + []interface{}{scope, id, props}, + k, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func KubeVolumeAttributesClassV1Beta1_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Beta1_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Beta1", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func KubeVolumeAttributesClassV1Beta1_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Beta1_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Beta1", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "io.k8s.api.storage.v1beta1.VolumeAttributesClass". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func KubeVolumeAttributesClassV1Beta1_Manifest(props *KubeVolumeAttributesClassV1Beta1Props) interface{} { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Beta1_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Beta1", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func KubeVolumeAttributesClassV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateKubeVolumeAttributesClassV1Beta1_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "k8s.KubeVolumeAttributesClassV1Beta1", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func KubeVolumeAttributesClassV1Beta1_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "k8s.KubeVolumeAttributesClassV1Beta1", + "GVK", + &returns, + ) + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addDependency", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + k, + "addJsonPatch", + args, + ) +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + k, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ToString() *string { + var returns *string + + _jsii_.Invoke( + k, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go new file mode 100644 index 000000000..cdc203ef2 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go @@ -0,0 +1,19 @@ +package k8s + +// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. +// +// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. +type KubeVolumeAttributesClassV1Beta1Props struct { + // Name of the CSI driver This field is immutable. + DriverName *string `field:"required" json:"driverName" yaml:"driverName"` + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // parameters hold volume attributes defined by the CSI driver. + // + // These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. + // + // This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. + Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go new file mode 100644 index 000000000..0c16de487 --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go @@ -0,0 +1,65 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeVolumeAttributesClassV1Beta1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassV1Beta1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeVolumeAttributesClassV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassV1Beta1Props) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeVolumeAttributesClassV1Beta1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go new file mode 100644 index 000000000..f37cecfff --- /dev/null +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go @@ -0,0 +1,25 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeVolumeAttributesClassV1Beta1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassV1Beta1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeVolumeAttributesClassV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassV1Beta1Props) error { + return nil +} + +func validateKubeVolumeAttributesClassV1Beta1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) error { + return nil +} diff --git a/pods/imports/k8s/LabelSelector.go b/pods/imports/k8s/LabelSelector.go new file mode 100644 index 000000000..ca2eab212 --- /dev/null +++ b/pods/imports/k8s/LabelSelector.go @@ -0,0 +1,15 @@ +package k8s + +// A label selector is a label query over a set of resources. +// +// The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. +type LabelSelector struct { + // matchExpressions is a list of label selector requirements. + // + // The requirements are ANDed. + MatchExpressions *[]*LabelSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` + // matchLabels is a map of {key,value} pairs. + // + // A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + MatchLabels *map[string]*string `field:"optional" json:"matchLabels" yaml:"matchLabels"` +} diff --git a/pods/imports/k8s/LabelSelectorAttributes.go b/pods/imports/k8s/LabelSelectorAttributes.go new file mode 100644 index 000000000..3afb5362d --- /dev/null +++ b/pods/imports/k8s/LabelSelectorAttributes.go @@ -0,0 +1,15 @@ +package k8s + +// LabelSelectorAttributes indicates a label limited access. +// +// Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid. +type LabelSelectorAttributes struct { + // rawSelector is the serialization of a field selector that would be included in a query parameter. + // + // Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present. + RawSelector *string `field:"optional" json:"rawSelector" yaml:"rawSelector"` + // requirements is the parsed interpretation of a label selector. + // + // All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood. + Requirements *[]*LabelSelectorRequirement `field:"optional" json:"requirements" yaml:"requirements"` +} diff --git a/pods/imports/k8s/LabelSelectorRequirement.go b/pods/imports/k8s/LabelSelectorRequirement.go new file mode 100644 index 000000000..fb9dfae0a --- /dev/null +++ b/pods/imports/k8s/LabelSelectorRequirement.go @@ -0,0 +1,15 @@ +package k8s + +// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +type LabelSelectorRequirement struct { + // key is the label key that the selector applies to. + Key *string `field:"required" json:"key" yaml:"key"` + // operator represents a key's relationship to a set of values. + // + // Valid operators are In, NotIn, Exists and DoesNotExist. + Operator *string `field:"required" json:"operator" yaml:"operator"` + // values is an array of string values. + // + // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + Values *[]*string `field:"optional" json:"values" yaml:"values"` +} diff --git a/pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go b/pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go new file mode 100644 index 000000000..526bc26bf --- /dev/null +++ b/pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go @@ -0,0 +1,33 @@ +package k8s + +import ( + "time" +) + +// LeaseCandidateSpec is a specification of a Lease. +type LeaseCandidateSpecV1Alpha2 struct { + // BinaryVersion is the binary version. + // + // It must be in a semver format without leading `v`. This field is required. + BinaryVersion *string `field:"required" json:"binaryVersion" yaml:"binaryVersion"` + // LeaseName is the name of the lease for which this candidate is contending. + // + // This field is immutable. + LeaseName *string `field:"required" json:"leaseName" yaml:"leaseName"` + // Strategy is the strategy that coordinated leader election will use for picking the leader. + // + // If multiple candidates for the same Lease return different strategies, the strategy provided by the candidate with the latest BinaryVersion will be used. If there is still conflict, this is a user error and coordinated leader election will not operate the Lease until resolved. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. + Strategy *string `field:"required" json:"strategy" yaml:"strategy"` + // EmulationVersion is the emulation version. + // + // It must be in a semver format without leading `v`. EmulationVersion must be less than or equal to BinaryVersion. This field is required when strategy is "OldestEmulationVersion" + EmulationVersion *string `field:"optional" json:"emulationVersion" yaml:"emulationVersion"` + // PingTime is the last time that the server has requested the LeaseCandidate to renew. + // + // It is only done during leader election to check if any LeaseCandidates have become ineligible. When PingTime is updated, the LeaseCandidate will respond by updating RenewTime. + PingTime *time.Time `field:"optional" json:"pingTime" yaml:"pingTime"` + // RenewTime is the time that the LeaseCandidate was last updated. + // + // Any time a Lease needs to do leader election, the PingTime field is updated to signal to the LeaseCandidate that they should update the RenewTime. Old LeaseCandidate objects are also garbage collected if it has been hours since the last renew. The PingTime field is updated regularly to prevent garbage collection for still active LeaseCandidates. + RenewTime *time.Time `field:"optional" json:"renewTime" yaml:"renewTime"` +} diff --git a/pods/imports/k8s/LeaseSpec.go b/pods/imports/k8s/LeaseSpec.go new file mode 100644 index 000000000..e3f2dcbd0 --- /dev/null +++ b/pods/imports/k8s/LeaseSpec.go @@ -0,0 +1,31 @@ +package k8s + +import ( + "time" +) + +// LeaseSpec is a specification of a Lease. +type LeaseSpec struct { + // acquireTime is a time when the current lease was acquired. + AcquireTime *time.Time `field:"optional" json:"acquireTime" yaml:"acquireTime"` + // holderIdentity contains the identity of the holder of a current lease. + // + // If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field. + HolderIdentity *string `field:"optional" json:"holderIdentity" yaml:"holderIdentity"` + // leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. + // + // This is measured against the time of last observed renewTime. + LeaseDurationSeconds *float64 `field:"optional" json:"leaseDurationSeconds" yaml:"leaseDurationSeconds"` + // leaseTransitions is the number of transitions of a lease between holders. + LeaseTransitions *float64 `field:"optional" json:"leaseTransitions" yaml:"leaseTransitions"` + // PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up. + // + // This field can only be set if Strategy is also set. + PreferredHolder *string `field:"optional" json:"preferredHolder" yaml:"preferredHolder"` + // renewTime is a time when the current holder of a lease has last updated the lease. + RenewTime *time.Time `field:"optional" json:"renewTime" yaml:"renewTime"` + // Strategy indicates the strategy for picking the leader for coordinated leader election. + // + // If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. + Strategy *string `field:"optional" json:"strategy" yaml:"strategy"` +} diff --git a/pods/imports/k8s/Lifecycle.go b/pods/imports/k8s/Lifecycle.go new file mode 100644 index 000000000..7d3ba7b99 --- /dev/null +++ b/pods/imports/k8s/Lifecycle.go @@ -0,0 +1,15 @@ +package k8s + +// Lifecycle describes actions that the management system should take in response to container lifecycle events. +// +// For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted. +type Lifecycle struct { + // PostStart is called immediately after a container is created. + // + // If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + PostStart *LifecycleHandler `field:"optional" json:"postStart" yaml:"postStart"` + // PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. + // + // The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + PreStop *LifecycleHandler `field:"optional" json:"preStop" yaml:"preStop"` +} diff --git a/pods/imports/k8s/LifecycleHandler.go b/pods/imports/k8s/LifecycleHandler.go new file mode 100644 index 000000000..5cd58424a --- /dev/null +++ b/pods/imports/k8s/LifecycleHandler.go @@ -0,0 +1,17 @@ +package k8s + +// LifecycleHandler defines a specific action that should be taken in a lifecycle hook. +// +// One and only one of the fields, except TCPSocket must be specified. +type LifecycleHandler struct { + // Exec specifies a command to execute in the container. + Exec *ExecAction `field:"optional" json:"exec" yaml:"exec"` + // HTTPGet specifies an HTTP GET request to perform. + HttpGet *HttpGetAction `field:"optional" json:"httpGet" yaml:"httpGet"` + // Sleep represents a duration that the container should sleep. + Sleep *SleepAction `field:"optional" json:"sleep" yaml:"sleep"` + // Deprecated. + // + // TCPSocket is NOT supported as a LifecycleHandler and kept for backward compatibility. There is no validation of this field and lifecycle hooks will fail at runtime when it is specified. + TcpSocket *TcpSocketAction `field:"optional" json:"tcpSocket" yaml:"tcpSocket"` +} diff --git a/pods/imports/k8s/LimitRangeItem.go b/pods/imports/k8s/LimitRangeItem.go new file mode 100644 index 000000000..02c241193 --- /dev/null +++ b/pods/imports/k8s/LimitRangeItem.go @@ -0,0 +1,19 @@ +package k8s + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind. +type LimitRangeItem struct { + // Type of resource that this limit applies to. + Type *string `field:"required" json:"type" yaml:"type"` + // Default resource requirement limit value by resource name if resource limit is omitted. + Default *map[string]Quantity `field:"optional" json:"default" yaml:"default"` + // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. + DefaultRequest *map[string]Quantity `field:"optional" json:"defaultRequest" yaml:"defaultRequest"` + // Max usage constraints on this kind by resource name. + Max *map[string]Quantity `field:"optional" json:"max" yaml:"max"` + // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; + // + // this represents the max burst for the named resource. + MaxLimitRequestRatio *map[string]Quantity `field:"optional" json:"maxLimitRequestRatio" yaml:"maxLimitRequestRatio"` + // Min usage constraints on this kind by resource name. + Min *map[string]Quantity `field:"optional" json:"min" yaml:"min"` +} diff --git a/pods/imports/k8s/LimitRangeSpec.go b/pods/imports/k8s/LimitRangeSpec.go new file mode 100644 index 000000000..cb05cfcfb --- /dev/null +++ b/pods/imports/k8s/LimitRangeSpec.go @@ -0,0 +1,7 @@ +package k8s + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind. +type LimitRangeSpec struct { + // Limits is the list of LimitRangeItem objects that are enforced. + Limits *[]*LimitRangeItem `field:"required" json:"limits" yaml:"limits"` +} diff --git a/pods/imports/k8s/LimitResponse.go b/pods/imports/k8s/LimitResponse.go new file mode 100644 index 000000000..99fc7555c --- /dev/null +++ b/pods/imports/k8s/LimitResponse.go @@ -0,0 +1,13 @@ +package k8s + +// LimitResponse defines how to handle requests that can not be executed right now. +type LimitResponse struct { + // `type` is "Queue" or "Reject". + // + // "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required. + Type *string `field:"required" json:"type" yaml:"type"` + // `queuing` holds the configuration parameters for queuing. + // + // This field may be non-empty only if `type` is `"Queue"`. + Queuing *QueuingConfiguration `field:"optional" json:"queuing" yaml:"queuing"` +} diff --git a/pods/imports/k8s/LimitedPriorityLevelConfiguration.go b/pods/imports/k8s/LimitedPriorityLevelConfiguration.go new file mode 100644 index 000000000..3bb132242 --- /dev/null +++ b/pods/imports/k8s/LimitedPriorityLevelConfiguration.go @@ -0,0 +1,37 @@ +package k8s + +// LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. +// +// It addresses two issues: +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? +type LimitedPriorityLevelConfiguration struct { + // `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. + // + // The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. + // + // BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) + // + // The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. + BorrowingLimitPercent *float64 `field:"optional" json:"borrowingLimitPercent" yaml:"borrowingLimitPercent"` + // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. + // + // The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. + // + // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) + LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` + // `limitResponse` indicates what to do with requests that can not be executed right now. + LimitResponse *LimitResponse `field:"optional" json:"limitResponse" yaml:"limitResponse"` + // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. + // + // This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: + // + // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) + // + // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. + // + // If not specified, this field defaults to a value of 30. + // + // Setting this field to zero supports the construction of a "jail" for this priority level that is used to hold some request(s). + NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` +} diff --git a/pods/imports/k8s/ListMeta.go b/pods/imports/k8s/ListMeta.go new file mode 100644 index 000000000..50feff07d --- /dev/null +++ b/pods/imports/k8s/ListMeta.go @@ -0,0 +1,21 @@ +package k8s + +// ListMeta describes metadata that synthetic resources must have, including lists and various status objects. +// +// A resource may have only one of {ObjectMeta, ListMeta}. +type ListMeta struct { + // continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. + // + // The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message. + Continue *string `field:"optional" json:"continue" yaml:"continue"` + // remainingItemCount is the number of subsequent items in the list which are not included in this list response. + // + // If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact. + RemainingItemCount *float64 `field:"optional" json:"remainingItemCount" yaml:"remainingItemCount"` + // String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. + // + // Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` + // Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. + SelfLink *string `field:"optional" json:"selfLink" yaml:"selfLink"` +} diff --git a/pods/imports/k8s/LocalObjectReference.go b/pods/imports/k8s/LocalObjectReference.go new file mode 100644 index 000000000..a7bb78103 --- /dev/null +++ b/pods/imports/k8s/LocalObjectReference.go @@ -0,0 +1,9 @@ +package k8s + +// LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +type LocalObjectReference struct { + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/LocalVolumeSource.go b/pods/imports/k8s/LocalVolumeSource.go new file mode 100644 index 000000000..91ca157f1 --- /dev/null +++ b/pods/imports/k8s/LocalVolumeSource.go @@ -0,0 +1,13 @@ +package k8s + +// Local represents directly-attached storage with node affinity. +type LocalVolumeSource struct { + // path of the full path to the volume on the node. + // + // It can be either a directory or block device (disk, partition, ...). + Path *string `field:"required" json:"path" yaml:"path"` + // fsType is the filesystem type to mount. + // + // It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` +} diff --git a/pods/imports/k8s/ManagedFieldsEntry.go b/pods/imports/k8s/ManagedFieldsEntry.go new file mode 100644 index 000000000..9f6b74cca --- /dev/null +++ b/pods/imports/k8s/ManagedFieldsEntry.go @@ -0,0 +1,33 @@ +package k8s + +import ( + "time" +) + +// ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to. +type ManagedFieldsEntry struct { + // APIVersion defines the version of this resource that this field set applies to. + // + // The format is "group/version" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // FieldsType is the discriminator for the different fields format and version. + // + // There is currently only one possible value: "FieldsV1". + FieldsType *string `field:"optional" json:"fieldsType" yaml:"fieldsType"` + // FieldsV1 holds the first JSON version format as described in the "FieldsV1" type. + FieldsV1 interface{} `field:"optional" json:"fieldsV1" yaml:"fieldsV1"` + // Manager is an identifier of the workflow managing these fields. + Manager *string `field:"optional" json:"manager" yaml:"manager"` + // Operation is the type of operation which lead to this ManagedFieldsEntry being created. + // + // The only valid values for this field are 'Apply' and 'Update'. + Operation *string `field:"optional" json:"operation" yaml:"operation"` + // Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. + // + // The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource. + Subresource *string `field:"optional" json:"subresource" yaml:"subresource"` + // Time is the timestamp of when the ManagedFields entry was added. + // + // The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over. + Time *time.Time `field:"optional" json:"time" yaml:"time"` +} diff --git a/pods/imports/k8s/MatchCondition.go b/pods/imports/k8s/MatchCondition.go new file mode 100644 index 000000000..3f720ba02 --- /dev/null +++ b/pods/imports/k8s/MatchCondition.go @@ -0,0 +1,23 @@ +package k8s + +// MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook. +type MatchCondition struct { + // Expression represents the expression which will be evaluated by CEL. + // + // Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: + // + // 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ + // + // Required. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. + // + // A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') + // + // Required. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/MatchConditionV1Alpha1.go b/pods/imports/k8s/MatchConditionV1Alpha1.go new file mode 100644 index 000000000..07e05e83f --- /dev/null +++ b/pods/imports/k8s/MatchConditionV1Alpha1.go @@ -0,0 +1,22 @@ +package k8s + +type MatchConditionV1Alpha1 struct { + // Expression represents the expression which will be evaluated by CEL. + // + // Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: + // + // 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ + // + // Required. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. + // + // A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') + // + // Required. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/MatchConditionV1Beta1.go b/pods/imports/k8s/MatchConditionV1Beta1.go new file mode 100644 index 000000000..3fef6bd1d --- /dev/null +++ b/pods/imports/k8s/MatchConditionV1Beta1.go @@ -0,0 +1,23 @@ +package k8s + +// MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook. +type MatchConditionV1Beta1 struct { + // Expression represents the expression which will be evaluated by CEL. + // + // Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: + // + // 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ + // + // Required. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. + // + // A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') + // + // Required. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/MatchResources.go b/pods/imports/k8s/MatchResources.go new file mode 100644 index 000000000..389e95355 --- /dev/null +++ b/pods/imports/k8s/MatchResources.go @@ -0,0 +1,67 @@ +package k8s + +// MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. +// +// The exclude rules take precedence over include rules (if a resource matches both, it is excluded). +type MatchResources struct { + // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. + // + // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). + ExcludeResourceRules *[]*NamedRuleWithOperations `field:"optional" json:"excludeResourceRules" yaml:"excludeResourceRules"` + // matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". + // + // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. + // + // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. + // + // Defaults to "Equivalent". + // Default: Equivalent". + // + MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` + // NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. + // + // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. + // + // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "runlevel", + // "operator": "NotIn", + // "values": [ + // "0", + // "1" + // ] + // } + // ] + // } + // + // If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "environment", + // "operator": "In", + // "values": [ + // "prod", + // "staging" + // ] + // } + // ] + // } + // + // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. + // + // Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // ObjectSelector decides whether to run the validation based on if the object has matching labels. + // + // objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` + // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. + // + // The policy cares about an operation if it matches _any_ Rule. + ResourceRules *[]*NamedRuleWithOperations `field:"optional" json:"resourceRules" yaml:"resourceRules"` +} diff --git a/pods/imports/k8s/MatchResourcesV1Alpha1.go b/pods/imports/k8s/MatchResourcesV1Alpha1.go new file mode 100644 index 000000000..d75733431 --- /dev/null +++ b/pods/imports/k8s/MatchResourcesV1Alpha1.go @@ -0,0 +1,67 @@ +package k8s + +// MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. +// +// The exclude rules take precedence over include rules (if a resource matches both, it is excluded). +type MatchResourcesV1Alpha1 struct { + // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. + // + // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). + ExcludeResourceRules *[]*NamedRuleWithOperationsV1Alpha1 `field:"optional" json:"excludeResourceRules" yaml:"excludeResourceRules"` + // matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". + // + // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. + // + // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. + // + // Defaults to "Equivalent". + // Default: Equivalent". + // + MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` + // NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. + // + // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. + // + // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "runlevel", + // "operator": "NotIn", + // "values": [ + // "0", + // "1" + // ] + // } + // ] + // } + // + // If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "environment", + // "operator": "In", + // "values": [ + // "prod", + // "staging" + // ] + // } + // ] + // } + // + // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. + // + // Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // ObjectSelector decides whether to run the validation based on if the object has matching labels. + // + // objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` + // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. + // + // The policy cares about an operation if it matches _any_ Rule. + ResourceRules *[]*NamedRuleWithOperationsV1Alpha1 `field:"optional" json:"resourceRules" yaml:"resourceRules"` +} diff --git a/pods/imports/k8s/MatchResourcesV1Beta1.go b/pods/imports/k8s/MatchResourcesV1Beta1.go new file mode 100644 index 000000000..bef8f849c --- /dev/null +++ b/pods/imports/k8s/MatchResourcesV1Beta1.go @@ -0,0 +1,67 @@ +package k8s + +// MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. +// +// The exclude rules take precedence over include rules (if a resource matches both, it is excluded). +type MatchResourcesV1Beta1 struct { + // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. + // + // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). + ExcludeResourceRules *[]*NamedRuleWithOperationsV1Beta1 `field:"optional" json:"excludeResourceRules" yaml:"excludeResourceRules"` + // matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". + // + // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. + // + // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. + // + // Defaults to "Equivalent". + // Default: Equivalent". + // + MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` + // NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. + // + // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. + // + // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "runlevel", + // "operator": "NotIn", + // "values": [ + // "0", + // "1" + // ] + // } + // ] + // } + // + // If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "environment", + // "operator": "In", + // "values": [ + // "prod", + // "staging" + // ] + // } + // ] + // } + // + // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. + // + // Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // ObjectSelector decides whether to run the validation based on if the object has matching labels. + // + // objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` + // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. + // + // The policy cares about an operation if it matches _any_ Rule. + ResourceRules *[]*NamedRuleWithOperationsV1Beta1 `field:"optional" json:"resourceRules" yaml:"resourceRules"` +} diff --git a/pods/imports/k8s/MetricIdentifierV2.go b/pods/imports/k8s/MetricIdentifierV2.go new file mode 100644 index 000000000..93b0feb17 --- /dev/null +++ b/pods/imports/k8s/MetricIdentifierV2.go @@ -0,0 +1,11 @@ +package k8s + +// MetricIdentifier defines the name and optionally selector for a metric. +type MetricIdentifierV2 struct { + // name is the name of the given metric. + Name *string `field:"required" json:"name" yaml:"name"` + // selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. + // + // When unset, just the metricName will be used to gather metrics. + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` +} diff --git a/pods/imports/k8s/MetricSpecV2.go b/pods/imports/k8s/MetricSpecV2.go new file mode 100644 index 000000000..eb6b69d02 --- /dev/null +++ b/pods/imports/k8s/MetricSpecV2.go @@ -0,0 +1,23 @@ +package k8s + +// MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once). +type MetricSpecV2 struct { + // type is the type of metric source. + // + // It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. + Type *string `field:"required" json:"type" yaml:"type"` + // containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. + ContainerResource *ContainerResourceMetricSourceV2 `field:"optional" json:"containerResource" yaml:"containerResource"` + // external refers to a global metric that is not associated with any Kubernetes object. + // + // It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). + External *ExternalMetricSourceV2 `field:"optional" json:"external" yaml:"external"` + // object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object). + Object *ObjectMetricSourceV2 `field:"optional" json:"object" yaml:"object"` + // pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). + // + // The values will be averaged together before being compared to the target value. + Pods *PodsMetricSourceV2 `field:"optional" json:"pods" yaml:"pods"` + // resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. + Resource *ResourceMetricSourceV2 `field:"optional" json:"resource" yaml:"resource"` +} diff --git a/pods/imports/k8s/MetricTargetV2.go b/pods/imports/k8s/MetricTargetV2.go new file mode 100644 index 000000000..6af5c9be7 --- /dev/null +++ b/pods/imports/k8s/MetricTargetV2.go @@ -0,0 +1,15 @@ +package k8s + +// MetricTarget defines the target value, average value, or average utilization of a specific metric. +type MetricTargetV2 struct { + // type represents whether the metric type is Utilization, Value, or AverageValue. + Type *string `field:"required" json:"type" yaml:"type"` + // averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. + // + // Currently only valid for Resource metric source type. + AverageUtilization *float64 `field:"optional" json:"averageUtilization" yaml:"averageUtilization"` + // averageValue is the target value of the average of the metric across all relevant pods (as a quantity). + AverageValue Quantity `field:"optional" json:"averageValue" yaml:"averageValue"` + // value is the target value of the metric (as a quantity). + Value Quantity `field:"optional" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go b/pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go new file mode 100644 index 000000000..7f7fd3280 --- /dev/null +++ b/pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go @@ -0,0 +1,17 @@ +package k8s + +// MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding. +type MutatingAdmissionPolicyBindingSpecV1Alpha1 struct { + // matchResources limits what resources match this binding and may be mutated by it. + // + // Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and matchConditions before the resource may be mutated. When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints and matchConditions must match for the resource to be mutated. Additionally, matchResources.resourceRules are optional and do not constraint matching when unset. Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required. The CREATE, UPDATE and CONNECT operations are allowed. The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT. + MatchResources *MatchResourcesV1Alpha1 `field:"optional" json:"matchResources" yaml:"matchResources"` + // paramRef specifies the parameter resource used to configure the admission control policy. + // + // It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. + ParamRef *ParamRefV1Alpha1 `field:"optional" json:"paramRef" yaml:"paramRef"` + // policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to. + // + // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. + PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` +} diff --git a/pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go b/pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go new file mode 100644 index 000000000..0890f27cb --- /dev/null +++ b/pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go @@ -0,0 +1,56 @@ +package k8s + +// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy. +type MutatingAdmissionPolicySpecV1Alpha1 struct { + // failurePolicy defines how to handle failures for the admission policy. + // + // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. + // + // A policy is invalid if paramKind refers to a non-existent Kind. A binding is invalid if paramRef.name refers to a non-existent resource. + // + // failurePolicy does not define how validations that evaluate to false are handled. + // + // Allowed values are Ignore or Fail. Defaults to Fail. + // Default: Fail. + // + FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` + // matchConditions is a list of conditions that must be met for a request to be validated. + // + // Match conditions filter requests that have already been matched by the matchConstraints. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + // + // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. + // + // The exact matching logic is (in order): + // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. + // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. + // 3. If any matchCondition evaluates to an error (but none are FALSE): + // - If failurePolicy=Fail, reject the request + // - If failurePolicy=Ignore, the policy is skipped. + MatchConditions *[]*MatchConditionV1Alpha1 `field:"optional" json:"matchConditions" yaml:"matchConditions"` + // matchConstraints specifies what resources this policy is designed to validate. + // + // The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding. The CREATE, UPDATE and CONNECT operations are allowed. The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT. Required. + MatchConstraints *MatchResourcesV1Alpha1 `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` + // mutations contain operations to perform on matching objects. + // + // mutations may not be empty; a minimum of one mutation is required. mutations are evaluated in order, and are reinvoked according to the reinvocationPolicy. The mutations of a policy are invoked for each binding of this policy and reinvocation of mutations occurs on a per binding basis. + Mutations *[]*MutationV1Alpha1 `field:"optional" json:"mutations" yaml:"mutations"` + // paramKind specifies the kind of resources used to parameterize this policy. + // + // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null. + ParamKind *ParamKindV1Alpha1 `field:"optional" json:"paramKind" yaml:"paramKind"` + // reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding as part of a single admission evaluation. + // + // Allowed values are "Never" and "IfNeeded". + // + // Never: These mutations will not be called more than once per binding in a single admission evaluation. + // + // IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies. Mutations are only reinvoked when mutations change the object after this mutation is invoked. Required. + ReinvocationPolicy *string `field:"optional" json:"reinvocationPolicy" yaml:"reinvocationPolicy"` + // variables contain definitions of variables that can be used in composition of other expressions. + // + // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except matchConditions because matchConditions are evaluated before the rest of the policy. + // + // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, variables must be sorted by the order of first appearance and acyclic. + Variables *[]*VariableV1Alpha1 `field:"optional" json:"variables" yaml:"variables"` +} diff --git a/pods/imports/k8s/MutatingWebhook.go b/pods/imports/k8s/MutatingWebhook.go new file mode 100644 index 000000000..e106c759f --- /dev/null +++ b/pods/imports/k8s/MutatingWebhook.go @@ -0,0 +1,112 @@ +package k8s + +// MutatingWebhook describes an admission webhook and the resources and operations it applies to. +type MutatingWebhook struct { + // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. + // + // API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. + AdmissionReviewVersions *[]*string `field:"required" json:"admissionReviewVersions" yaml:"admissionReviewVersions"` + // ClientConfig defines how to communicate with the hook. + // + // Required. + ClientConfig *WebhookClientConfig `field:"required" json:"clientConfig" yaml:"clientConfig"` + // The name of the admission webhook. + // + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required. + Name *string `field:"required" json:"name" yaml:"name"` + // SideEffects states whether this webhook has side effects. + // + // Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. + SideEffects *string `field:"required" json:"sideEffects" yaml:"sideEffects"` + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. + // + // Defaults to Fail. + // Default: Fail. + // + FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` + // MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. + // + // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + // + // The exact matching logic is (in order): + // 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. + // 2. If ALL matchConditions evaluate to TRUE, the webhook is called. + // 3. If any matchCondition evaluates to an error (but none are FALSE): + // - If failurePolicy=Fail, reject the request + // - If failurePolicy=Ignore, the error is ignored and the webhook is skipped. + MatchConditions *[]*MatchCondition `field:"optional" json:"matchConditions" yaml:"matchConditions"` + // matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". + // + // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. + // + // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. + // + // Defaults to "Equivalent". + // Default: Equivalent". + // + MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` + // NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. + // + // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook. + // + // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "runlevel", + // "operator": "NotIn", + // "values": [ + // "0", + // "1" + // ] + // } + // ] + // } + // + // If instead you want to only run the webhook on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "environment", + // "operator": "In", + // "values": [ + // "prod", + // "staging" + // ] + // } + // ] + // } + // + // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. + // + // Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // ObjectSelector decides whether to run the webhook based on if the object has matching labels. + // + // objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` + // reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. + // + // Allowed values are "Never" and "IfNeeded". + // + // Never: the webhook will not be called more than once in a single admission evaluation. + // + // IfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead. + // + // Defaults to "Never". + // Default: Never". + // + ReinvocationPolicy *string `field:"optional" json:"reinvocationPolicy" yaml:"reinvocationPolicy"` + // Rules describes what operations on what resources/subresources the webhook cares about. + // + // The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. + Rules *[]*RuleWithOperations `field:"optional" json:"rules" yaml:"rules"` + // TimeoutSeconds specifies the timeout for this webhook. + // + // After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. + // Default: 10 seconds. + // + TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` +} diff --git a/pods/imports/k8s/MutationV1Alpha1.go b/pods/imports/k8s/MutationV1Alpha1.go new file mode 100644 index 000000000..783a7370c --- /dev/null +++ b/pods/imports/k8s/MutationV1Alpha1.go @@ -0,0 +1,15 @@ +package k8s + +// Mutation specifies the CEL expression which is used to apply the Mutation. +type MutationV1Alpha1 struct { + // patchType indicates the patch strategy used. + // + // Allowed values are "ApplyConfiguration" and "JSONPatch". Required. + PatchType *string `field:"required" json:"patchType" yaml:"patchType"` + // applyConfiguration defines the desired configuration values of an object. + // + // The configuration is applied to the admission object using [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff). A CEL expression is used to create apply configuration. + ApplyConfiguration *ApplyConfigurationV1Alpha1 `field:"optional" json:"applyConfiguration" yaml:"applyConfiguration"` + // jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object. A CEL expression is used to create the JSON patch. + JsonPatch *JsonPatchV1Alpha1 `field:"optional" json:"jsonPatch" yaml:"jsonPatch"` +} diff --git a/pods/imports/k8s/NamedRuleWithOperations.go b/pods/imports/k8s/NamedRuleWithOperations.go new file mode 100644 index 000000000..b3d8997e8 --- /dev/null +++ b/pods/imports/k8s/NamedRuleWithOperations.go @@ -0,0 +1,35 @@ +package k8s + +// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. +type NamedRuleWithOperations struct { + // APIGroups is the API groups the resources belong to. + // + // '*' is all groups. If '*' is present, the length of the slice must be one. Required. + ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` + // APIVersions is the API versions the resources belong to. + // + // '*' is all versions. If '*' is present, the length of the slice must be one. Required. + ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` + // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. + // + // If '*' is present, the length of the slice must be one. Required. + Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` + // ResourceNames is an optional white list of names that the rule applies to. + // + // An empty set means that everything is allowed. + ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` + // Resources is a list of resources this rule applies to. + // + // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. Required. + Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` + // scope specifies the scope of this rule. + // + // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". + // Default: . + // + Scope *string `field:"optional" json:"scope" yaml:"scope"` +} diff --git a/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go b/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go new file mode 100644 index 000000000..20b809804 --- /dev/null +++ b/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go @@ -0,0 +1,35 @@ +package k8s + +// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. +type NamedRuleWithOperationsV1Alpha1 struct { + // APIGroups is the API groups the resources belong to. + // + // '*' is all groups. If '*' is present, the length of the slice must be one. Required. + ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` + // APIVersions is the API versions the resources belong to. + // + // '*' is all versions. If '*' is present, the length of the slice must be one. Required. + ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` + // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. + // + // If '*' is present, the length of the slice must be one. Required. + Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` + // ResourceNames is an optional white list of names that the rule applies to. + // + // An empty set means that everything is allowed. + ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` + // Resources is a list of resources this rule applies to. + // + // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. Required. + Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` + // scope specifies the scope of this rule. + // + // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". + // Default: . + // + Scope *string `field:"optional" json:"scope" yaml:"scope"` +} diff --git a/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go b/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go new file mode 100644 index 000000000..1347d68ae --- /dev/null +++ b/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go @@ -0,0 +1,35 @@ +package k8s + +// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. +type NamedRuleWithOperationsV1Beta1 struct { + // APIGroups is the API groups the resources belong to. + // + // '*' is all groups. If '*' is present, the length of the slice must be one. Required. + ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` + // APIVersions is the API versions the resources belong to. + // + // '*' is all versions. If '*' is present, the length of the slice must be one. Required. + ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` + // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. + // + // If '*' is present, the length of the slice must be one. Required. + Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` + // ResourceNames is an optional white list of names that the rule applies to. + // + // An empty set means that everything is allowed. + ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` + // Resources is a list of resources this rule applies to. + // + // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. Required. + Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` + // scope specifies the scope of this rule. + // + // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". + // Default: . + // + Scope *string `field:"optional" json:"scope" yaml:"scope"` +} diff --git a/pods/imports/k8s/NamespaceSpec.go b/pods/imports/k8s/NamespaceSpec.go new file mode 100644 index 000000000..6627d0ae8 --- /dev/null +++ b/pods/imports/k8s/NamespaceSpec.go @@ -0,0 +1,9 @@ +package k8s + +// NamespaceSpec describes the attributes on a Namespace. +type NamespaceSpec struct { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. + // + // More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ + Finalizers *[]*string `field:"optional" json:"finalizers" yaml:"finalizers"` +} diff --git a/pods/imports/k8s/NetworkPolicyEgressRule.go b/pods/imports/k8s/NetworkPolicyEgressRule.go new file mode 100644 index 000000000..8ccadeb76 --- /dev/null +++ b/pods/imports/k8s/NetworkPolicyEgressRule.go @@ -0,0 +1,15 @@ +package k8s + +// NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. +// +// The traffic must match both ports and to. This type is beta-level in 1.8 +type NetworkPolicyEgressRule struct { + // ports is a list of destination ports for outgoing traffic. + // + // Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. + Ports *[]*NetworkPolicyPort `field:"optional" json:"ports" yaml:"ports"` + // to is a list of destinations for outgoing traffic of pods selected for this rule. + // + // Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list. + To *[]*NetworkPolicyPeer `field:"optional" json:"to" yaml:"to"` +} diff --git a/pods/imports/k8s/NetworkPolicyIngressRule.go b/pods/imports/k8s/NetworkPolicyIngressRule.go new file mode 100644 index 000000000..d4d4025e9 --- /dev/null +++ b/pods/imports/k8s/NetworkPolicyIngressRule.go @@ -0,0 +1,15 @@ +package k8s + +// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. +// +// The traffic must match both ports and from. +type NetworkPolicyIngressRule struct { + // from is a list of sources which should be able to access the pods selected for this rule. + // + // Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list. + From *[]*NetworkPolicyPeer `field:"optional" json:"from" yaml:"from"` + // ports is a list of ports which should be made accessible on the pods selected for this rule. + // + // Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. + Ports *[]*NetworkPolicyPort `field:"optional" json:"ports" yaml:"ports"` +} diff --git a/pods/imports/k8s/NetworkPolicyPeer.go b/pods/imports/k8s/NetworkPolicyPeer.go new file mode 100644 index 000000000..9e0b3fbe9 --- /dev/null +++ b/pods/imports/k8s/NetworkPolicyPeer.go @@ -0,0 +1,23 @@ +package k8s + +// NetworkPolicyPeer describes a peer to allow traffic to/from. +// +// Only certain combinations of fields are allowed. +type NetworkPolicyPeer struct { + // ipBlock defines policy on a particular IPBlock. + // + // If this field is set then neither of the other fields can be. + IpBlock *IpBlock `field:"optional" json:"ipBlock" yaml:"ipBlock"` + // namespaceSelector selects namespaces using cluster-scoped labels. + // + // This field follows standard label selector semantics; if present but empty, it selects all namespaces. + // + // If podSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the namespaces selected by namespaceSelector. Otherwise it selects all pods in the namespaces selected by namespaceSelector. + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // podSelector is a label selector which selects pods. + // + // This field follows standard label selector semantics; if present but empty, it selects all pods. + // + // If namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects the pods matching podSelector in the policy's own namespace. + PodSelector *LabelSelector `field:"optional" json:"podSelector" yaml:"podSelector"` +} diff --git a/pods/imports/k8s/NetworkPolicyPort.go b/pods/imports/k8s/NetworkPolicyPort.go new file mode 100644 index 000000000..9e6834559 --- /dev/null +++ b/pods/imports/k8s/NetworkPolicyPort.go @@ -0,0 +1,17 @@ +package k8s + +// NetworkPolicyPort describes a port to allow traffic on. +type NetworkPolicyPort struct { + // endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. + // + // This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. + EndPort *float64 `field:"optional" json:"endPort" yaml:"endPort"` + // port represents the port on the given protocol. + // + // This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched. + Port IntOrString `field:"optional" json:"port" yaml:"port"` + // protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. + // + // If not specified, this field defaults to TCP. + Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` +} diff --git a/pods/imports/k8s/NetworkPolicySpec.go b/pods/imports/k8s/NetworkPolicySpec.go new file mode 100644 index 000000000..235443c49 --- /dev/null +++ b/pods/imports/k8s/NetworkPolicySpec.go @@ -0,0 +1,21 @@ +package k8s + +// NetworkPolicySpec provides the specification of a NetworkPolicy. +type NetworkPolicySpec struct { + // podSelector selects the pods to which this NetworkPolicy object applies. + // + // The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace. + PodSelector *LabelSelector `field:"required" json:"podSelector" yaml:"podSelector"` + // egress is a list of egress rules to be applied to the selected pods. + // + // Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8 + Egress *[]*NetworkPolicyEgressRule `field:"optional" json:"egress" yaml:"egress"` + // ingress is a list of ingress rules to be applied to the selected pods. + // + // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default) + Ingress *[]*NetworkPolicyIngressRule `field:"optional" json:"ingress" yaml:"ingress"` + // policyTypes is a list of rule types that the NetworkPolicy relates to. + // + // Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8 + PolicyTypes *[]*string `field:"optional" json:"policyTypes" yaml:"policyTypes"` +} diff --git a/pods/imports/k8s/NfsVolumeSource.go b/pods/imports/k8s/NfsVolumeSource.go new file mode 100644 index 000000000..786289918 --- /dev/null +++ b/pods/imports/k8s/NfsVolumeSource.go @@ -0,0 +1,21 @@ +package k8s + +// Represents an NFS mount that lasts the lifetime of a pod. +// +// NFS volumes do not support ownership management or SELinux relabeling. +type NfsVolumeSource struct { + // path that is exported by the NFS server. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + Path *string `field:"required" json:"path" yaml:"path"` + // server is the hostname or IP address of the NFS server. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + Server *string `field:"required" json:"server" yaml:"server"` + // readOnly here will force the NFS export to be mounted with read-only permissions. + // + // Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // Default: false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/NodeAffinity.go b/pods/imports/k8s/NodeAffinity.go new file mode 100644 index 000000000..7eba138c8 --- /dev/null +++ b/pods/imports/k8s/NodeAffinity.go @@ -0,0 +1,13 @@ +package k8s + +// Node affinity is a group of node affinity scheduling rules. +type NodeAffinity struct { + // The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. + // + // The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution *[]*PreferredSchedulingTerm `field:"optional" json:"preferredDuringSchedulingIgnoredDuringExecution" yaml:"preferredDuringSchedulingIgnoredDuringExecution"` + // If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. + // + // If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` +} diff --git a/pods/imports/k8s/NodeConfigSource.go b/pods/imports/k8s/NodeConfigSource.go new file mode 100644 index 000000000..ec4131a26 --- /dev/null +++ b/pods/imports/k8s/NodeConfigSource.go @@ -0,0 +1,9 @@ +package k8s + +// NodeConfigSource specifies a source of node configuration. +// +// Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22 +type NodeConfigSource struct { + // ConfigMap is a reference to a Node's ConfigMap. + ConfigMap *ConfigMapNodeConfigSource `field:"optional" json:"configMap" yaml:"configMap"` +} diff --git a/pods/imports/k8s/NodeSelector.go b/pods/imports/k8s/NodeSelector.go new file mode 100644 index 000000000..ffd4e5946 --- /dev/null +++ b/pods/imports/k8s/NodeSelector.go @@ -0,0 +1,11 @@ +package k8s + +// A node selector represents the union of the results of one or more label queries over a set of nodes; +// +// that is, it represents the OR of the selectors represented by the node selector terms. +type NodeSelector struct { + // Required. + // + // A list of node selector terms. The terms are ORed. + NodeSelectorTerms *[]*NodeSelectorTerm `field:"required" json:"nodeSelectorTerms" yaml:"nodeSelectorTerms"` +} diff --git a/pods/imports/k8s/NodeSelectorRequirement.go b/pods/imports/k8s/NodeSelectorRequirement.go new file mode 100644 index 000000000..57d557de6 --- /dev/null +++ b/pods/imports/k8s/NodeSelectorRequirement.go @@ -0,0 +1,15 @@ +package k8s + +// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +type NodeSelectorRequirement struct { + // The label key that the selector applies to. + Key *string `field:"required" json:"key" yaml:"key"` + // Represents a key's relationship to a set of values. + // + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + Operator *string `field:"required" json:"operator" yaml:"operator"` + // An array of string values. + // + // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + Values *[]*string `field:"optional" json:"values" yaml:"values"` +} diff --git a/pods/imports/k8s/NodeSelectorTerm.go b/pods/imports/k8s/NodeSelectorTerm.go new file mode 100644 index 000000000..b225187f8 --- /dev/null +++ b/pods/imports/k8s/NodeSelectorTerm.go @@ -0,0 +1,11 @@ +package k8s + +// A null or empty node selector term matches no objects. +// +// The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. +type NodeSelectorTerm struct { + // A list of node selector requirements by node's labels. + MatchExpressions *[]*NodeSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` + // A list of node selector requirements by node's fields. + MatchFields *[]*NodeSelectorRequirement `field:"optional" json:"matchFields" yaml:"matchFields"` +} diff --git a/pods/imports/k8s/NodeSpec.go b/pods/imports/k8s/NodeSpec.go new file mode 100644 index 000000000..3b48905dd --- /dev/null +++ b/pods/imports/k8s/NodeSpec.go @@ -0,0 +1,27 @@ +package k8s + +// NodeSpec describes the attributes that a node is created with. +type NodeSpec struct { + // Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. + // + // This feature is removed. + ConfigSource *NodeConfigSource `field:"optional" json:"configSource" yaml:"configSource"` + // Deprecated. + // + // Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966 + ExternalId *string `field:"optional" json:"externalId" yaml:"externalId"` + // PodCIDR represents the pod IP range assigned to the node. + PodCidr *string `field:"optional" json:"podCidr" yaml:"podCidr"` + // podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. + // + // If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6. + PodCidRs *[]*string `field:"optional" json:"podCidRs" yaml:"podCidRs"` + // ID of the node assigned by the cloud provider in the format: ://. + ProviderId *string `field:"optional" json:"providerId" yaml:"providerId"` + // If specified, the node's taints. + Taints *[]*Taint `field:"optional" json:"taints" yaml:"taints"` + // Unschedulable controls node schedulability of new pods. + // + // By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration + Unschedulable *bool `field:"optional" json:"unschedulable" yaml:"unschedulable"` +} diff --git a/pods/imports/k8s/NonResourceAttributes.go b/pods/imports/k8s/NonResourceAttributes.go new file mode 100644 index 000000000..0cfa96a83 --- /dev/null +++ b/pods/imports/k8s/NonResourceAttributes.go @@ -0,0 +1,9 @@ +package k8s + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface. +type NonResourceAttributes struct { + // Path is the URL path of the request. + Path *string `field:"optional" json:"path" yaml:"path"` + // Verb is the standard HTTP verb. + Verb *string `field:"optional" json:"verb" yaml:"verb"` +} diff --git a/pods/imports/k8s/NonResourcePolicyRule.go b/pods/imports/k8s/NonResourcePolicyRule.go new file mode 100644 index 000000000..0deb013aa --- /dev/null +++ b/pods/imports/k8s/NonResourcePolicyRule.go @@ -0,0 +1,21 @@ +package k8s + +// NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. +// +// A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request. +type NonResourcePolicyRule struct { + // `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. + // + // For example: + // - "/healthz" is legal + // - "/hea*" is illegal + // - "/hea" is legal but matches nothing + // - "/hea/*" also matches nothing + // - "/healthz/*" matches all per-component health checks. + // "*" matches all non-resource urls. if it is present, it must be the only entry. Required. + NonResourceUrLs *[]*string `field:"required" json:"nonResourceUrLs" yaml:"nonResourceUrLs"` + // `verbs` is a list of matching verbs and may not be empty. + // + // "*" matches all verbs. If it is present, it must be the only entry. Required. + Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` +} diff --git a/pods/imports/k8s/ObjectFieldSelector.go b/pods/imports/k8s/ObjectFieldSelector.go new file mode 100644 index 000000000..0c447d2c4 --- /dev/null +++ b/pods/imports/k8s/ObjectFieldSelector.go @@ -0,0 +1,9 @@ +package k8s + +// ObjectFieldSelector selects an APIVersioned field of an object. +type ObjectFieldSelector struct { + // Path of the field to select in the specified API version. + FieldPath *string `field:"required" json:"fieldPath" yaml:"fieldPath"` + // Version of the schema the FieldPath is written in terms of, defaults to "v1". + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` +} diff --git a/pods/imports/k8s/ObjectMeta.go b/pods/imports/k8s/ObjectMeta.go new file mode 100644 index 000000000..8e57dd518 --- /dev/null +++ b/pods/imports/k8s/ObjectMeta.go @@ -0,0 +1,81 @@ +package k8s + +import ( + "time" +) + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. +type ObjectMeta struct { + // Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. + // + // They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations + Annotations *map[string]*string `field:"optional" json:"annotations" yaml:"annotations"` + // CreationTimestamp is a timestamp representing the server time when this object was created. + // + // It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + CreationTimestamp *time.Time `field:"optional" json:"creationTimestamp" yaml:"creationTimestamp"` + // Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. + // + // Only set when deletionTimestamp is also set. May only be shortened. Read-only. + DeletionGracePeriodSeconds *float64 `field:"optional" json:"deletionGracePeriodSeconds" yaml:"deletionGracePeriodSeconds"` + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. + // + // This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + DeletionTimestamp *time.Time `field:"optional" json:"deletionTimestamp" yaml:"deletionTimestamp"` + // Must be empty before the object is deleted from the registry. + // + // Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list. + Finalizers *[]*string `field:"optional" json:"finalizers" yaml:"finalizers"` + // GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. + // + // If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. + // + // If this field is specified and the generated name exists, the server will return a 409. + // + // Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency + GenerateName *string `field:"optional" json:"generateName" yaml:"generateName"` + // A sequence number representing a specific generation of the desired state. + // + // Populated by the system. Read-only. + Generation *float64 `field:"optional" json:"generation" yaml:"generation"` + // Map of string keys and values that can be used to organize and categorize (scope and select) objects. + // + // May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels + Labels *map[string]*string `field:"optional" json:"labels" yaml:"labels"` + // ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. + // + // This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like "ci-cd". The set of fields is always in the version that the workflow used when modifying the object. + ManagedFields *[]*ManagedFieldsEntry `field:"optional" json:"managedFields" yaml:"managedFields"` + // Name must be unique within a namespace. + // + // Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names + Name *string `field:"optional" json:"name" yaml:"name"` + // Namespace defines the space within which each name must be unique. + // + // An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. + // + // Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // List of objects depended by this object. + // + // If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. + OwnerReferences *[]*OwnerReference `field:"optional" json:"ownerReferences" yaml:"ownerReferences"` + // An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. + // + // May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. + // + // Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` + // Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. + SelfLink *string `field:"optional" json:"selfLink" yaml:"selfLink"` + // UID is the unique in time and space value for this object. + // + // It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. + // + // Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids + Uid *string `field:"optional" json:"uid" yaml:"uid"` +} diff --git a/pods/imports/k8s/ObjectMetricSourceV2.go b/pods/imports/k8s/ObjectMetricSourceV2.go new file mode 100644 index 000000000..4ee940589 --- /dev/null +++ b/pods/imports/k8s/ObjectMetricSourceV2.go @@ -0,0 +1,11 @@ +package k8s + +// ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricSourceV2 struct { + // describedObject specifies the descriptions of a object,such as kind,name apiVersion. + DescribedObject *CrossVersionObjectReferenceV2 `field:"required" json:"describedObject" yaml:"describedObject"` + // metric identifies the target metric by name and selector. + Metric *MetricIdentifierV2 `field:"required" json:"metric" yaml:"metric"` + // target specifies the target value for the given metric. + Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` +} diff --git a/pods/imports/k8s/ObjectReference.go b/pods/imports/k8s/ObjectReference.go new file mode 100644 index 000000000..4109d29df --- /dev/null +++ b/pods/imports/k8s/ObjectReference.go @@ -0,0 +1,29 @@ +package k8s + +// ObjectReference contains enough information to let you inspect or modify the referred object. +type ObjectReference struct { + // API version of the referent. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. + FieldPath *string `field:"optional" json:"fieldPath" yaml:"fieldPath"` + // Kind of the referent. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Kind *string `field:"optional" json:"kind" yaml:"kind"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // Namespace of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // Specific resourceVersion to which this reference is made, if any. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` + // UID of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + Uid *string `field:"optional" json:"uid" yaml:"uid"` +} diff --git a/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go b/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go new file mode 100644 index 000000000..8331e4d95 --- /dev/null +++ b/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go @@ -0,0 +1,17 @@ +package k8s + +// OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor. +type OpaqueDeviceConfigurationV1Alpha3 struct { + // Driver is used to determine which kubelet plugin needs to be passed these configuration parameters. + // + // An admission policy provided by the driver developer could use this to decide whether it needs to validate them. + // + // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // Parameters can contain arbitrary data. + // + // It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions. + // + // The length of the raw data must be smaller or equal to 10 Ki. + Parameters interface{} `field:"required" json:"parameters" yaml:"parameters"` +} diff --git a/pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go b/pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go new file mode 100644 index 000000000..d13d2e4a6 --- /dev/null +++ b/pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go @@ -0,0 +1,17 @@ +package k8s + +// OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor. +type OpaqueDeviceConfigurationV1Beta1 struct { + // Driver is used to determine which kubelet plugin needs to be passed these configuration parameters. + // + // An admission policy provided by the driver developer could use this to decide whether it needs to validate them. + // + // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // Parameters can contain arbitrary data. + // + // It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions. + // + // The length of the raw data must be smaller or equal to 10 Ki. + Parameters interface{} `field:"required" json:"parameters" yaml:"parameters"` +} diff --git a/pods/imports/k8s/Overhead.go b/pods/imports/k8s/Overhead.go new file mode 100644 index 000000000..682ff7a04 --- /dev/null +++ b/pods/imports/k8s/Overhead.go @@ -0,0 +1,7 @@ +package k8s + +// Overhead structure represents the resource overhead associated with running a pod. +type Overhead struct { + // podFixed represents the fixed resource overhead associated with running a pod. + PodFixed *map[string]Quantity `field:"optional" json:"podFixed" yaml:"podFixed"` +} diff --git a/pods/imports/k8s/OwnerReference.go b/pods/imports/k8s/OwnerReference.go new file mode 100644 index 000000000..c013d79b8 --- /dev/null +++ b/pods/imports/k8s/OwnerReference.go @@ -0,0 +1,29 @@ +package k8s + +// OwnerReference contains enough information to let you identify an owning object. +// +// An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field. +type OwnerReference struct { + // API version of the referent. + ApiVersion *string `field:"required" json:"apiVersion" yaml:"apiVersion"` + // Kind of the referent. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Kind *string `field:"required" json:"kind" yaml:"kind"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names + Name *string `field:"required" json:"name" yaml:"name"` + // UID of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids + Uid *string `field:"required" json:"uid" yaml:"uid"` + // If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. + // + // See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. + // Default: false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. + // + BlockOwnerDeletion *bool `field:"optional" json:"blockOwnerDeletion" yaml:"blockOwnerDeletion"` + // If true, this reference points to the managing controller. + Controller *bool `field:"optional" json:"controller" yaml:"controller"` +} diff --git a/pods/imports/k8s/ParamKind.go b/pods/imports/k8s/ParamKind.go new file mode 100644 index 000000000..ee90f5af7 --- /dev/null +++ b/pods/imports/k8s/ParamKind.go @@ -0,0 +1,13 @@ +package k8s + +// ParamKind is a tuple of Group Kind and Version. +type ParamKind struct { + // APIVersion is the API group version the resources belong to. + // + // In format of "group/version". Required. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // Kind is the API kind the resources belong to. + // + // Required. + Kind *string `field:"optional" json:"kind" yaml:"kind"` +} diff --git a/pods/imports/k8s/ParamKindV1Alpha1.go b/pods/imports/k8s/ParamKindV1Alpha1.go new file mode 100644 index 000000000..7e1ca680b --- /dev/null +++ b/pods/imports/k8s/ParamKindV1Alpha1.go @@ -0,0 +1,13 @@ +package k8s + +// ParamKind is a tuple of Group Kind and Version. +type ParamKindV1Alpha1 struct { + // APIVersion is the API group version the resources belong to. + // + // In format of "group/version". Required. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // Kind is the API kind the resources belong to. + // + // Required. + Kind *string `field:"optional" json:"kind" yaml:"kind"` +} diff --git a/pods/imports/k8s/ParamKindV1Beta1.go b/pods/imports/k8s/ParamKindV1Beta1.go new file mode 100644 index 000000000..fb09e9815 --- /dev/null +++ b/pods/imports/k8s/ParamKindV1Beta1.go @@ -0,0 +1,13 @@ +package k8s + +// ParamKind is a tuple of Group Kind and Version. +type ParamKindV1Beta1 struct { + // APIVersion is the API group version the resources belong to. + // + // In format of "group/version". Required. + ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` + // Kind is the API kind the resources belong to. + // + // Required. + Kind *string `field:"optional" json:"kind" yaml:"kind"` +} diff --git a/pods/imports/k8s/ParamRef.go b/pods/imports/k8s/ParamRef.go new file mode 100644 index 000000000..bb3fd9d12 --- /dev/null +++ b/pods/imports/k8s/ParamRef.go @@ -0,0 +1,37 @@ +package k8s + +// ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. +type ParamRef struct { + // name is the name of the resource being referenced. + // + // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + // + // A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. + Name *string `field:"optional" json:"name" yaml:"name"` + // namespace is the namespace of the referenced resource. + // + // Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. + // + // A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. + // + // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. + // + // - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. + // + // If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. + // + // Allowed values are `Allow` or `Deny` + // + // Required. + ParameterNotFoundAction *string `field:"optional" json:"parameterNotFoundAction" yaml:"parameterNotFoundAction"` + // selector can be used to match multiple param objects based on their labels. + // + // Supply selector: {} to match all resources of the ParamKind. + // + // If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. + // + // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` +} diff --git a/pods/imports/k8s/ParamRefV1Alpha1.go b/pods/imports/k8s/ParamRefV1Alpha1.go new file mode 100644 index 000000000..36ff52994 --- /dev/null +++ b/pods/imports/k8s/ParamRefV1Alpha1.go @@ -0,0 +1,35 @@ +package k8s + +// ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. +type ParamRefV1Alpha1 struct { + // `name` is the name of the resource being referenced. + // + // `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + Name *string `field:"optional" json:"name" yaml:"name"` + // namespace is the namespace of the referenced resource. + // + // Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. + // + // A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. + // + // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. + // + // - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. + // + // If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. + // + // Allowed values are `Allow` or `Deny` Default to `Deny`. + // Default: Deny`. + // + ParameterNotFoundAction *string `field:"optional" json:"parameterNotFoundAction" yaml:"parameterNotFoundAction"` + // selector can be used to match multiple param objects based on their labels. + // + // Supply selector: {} to match all resources of the ParamKind. + // + // If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. + // + // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` +} diff --git a/pods/imports/k8s/ParamRefV1Beta1.go b/pods/imports/k8s/ParamRefV1Beta1.go new file mode 100644 index 000000000..ff431e3d1 --- /dev/null +++ b/pods/imports/k8s/ParamRefV1Beta1.go @@ -0,0 +1,37 @@ +package k8s + +// ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. +type ParamRefV1Beta1 struct { + // name is the name of the resource being referenced. + // + // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + // + // A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. + Name *string `field:"optional" json:"name" yaml:"name"` + // namespace is the namespace of the referenced resource. + // + // Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. + // + // A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. + // + // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. + // + // - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. + // + // If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. + // + // Allowed values are `Allow` or `Deny` + // + // Required. + ParameterNotFoundAction *string `field:"optional" json:"parameterNotFoundAction" yaml:"parameterNotFoundAction"` + // selector can be used to match multiple param objects based on their labels. + // + // Supply selector: {} to match all resources of the ParamKind. + // + // If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. + // + // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` +} diff --git a/pods/imports/k8s/ParentReferenceV1Beta1.go b/pods/imports/k8s/ParentReferenceV1Beta1.go new file mode 100644 index 000000000..7d7cc696b --- /dev/null +++ b/pods/imports/k8s/ParentReferenceV1Beta1.go @@ -0,0 +1,13 @@ +package k8s + +// ParentReference describes a reference to a parent object. +type ParentReferenceV1Beta1 struct { + // Name is the name of the object being referenced. + Name *string `field:"required" json:"name" yaml:"name"` + // Resource is the resource of the object being referenced. + Resource *string `field:"required" json:"resource" yaml:"resource"` + // Group is the group of the object being referenced. + Group *string `field:"optional" json:"group" yaml:"group"` + // Namespace is the namespace of the object being referenced. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` +} diff --git a/pods/imports/k8s/PersistentVolumeClaimSpec.go b/pods/imports/k8s/PersistentVolumeClaimSpec.go new file mode 100644 index 000000000..5be2f63c9 --- /dev/null +++ b/pods/imports/k8s/PersistentVolumeClaimSpec.go @@ -0,0 +1,42 @@ +package k8s + +// PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes. +type PersistentVolumeClaimSpec struct { + // accessModes contains the desired access modes the volume should have. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + AccessModes *[]*string `field:"optional" json:"accessModes" yaml:"accessModes"` + // dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + DataSource *TypedLocalObjectReference `field:"optional" json:"dataSource" yaml:"dataSource"` + // dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. + // + // This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef + // allows any non-core object, as well as PersistentVolumeClaim objects. + // * While dataSource ignores disallowed values (dropping them), dataSourceRef + // preserves all values, and generates an error if a disallowed value is + // specified. + // * While dataSource only allows local objects, dataSourceRef allows objects + // in any namespaces. + // (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + DataSourceRef *TypedObjectReference `field:"optional" json:"dataSourceRef" yaml:"dataSourceRef"` + // resources represents the minimum resources the volume should have. + // + // If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + Resources *VolumeResourceRequirements `field:"optional" json:"resources" yaml:"resources"` + // selector is a label query over volumes to consider for binding. + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` + // storageClassName is the name of the StorageClass required by the claim. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + StorageClassName *string `field:"optional" json:"storageClassName" yaml:"storageClassName"` + // volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. + // + // If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default). + VolumeAttributesClassName *string `field:"optional" json:"volumeAttributesClassName" yaml:"volumeAttributesClassName"` + // volumeMode defines what type of volume is required by the claim. + // + // Value of Filesystem is implied when not included in claim spec. + VolumeMode *string `field:"optional" json:"volumeMode" yaml:"volumeMode"` + // volumeName is the binding reference to the PersistentVolume backing this claim. + VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` +} diff --git a/pods/imports/k8s/PersistentVolumeClaimTemplate.go b/pods/imports/k8s/PersistentVolumeClaimTemplate.go new file mode 100644 index 000000000..d52b70f0b --- /dev/null +++ b/pods/imports/k8s/PersistentVolumeClaimTemplate.go @@ -0,0 +1,13 @@ +package k8s + +// PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource. +type PersistentVolumeClaimTemplate struct { + // The specification for the PersistentVolumeClaim. + // + // The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + Spec *PersistentVolumeClaimSpec `field:"required" json:"spec" yaml:"spec"` + // May contain labels and annotations that will be copied into the PVC when creating it. + // + // No other fields are allowed and will be rejected during validation. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go b/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go new file mode 100644 index 000000000..ed5de46fa --- /dev/null +++ b/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. +// +// This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system). +type PersistentVolumeClaimVolumeSource struct { + // claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + ClaimName *string `field:"required" json:"claimName" yaml:"claimName"` + // readOnly Will force the ReadOnly setting in VolumeMounts. + // + // Default false. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/PersistentVolumeSpec.go b/pods/imports/k8s/PersistentVolumeSpec.go new file mode 100644 index 000000000..1e32fc287 --- /dev/null +++ b/pods/imports/k8s/PersistentVolumeSpec.go @@ -0,0 +1,121 @@ +package k8s + +// PersistentVolumeSpec is the specification of a persistent volume. +type PersistentVolumeSpec struct { + // accessModes contains all ways the volume can be mounted. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes + AccessModes *[]*string `field:"optional" json:"accessModes" yaml:"accessModes"` + // awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. + // + // Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + AwsElasticBlockStore *AwsElasticBlockStoreVolumeSource `field:"optional" json:"awsElasticBlockStore" yaml:"awsElasticBlockStore"` + // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // + // Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver. + AzureDisk *AzureDiskVolumeSource `field:"optional" json:"azureDisk" yaml:"azureDisk"` + // azureFile represents an Azure File Service mount on the host and bind mount to the pod. + // + // Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type are redirected to the file.csi.azure.com CSI driver. + AzureFile *AzureFilePersistentVolumeSource `field:"optional" json:"azureFile" yaml:"azureFile"` + // capacity is the description of the persistent volume's resources and capacity. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + Capacity *map[string]Quantity `field:"optional" json:"capacity" yaml:"capacity"` + // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. + // + // Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported. + Cephfs *CephFsPersistentVolumeSource `field:"optional" json:"cephfs" yaml:"cephfs"` + // cinder represents a cinder volume attached and mounted on kubelets host machine. + // + // Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + Cinder *CinderPersistentVolumeSource `field:"optional" json:"cinder" yaml:"cinder"` + // claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // + // Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding + ClaimRef *ObjectReference `field:"optional" json:"claimRef" yaml:"claimRef"` + // csi represents storage that is handled by an external CSI driver. + Csi *CsiPersistentVolumeSource `field:"optional" json:"csi" yaml:"csi"` + // fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + Fc *FcVolumeSource `field:"optional" json:"fc" yaml:"fc"` + // flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + // + // Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. + FlexVolume *FlexPersistentVolumeSource `field:"optional" json:"flexVolume" yaml:"flexVolume"` + // flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. + // + // This depends on the Flocker control service being running. Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported. + Flocker *FlockerVolumeSource `field:"optional" json:"flocker" yaml:"flocker"` + // gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. + // + // Provisioned by an admin. Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + GcePersistentDisk *GcePersistentDiskVolumeSource `field:"optional" json:"gcePersistentDisk" yaml:"gcePersistentDisk"` + // glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. + // + // Provisioned by an admin. Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md + Glusterfs *GlusterfsPersistentVolumeSource `field:"optional" json:"glusterfs" yaml:"glusterfs"` + // hostPath represents a directory on the host. + // + // Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + HostPath *HostPathVolumeSource `field:"optional" json:"hostPath" yaml:"hostPath"` + // iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. + // + // Provisioned by an admin. + Iscsi *IscsiPersistentVolumeSource `field:"optional" json:"iscsi" yaml:"iscsi"` + // local represents directly-attached storage with node affinity. + Local *LocalVolumeSource `field:"optional" json:"local" yaml:"local"` + // mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options. + MountOptions *[]*string `field:"optional" json:"mountOptions" yaml:"mountOptions"` + // nfs represents an NFS mount on the host. + // + // Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + Nfs *NfsVolumeSource `field:"optional" json:"nfs" yaml:"nfs"` + // nodeAffinity defines constraints that limit what nodes this volume can be accessed from. + // + // This field influences the scheduling of pods that use this volume. + NodeAffinity *VolumeNodeAffinity `field:"optional" json:"nodeAffinity" yaml:"nodeAffinity"` + // persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. + // + // Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming + PersistentVolumeReclaimPolicy *string `field:"optional" json:"persistentVolumeReclaimPolicy" yaml:"persistentVolumeReclaimPolicy"` + // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. + // + // Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported. + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `field:"optional" json:"photonPersistentDisk" yaml:"photonPersistentDisk"` + // portworxVolume represents a portworx volume attached and mounted on kubelets host machine. + // + // Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate is on. + PortworxVolume *PortworxVolumeSource `field:"optional" json:"portworxVolume" yaml:"portworxVolume"` + // quobyte represents a Quobyte mount on the host that shares a pod's lifetime. + // + // Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported. + Quobyte *QuobyteVolumeSource `field:"optional" json:"quobyte" yaml:"quobyte"` + // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. + // + // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md + Rbd *RbdPersistentVolumeSource `field:"optional" json:"rbd" yaml:"rbd"` + // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // + // Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported. + ScaleIo *ScaleIoPersistentVolumeSource `field:"optional" json:"scaleIo" yaml:"scaleIo"` + // storageClassName is the name of StorageClass to which this persistent volume belongs. + // + // Empty value means that this volume does not belong to any StorageClass. + StorageClassName *string `field:"optional" json:"storageClassName" yaml:"storageClassName"` + // storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod. + // + // Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported. More info: https://examples.k8s.io/volumes/storageos/README.md + Storageos *StorageOsPersistentVolumeSource `field:"optional" json:"storageos" yaml:"storageos"` + // Name of VolumeAttributesClass to which this persistent volume belongs. + // + // Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is a beta field and requires enabling VolumeAttributesClass feature (off by default). + VolumeAttributesClassName *string `field:"optional" json:"volumeAttributesClassName" yaml:"volumeAttributesClassName"` + // volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. + // + // Value of Filesystem is implied when not included in spec. + VolumeMode *string `field:"optional" json:"volumeMode" yaml:"volumeMode"` + // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. + // + // Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type are redirected to the csi.vsphere.vmware.com CSI driver. + VsphereVolume *VsphereVirtualDiskVolumeSource `field:"optional" json:"vsphereVolume" yaml:"vsphereVolume"` +} diff --git a/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go b/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go new file mode 100644 index 000000000..f0a13d307 --- /dev/null +++ b/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go @@ -0,0 +1,11 @@ +package k8s + +// Represents a Photon Controller persistent disk resource. +type PhotonPersistentDiskVolumeSource struct { + // pdID is the ID that identifies Photon Controller persistent disk. + PdId *string `field:"required" json:"pdId" yaml:"pdId"` + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` +} diff --git a/pods/imports/k8s/PodAffinity.go b/pods/imports/k8s/PodAffinity.go new file mode 100644 index 000000000..7b9622149 --- /dev/null +++ b/pods/imports/k8s/PodAffinity.go @@ -0,0 +1,13 @@ +package k8s + +// Pod affinity is a group of inter pod affinity scheduling rules. +type PodAffinity struct { + // The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. + // + // The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution *[]*WeightedPodAffinityTerm `field:"optional" json:"preferredDuringSchedulingIgnoredDuringExecution" yaml:"preferredDuringSchedulingIgnoredDuringExecution"` + // If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. + // + // If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + RequiredDuringSchedulingIgnoredDuringExecution *[]*PodAffinityTerm `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` +} diff --git a/pods/imports/k8s/PodAffinityTerm.go b/pods/imports/k8s/PodAffinityTerm.go new file mode 100644 index 000000000..4f3180141 --- /dev/null +++ b/pods/imports/k8s/PodAffinityTerm.go @@ -0,0 +1,29 @@ +package k8s + +// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running. +type PodAffinityTerm struct { + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. + // + // Empty topologyKey is not allowed. + TopologyKey *string `field:"required" json:"topologyKey" yaml:"topologyKey"` + // A label query over a set of resources, in this case pods. + // + // If it's null, this PodAffinityTerm matches with no Pods. + LabelSelector *LabelSelector `field:"optional" json:"labelSelector" yaml:"labelSelector"` + // MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. + // + // The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + MatchLabelKeys *[]*string `field:"optional" json:"matchLabelKeys" yaml:"matchLabelKeys"` + // MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. + // + // The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + MismatchLabelKeys *[]*string `field:"optional" json:"mismatchLabelKeys" yaml:"mismatchLabelKeys"` + // namespaces specifies a static list of namespace names that the term applies to. + // + // The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` + // A label query over the set of namespaces that the term applies to. + // + // The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` +} diff --git a/pods/imports/k8s/PodAntiAffinity.go b/pods/imports/k8s/PodAntiAffinity.go new file mode 100644 index 000000000..c42932ddb --- /dev/null +++ b/pods/imports/k8s/PodAntiAffinity.go @@ -0,0 +1,13 @@ +package k8s + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +type PodAntiAffinity struct { + // The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. + // + // The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution *[]*WeightedPodAffinityTerm `field:"optional" json:"preferredDuringSchedulingIgnoredDuringExecution" yaml:"preferredDuringSchedulingIgnoredDuringExecution"` + // If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. + // + // If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + RequiredDuringSchedulingIgnoredDuringExecution *[]*PodAffinityTerm `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` +} diff --git a/pods/imports/k8s/PodDisruptionBudgetSpec.go b/pods/imports/k8s/PodDisruptionBudgetSpec.go new file mode 100644 index 000000000..15588d9ec --- /dev/null +++ b/pods/imports/k8s/PodDisruptionBudgetSpec.go @@ -0,0 +1,27 @@ +package k8s + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +type PodDisruptionBudgetSpec struct { + // An eviction is allowed if at most "maxUnavailable" pods selected by "selector" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with "minAvailable". + MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` + // An eviction is allowed if at least "minAvailable" pods selected by "selector" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying "100%". + MinAvailable IntOrString `field:"optional" json:"minAvailable" yaml:"minAvailable"` + // Label query over pods whose evictions are managed by the disruption budget. + // + // A null selector will match no pods, while an empty ({}) selector will select all pods within the namespace. + Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` + // UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods should be considered for eviction. + // + // Current implementation considers healthy pods, as pods that have status.conditions item with type="Ready",status="True". + // + // Valid policies are IfHealthyBudget and AlwaysAllow. If no policy is specified, the default behavior will be used, which corresponds to the IfHealthyBudget policy. + // + // IfHealthyBudget policy means that running pods (status.phase="Running"), but not yet healthy can be evicted only if the guarded application is not disrupted (status.currentHealthy is at least equal to status.desiredHealthy). Healthy pods will be subject to the PDB for eviction. + // + // AlwaysAllow policy means that all running pods (status.phase="Running"), but not yet healthy are considered disrupted and can be evicted regardless of whether the criteria in a PDB is met. This means perspective running pods of a disrupted application might not get a chance to become healthy. Healthy pods will be subject to the PDB for eviction. + // + // Additional policies may be added in the future. Clients making eviction decisions should disallow eviction of unhealthy pods if they encounter an unrecognized policy in this field. + // + // This field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). + UnhealthyPodEvictionPolicy *string `field:"optional" json:"unhealthyPodEvictionPolicy" yaml:"unhealthyPodEvictionPolicy"` +} diff --git a/pods/imports/k8s/PodDnsConfig.go b/pods/imports/k8s/PodDnsConfig.go new file mode 100644 index 000000000..4cd0c7fc0 --- /dev/null +++ b/pods/imports/k8s/PodDnsConfig.go @@ -0,0 +1,17 @@ +package k8s + +// PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. +type PodDnsConfig struct { + // A list of DNS name server IP addresses. + // + // This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. + Nameservers *[]*string `field:"optional" json:"nameservers" yaml:"nameservers"` + // A list of DNS resolver options. + // + // This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. + Options *[]*PodDnsConfigOption `field:"optional" json:"options" yaml:"options"` + // A list of DNS search domains for host-name lookup. + // + // This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. + Searches *[]*string `field:"optional" json:"searches" yaml:"searches"` +} diff --git a/pods/imports/k8s/PodDnsConfigOption.go b/pods/imports/k8s/PodDnsConfigOption.go new file mode 100644 index 000000000..b0420d91d --- /dev/null +++ b/pods/imports/k8s/PodDnsConfigOption.go @@ -0,0 +1,11 @@ +package k8s + +// PodDNSConfigOption defines DNS resolver options of a pod. +type PodDnsConfigOption struct { + // Name is this DNS resolver option's name. + // + // Required. + Name *string `field:"optional" json:"name" yaml:"name"` + // Value is this DNS resolver option's value. + Value *string `field:"optional" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/PodFailurePolicy.go b/pods/imports/k8s/PodFailurePolicy.go new file mode 100644 index 000000000..f2e48e22e --- /dev/null +++ b/pods/imports/k8s/PodFailurePolicy.go @@ -0,0 +1,9 @@ +package k8s + +// PodFailurePolicy describes how failed pods influence the backoffLimit. +type PodFailurePolicy struct { + // A list of pod failure policy rules. + // + // The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed. + Rules *[]*PodFailurePolicyRule `field:"required" json:"rules" yaml:"rules"` +} diff --git a/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go b/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go new file mode 100644 index 000000000..20b60489f --- /dev/null +++ b/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go @@ -0,0 +1,27 @@ +package k8s + +// PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. +// +// In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check. +type PodFailurePolicyOnExitCodesRequirement struct { + // Represents the relationship between the container exit code(s) and the specified values. + // + // Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are: + // + // - In: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is in the set of specified values. + // - NotIn: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is not in the set of specified values. + // Additional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied. + Operator *string `field:"required" json:"operator" yaml:"operator"` + // Specifies the set of values. + // + // Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed. + Values *[]*float64 `field:"required" json:"values" yaml:"values"` + // Restricts the check for exit codes to the container with the specified name. + // + // When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template. + ContainerName *string `field:"optional" json:"containerName" yaml:"containerName"` +} diff --git a/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go b/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go new file mode 100644 index 000000000..d8e07b05f --- /dev/null +++ b/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go @@ -0,0 +1,15 @@ +package k8s + +// PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type. +type PodFailurePolicyOnPodConditionsPattern struct { + // Specifies the required Pod condition status. + // + // To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True. + // Default: True. + // + Status *string `field:"required" json:"status" yaml:"status"` + // Specifies the required Pod condition type. + // + // To match a pod condition it is required that specified type equals the pod condition type. + Type *string `field:"required" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/PodFailurePolicyRule.go b/pods/imports/k8s/PodFailurePolicyRule.go new file mode 100644 index 000000000..87b073604 --- /dev/null +++ b/pods/imports/k8s/PodFailurePolicyRule.go @@ -0,0 +1,27 @@ +package k8s + +// PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. +// +// One of onExitCodes and onPodConditions, but not both, can be used in each rule. +type PodFailurePolicyRule struct { + // Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are:. + // + // - FailJob: indicates that the pod's job is marked as Failed and all + // running pods are terminated. + // - FailIndex: indicates that the pod's index is marked as Failed and will + // not be restarted. + // This value is beta-level. It can be used when the + // `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). + // - Ignore: indicates that the counter towards the .backoffLimit is not + // incremented and a replacement pod is created. + // - Count: indicates that the pod is handled in the default way - the + // counter towards the .backoffLimit is incremented. + // Additional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule. + Action *string `field:"required" json:"action" yaml:"action"` + // Represents the requirement on the container exit codes. + OnExitCodes *PodFailurePolicyOnExitCodesRequirement `field:"optional" json:"onExitCodes" yaml:"onExitCodes"` + // Represents the requirement on the pod conditions. + // + // The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed. + OnPodConditions *[]*PodFailurePolicyOnPodConditionsPattern `field:"optional" json:"onPodConditions" yaml:"onPodConditions"` +} diff --git a/pods/imports/k8s/PodOs.go b/pods/imports/k8s/PodOs.go new file mode 100644 index 000000000..403527770 --- /dev/null +++ b/pods/imports/k8s/PodOs.go @@ -0,0 +1,9 @@ +package k8s + +// PodOS defines the OS parameters of a pod. +type PodOs struct { + // Name is the name of the operating system. + // + // The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/PodReadinessGate.go b/pods/imports/k8s/PodReadinessGate.go new file mode 100644 index 000000000..0df90490c --- /dev/null +++ b/pods/imports/k8s/PodReadinessGate.go @@ -0,0 +1,7 @@ +package k8s + +// PodReadinessGate contains the reference to a pod condition. +type PodReadinessGate struct { + // ConditionType refers to a condition in the pod's condition list with matching type. + ConditionType *string `field:"required" json:"conditionType" yaml:"conditionType"` +} diff --git a/pods/imports/k8s/PodResourceClaim.go b/pods/imports/k8s/PodResourceClaim.go new file mode 100644 index 000000000..7cfa611ae --- /dev/null +++ b/pods/imports/k8s/PodResourceClaim.go @@ -0,0 +1,23 @@ +package k8s + +// PodResourceClaim references exactly one ResourceClaim, either directly or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim for the pod. +// +// It adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name. +type PodResourceClaim struct { + // Name uniquely identifies this resource claim inside the pod. + // + // This must be a DNS_LABEL. + Name *string `field:"required" json:"name" yaml:"name"` + // ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod. + // + // Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set. + ResourceClaimName *string `field:"optional" json:"resourceClaimName" yaml:"resourceClaimName"` + // ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod. + // + // The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses. + // + // This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim. + // + // Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set. + ResourceClaimTemplateName *string `field:"optional" json:"resourceClaimTemplateName" yaml:"resourceClaimTemplateName"` +} diff --git a/pods/imports/k8s/PodSchedulingGate.go b/pods/imports/k8s/PodSchedulingGate.go new file mode 100644 index 000000000..90604b028 --- /dev/null +++ b/pods/imports/k8s/PodSchedulingGate.go @@ -0,0 +1,9 @@ +package k8s + +// PodSchedulingGate is associated to a Pod to guard its scheduling. +type PodSchedulingGate struct { + // Name of the scheduling gate. + // + // Each scheduling gate must have a unique name field. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/PodSecurityContext.go b/pods/imports/k8s/PodSecurityContext.go new file mode 100644 index 000000000..e2c337156 --- /dev/null +++ b/pods/imports/k8s/PodSecurityContext.go @@ -0,0 +1,75 @@ +package k8s + +// PodSecurityContext holds pod-level security attributes and common container settings. +// +// Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext. +type PodSecurityContext struct { + // appArmorProfile is the AppArmor options to use by the containers in this pod. + // + // Note that this field cannot be set when spec.os.name is windows. + AppArmorProfile *AppArmorProfile `field:"optional" json:"appArmorProfile" yaml:"appArmorProfile"` + // A special supplemental group that applies to all containers in a pod. + // + // Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: + // + // 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows. + FsGroup *float64 `field:"optional" json:"fsGroup" yaml:"fsGroup"` + // fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. + // + // This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows. + FsGroupChangePolicy *string `field:"optional" json:"fsGroupChangePolicy" yaml:"fsGroupChangePolicy"` + // The GID to run the entrypoint of the container process. + // + // Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + RunAsGroup *float64 `field:"optional" json:"runAsGroup" yaml:"runAsGroup"` + // Indicates that the container must run as a non-root user. + // + // If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsNonRoot *bool `field:"optional" json:"runAsNonRoot" yaml:"runAsNonRoot"` + // The UID to run the entrypoint of the container process. + // + // Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + // Default: user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + // + RunAsUser *float64 `field:"optional" json:"runAsUser" yaml:"runAsUser"` + // The seccomp options to use by the containers in this pod. + // + // Note that this field cannot be set when spec.os.name is windows. + SeccompProfile *SeccompProfile `field:"optional" json:"seccompProfile" yaml:"seccompProfile"` + // seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod. + // + // It has no effect on nodes that do not support SELinux or to volumes does not support SELinux. Valid values are "MountOption" and "Recursive". + // + // "Recursive" means relabeling of all files on all Pod volumes by the container runtime. This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node. + // + // "MountOption" mounts all eligible Pod volumes with `-o context` mount option. This requires all Pods that share the same volume to use the same SELinux label. It is not possible to share the same volume among privileged and unprivileged Pods. Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their CSIDriver instance. Other volumes are always re-labelled recursively. "MountOption" value is allowed only when SELinuxMount feature gate is enabled. + // + // If not specified and SELinuxMount feature gate is enabled, "MountOption" is used. If not specified and SELinuxMount feature gate is disabled, "MountOption" is used for ReadWriteOncePod volumes and "Recursive" for all other volumes. + // + // This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers. + // + // All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state. Note that this field cannot be set when spec.os.name is windows. + SeLinuxChangePolicy *string `field:"optional" json:"seLinuxChangePolicy" yaml:"seLinuxChangePolicy"` + // The SELinux context to be applied to all containers. + // + // If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + SeLinuxOptions *SeLinuxOptions `field:"optional" json:"seLinuxOptions" yaml:"seLinuxOptions"` + // A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). + // + // If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows. + SupplementalGroups *[]*float64 `field:"optional" json:"supplementalGroups" yaml:"supplementalGroups"` + // Defines how supplemental groups of the first container processes are calculated. + // + // Valid values are "Merge" and "Strict". If not specified, "Merge" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows. + SupplementalGroupsPolicy *string `field:"optional" json:"supplementalGroupsPolicy" yaml:"supplementalGroupsPolicy"` + // Sysctls hold a list of namespaced sysctls used for the pod. + // + // Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + Sysctls *[]*Sysctl `field:"optional" json:"sysctls" yaml:"sysctls"` + // The Windows specific settings applied to all containers. + // + // If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + WindowsOptions *WindowsSecurityContextOptions `field:"optional" json:"windowsOptions" yaml:"windowsOptions"` +} diff --git a/pods/imports/k8s/PodSpec.go b/pods/imports/k8s/PodSpec.go new file mode 100644 index 000000000..e40ad0303 --- /dev/null +++ b/pods/imports/k8s/PodSpec.go @@ -0,0 +1,189 @@ +package k8s + +// PodSpec is a description of a pod. +type PodSpec struct { + // List of containers belonging to the pod. + // + // Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. + Containers *[]*Container `field:"required" json:"containers" yaml:"containers"` + // Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. + // + // Value must be a positive integer. + ActiveDeadlineSeconds *float64 `field:"optional" json:"activeDeadlineSeconds" yaml:"activeDeadlineSeconds"` + // If specified, the pod's scheduling constraints. + Affinity *Affinity `field:"optional" json:"affinity" yaml:"affinity"` + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + AutomountServiceAccountToken *bool `field:"optional" json:"automountServiceAccountToken" yaml:"automountServiceAccountToken"` + // Specifies the DNS parameters of a pod. + // + // Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy. + DnsConfig *PodDnsConfig `field:"optional" json:"dnsConfig" yaml:"dnsConfig"` + // Set DNS policy for the pod. + // + // Defaults to "ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // Default: ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // + DnsPolicy *string `field:"optional" json:"dnsPolicy" yaml:"dnsPolicy"` + // EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. + // + // Optional: Defaults to true. + // Default: true. + // + EnableServiceLinks *bool `field:"optional" json:"enableServiceLinks" yaml:"enableServiceLinks"` + // List of ephemeral containers run in this pod. + // + // Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. + EphemeralContainers *[]*EphemeralContainer `field:"optional" json:"ephemeralContainers" yaml:"ephemeralContainers"` + // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. + HostAliases *[]*HostAlias `field:"optional" json:"hostAliases" yaml:"hostAliases"` + // Use the host's ipc namespace. + // + // Optional: Default to false. + // Default: false. + // + HostIpc *bool `field:"optional" json:"hostIpc" yaml:"hostIpc"` + // Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value. + Hostname *string `field:"optional" json:"hostname" yaml:"hostname"` + // Host networking requested for this pod. + // + // Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false. + // Default: false. + // + HostNetwork *bool `field:"optional" json:"hostNetwork" yaml:"hostNetwork"` + // Use the host's pid namespace. + // + // Optional: Default to false. + // Default: false. + // + HostPid *bool `field:"optional" json:"hostPid" yaml:"hostPid"` + // Use the host's user namespace. + // + // Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. + // Default: true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. + // + HostUsers *bool `field:"optional" json:"hostUsers" yaml:"hostUsers"` + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // + // If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod + ImagePullSecrets *[]*LocalObjectReference `field:"optional" json:"imagePullSecrets" yaml:"imagePullSecrets"` + // List of initialization containers belonging to the pod. + // + // Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + InitContainers *[]*Container `field:"optional" json:"initContainers" yaml:"initContainers"` + // NodeName indicates in which node this pod is scheduled. + // + // If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. This field should not be used to express a desire for the pod to be scheduled on a specific node. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename + NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` + // NodeSelector is a selector which must be true for the pod to fit on a node. + // + // Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + NodeSelector *map[string]*string `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` + // Specifies the OS of the containers in the pod. + // + // Some pod and container fields are restricted if this is set. + // + // If the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions + // + // If the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup + Os *PodOs `field:"optional" json:"os" yaml:"os"` + // Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. + // + // This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md + Overhead *map[string]Quantity `field:"optional" json:"overhead" yaml:"overhead"` + // PreemptionPolicy is the Policy for preempting pods with lower priority. + // + // One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. + // Default: PreemptLowerPriority if unset. + // + PreemptionPolicy *string `field:"optional" json:"preemptionPolicy" yaml:"preemptionPolicy"` + // The priority value. + // + // Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. + Priority *float64 `field:"optional" json:"priority" yaml:"priority"` + // If specified, indicates the pod's priority. + // + // "system-node-critical" and "system-cluster-critical" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. + PriorityClassName *string `field:"optional" json:"priorityClassName" yaml:"priorityClassName"` + // If specified, all readiness gates will be evaluated for pod readiness. + // + // A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates + ReadinessGates *[]*PodReadinessGate `field:"optional" json:"readinessGates" yaml:"readinessGates"` + // ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. + // + // The resources will be made available to those containers which consume them by name. + // + // This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + // + // This field is immutable. + ResourceClaims *[]*PodResourceClaim `field:"optional" json:"resourceClaims" yaml:"resourceClaims"` + // Resources is the total amount of CPU and Memory resources required by all containers in the pod. + // + // It supports specifying Requests and Limits for "cpu" and "memory" resource names only. ResourceClaims are not supported. + // + // This field enables fine-grained control over resource allocation for the entire pod, allowing resource sharing among containers in a pod. + // + // This is an alpha field and requires enabling the PodLevelResources feature gate. + Resources *ResourceRequirements `field:"optional" json:"resources" yaml:"resources"` + // Restart policy for all containers within the pod. + // + // One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + // Default: Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + // + RestartPolicy *string `field:"optional" json:"restartPolicy" yaml:"restartPolicy"` + // RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class. + RuntimeClassName *string `field:"optional" json:"runtimeClassName" yaml:"runtimeClassName"` + // If specified, the pod will be dispatched by specified scheduler. + // + // If not specified, the pod will be dispatched by default scheduler. + SchedulerName *string `field:"optional" json:"schedulerName" yaml:"schedulerName"` + // SchedulingGates is an opaque list of values that if specified will block scheduling the pod. + // + // If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod. + // + // SchedulingGates can only be set at pod creation time, and be removed only afterwards. + SchedulingGates *[]*PodSchedulingGate `field:"optional" json:"schedulingGates" yaml:"schedulingGates"` + // SecurityContext holds pod-level security attributes and common container settings. + // + // Optional: Defaults to empty. See type description for default values of each field. + // Default: empty. See type description for default values of each field. + // + SecurityContext *PodSecurityContext `field:"optional" json:"securityContext" yaml:"securityContext"` + // DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. + // + // Deprecated: Use serviceAccountName instead. + ServiceAccount *string `field:"optional" json:"serviceAccount" yaml:"serviceAccount"` + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ServiceAccountName *string `field:"optional" json:"serviceAccountName" yaml:"serviceAccountName"` + // If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). + // + // In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false. + // Default: false. + // + SetHostnameAsFqdn *bool `field:"optional" json:"setHostnameAsFqdn" yaml:"setHostnameAsFqdn"` + // Share a single process namespace between all of the containers in a pod. + // + // When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. + // Default: false. + // + ShareProcessNamespace *bool `field:"optional" json:"shareProcessNamespace" yaml:"shareProcessNamespace"` + // If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all. + Subdomain *string `field:"optional" json:"subdomain" yaml:"subdomain"` + // Optional duration in seconds the pod needs to terminate gracefully. + // + // May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds. + // Default: 30 seconds. + // + TerminationGracePeriodSeconds *float64 `field:"optional" json:"terminationGracePeriodSeconds" yaml:"terminationGracePeriodSeconds"` + // If specified, the pod's tolerations. + Tolerations *[]*Toleration `field:"optional" json:"tolerations" yaml:"tolerations"` + // TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. + // + // Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed. + TopologySpreadConstraints *[]*TopologySpreadConstraint `field:"optional" json:"topologySpreadConstraints" yaml:"topologySpreadConstraints"` + // List of volumes that can be mounted by containers belonging to the pod. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes + Volumes *[]*Volume `field:"optional" json:"volumes" yaml:"volumes"` +} diff --git a/pods/imports/k8s/PodTemplateSpec.go b/pods/imports/k8s/PodTemplateSpec.go new file mode 100644 index 000000000..304b7e24e --- /dev/null +++ b/pods/imports/k8s/PodTemplateSpec.go @@ -0,0 +1,13 @@ +package k8s + +// PodTemplateSpec describes the data a pod should have when created from a template. +type PodTemplateSpec struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the pod. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *PodSpec `field:"optional" json:"spec" yaml:"spec"` +} diff --git a/pods/imports/k8s/PodsMetricSourceV2.go b/pods/imports/k8s/PodsMetricSourceV2.go new file mode 100644 index 000000000..be8773319 --- /dev/null +++ b/pods/imports/k8s/PodsMetricSourceV2.go @@ -0,0 +1,11 @@ +package k8s + +// PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). +// +// The values will be averaged together before being compared to the target value. +type PodsMetricSourceV2 struct { + // metric identifies the target metric by name and selector. + Metric *MetricIdentifierV2 `field:"required" json:"metric" yaml:"metric"` + // target specifies the target value for the given metric. + Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` +} diff --git a/pods/imports/k8s/PolicyRule.go b/pods/imports/k8s/PolicyRule.go new file mode 100644 index 000000000..c6322b422 --- /dev/null +++ b/pods/imports/k8s/PolicyRule.go @@ -0,0 +1,25 @@ +package k8s + +// PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to. +type PolicyRule struct { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. + // + // '*' represents all verbs. + Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` + // APIGroups is the name of the APIGroup that contains the resources. + // + // If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups. + ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` + // NonResourceURLs is a set of partial urls that a user should have access to. + // + // *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + NonResourceUrLs *[]*string `field:"optional" json:"nonResourceUrLs" yaml:"nonResourceUrLs"` + // ResourceNames is an optional white list of names that the rule applies to. + // + // An empty set means that everything is allowed. + ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` + // Resources is a list of resources this rule applies to. + // + // '*' represents all resources. + Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` +} diff --git a/pods/imports/k8s/PolicyRulesWithSubjects.go b/pods/imports/k8s/PolicyRulesWithSubjects.go new file mode 100644 index 000000000..fc27dadd5 --- /dev/null +++ b/pods/imports/k8s/PolicyRulesWithSubjects.go @@ -0,0 +1,17 @@ +package k8s + +// PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. +// +// The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. +type PolicyRulesWithSubjects struct { + // subjects is the list of normal user, serviceaccount, or group that this rule cares about. + // + // There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. + Subjects *[]*Subject `field:"required" json:"subjects" yaml:"subjects"` + // `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. + NonResourceRules *[]*NonResourcePolicyRule `field:"optional" json:"nonResourceRules" yaml:"nonResourceRules"` + // `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. + // + // At least one of `resourceRules` and `nonResourceRules` has to be non-empty. + ResourceRules *[]*ResourcePolicyRule `field:"optional" json:"resourceRules" yaml:"resourceRules"` +} diff --git a/pods/imports/k8s/PortworxVolumeSource.go b/pods/imports/k8s/PortworxVolumeSource.go new file mode 100644 index 000000000..bd1200ad9 --- /dev/null +++ b/pods/imports/k8s/PortworxVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// PortworxVolumeSource represents a Portworx volume resource. +type PortworxVolumeSource struct { + // volumeID uniquely identifies a Portworx volume. + VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` + // fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. + // + // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` +} diff --git a/pods/imports/k8s/Preconditions.go b/pods/imports/k8s/Preconditions.go new file mode 100644 index 000000000..16ef5f1e4 --- /dev/null +++ b/pods/imports/k8s/Preconditions.go @@ -0,0 +1,9 @@ +package k8s + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +type Preconditions struct { + // Specifies the target ResourceVersion. + ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` + // Specifies the target UID. + Uid *string `field:"optional" json:"uid" yaml:"uid"` +} diff --git a/pods/imports/k8s/PreferredSchedulingTerm.go b/pods/imports/k8s/PreferredSchedulingTerm.go new file mode 100644 index 000000000..5edea28ad --- /dev/null +++ b/pods/imports/k8s/PreferredSchedulingTerm.go @@ -0,0 +1,9 @@ +package k8s + +// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +type PreferredSchedulingTerm struct { + // A node selector term, associated with the corresponding weight. + Preference *NodeSelectorTerm `field:"required" json:"preference" yaml:"preference"` + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + Weight *float64 `field:"required" json:"weight" yaml:"weight"` +} diff --git a/pods/imports/k8s/PriorityLevelConfigurationReference.go b/pods/imports/k8s/PriorityLevelConfigurationReference.go new file mode 100644 index 000000000..b40276e2c --- /dev/null +++ b/pods/imports/k8s/PriorityLevelConfigurationReference.go @@ -0,0 +1,7 @@ +package k8s + +// PriorityLevelConfigurationReference contains information that points to the "request-priority" being used. +type PriorityLevelConfigurationReference struct { + // `name` is the name of the priority level configuration being referenced Required. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/PriorityLevelConfigurationSpec.go b/pods/imports/k8s/PriorityLevelConfigurationSpec.go new file mode 100644 index 000000000..50b3f0e2a --- /dev/null +++ b/pods/imports/k8s/PriorityLevelConfigurationSpec.go @@ -0,0 +1,17 @@ +package k8s + +// PriorityLevelConfigurationSpec specifies the configuration of a priority level. +type PriorityLevelConfigurationSpec struct { + // `type` indicates whether this priority level is subject to limitation on request execution. + // + // A value of `"Exempt"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `"Limited"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. + Type *string `field:"required" json:"type" yaml:"type"` + // `exempt` specifies how requests are handled for an exempt priority level. + // + // This field MUST be empty if `type` is `"Limited"`. This field MAY be non-empty if `type` is `"Exempt"`. If empty and `type` is `"Exempt"` then the default values for `ExemptPriorityLevelConfiguration` apply. + Exempt *ExemptPriorityLevelConfiguration `field:"optional" json:"exempt" yaml:"exempt"` + // `limited` specifies how requests are handled for a Limited priority level. + // + // This field must be non-empty if and only if `type` is `"Limited"`. + Limited *LimitedPriorityLevelConfiguration `field:"optional" json:"limited" yaml:"limited"` +} diff --git a/pods/imports/k8s/Probe.go b/pods/imports/k8s/Probe.go new file mode 100644 index 000000000..95ef6c84a --- /dev/null +++ b/pods/imports/k8s/Probe.go @@ -0,0 +1,45 @@ +package k8s + +// Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. +type Probe struct { + // Exec specifies a command to execute in the container. + Exec *ExecAction `field:"optional" json:"exec" yaml:"exec"` + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + // + // Defaults to 3. Minimum value is 1. + // Default: 3. Minimum value is 1. + // + FailureThreshold *float64 `field:"optional" json:"failureThreshold" yaml:"failureThreshold"` + // GRPC specifies a GRPC HealthCheckRequest. + Grpc *GrpcAction `field:"optional" json:"grpc" yaml:"grpc"` + // HTTPGet specifies an HTTP GET request to perform. + HttpGet *HttpGetAction `field:"optional" json:"httpGet" yaml:"httpGet"` + // Number of seconds after the container has started before liveness probes are initiated. + // + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + InitialDelaySeconds *float64 `field:"optional" json:"initialDelaySeconds" yaml:"initialDelaySeconds"` + // How often (in seconds) to perform the probe. + // + // Default to 10 seconds. Minimum value is 1. + // Default: 10 seconds. Minimum value is 1. + // + PeriodSeconds *float64 `field:"optional" json:"periodSeconds" yaml:"periodSeconds"` + // Minimum consecutive successes for the probe to be considered successful after having failed. + // + // Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + // Default: 1. Must be 1 for liveness and startup. Minimum value is 1. + // + SuccessThreshold *float64 `field:"optional" json:"successThreshold" yaml:"successThreshold"` + // TCPSocket specifies a connection to a TCP port. + TcpSocket *TcpSocketAction `field:"optional" json:"tcpSocket" yaml:"tcpSocket"` + // Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + // + // The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + TerminationGracePeriodSeconds *float64 `field:"optional" json:"terminationGracePeriodSeconds" yaml:"terminationGracePeriodSeconds"` + // Number of seconds after which the probe times out. + // + // Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // Default: 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // + TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` +} diff --git a/pods/imports/k8s/ProjectedVolumeSource.go b/pods/imports/k8s/ProjectedVolumeSource.go new file mode 100644 index 000000000..3230ff7f6 --- /dev/null +++ b/pods/imports/k8s/ProjectedVolumeSource.go @@ -0,0 +1,13 @@ +package k8s + +// Represents a projected volume source. +type ProjectedVolumeSource struct { + // defaultMode are the mode bits used to set permissions on created files by default. + // + // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` + // sources is the list of volume projections. + // + // Each entry in this list handles one source. + Sources *[]*VolumeProjection `field:"optional" json:"sources" yaml:"sources"` +} diff --git a/pods/imports/k8s/Quantity.go b/pods/imports/k8s/Quantity.go new file mode 100644 index 000000000..2d564a4a0 --- /dev/null +++ b/pods/imports/k8s/Quantity.go @@ -0,0 +1,61 @@ +package k8s + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" +) + +type Quantity interface { + Value() interface{} +} + +// The jsii proxy struct for Quantity +type jsiiProxy_Quantity struct { + _ byte // padding +} + +func (j *jsiiProxy_Quantity) Value() interface{} { + var returns interface{} + _jsii_.Get( + j, + "value", + &returns, + ) + return returns +} + +func Quantity_FromNumber(value *float64) Quantity { + _init_.Initialize() + + if err := validateQuantity_FromNumberParameters(value); err != nil { + panic(err) + } + var returns Quantity + + _jsii_.StaticInvoke( + "k8s.Quantity", + "fromNumber", + []interface{}{value}, + &returns, + ) + + return returns +} + +func Quantity_FromString(value *string) Quantity { + _init_.Initialize() + + if err := validateQuantity_FromStringParameters(value); err != nil { + panic(err) + } + var returns Quantity + + _jsii_.StaticInvoke( + "k8s.Quantity", + "fromString", + []interface{}{value}, + &returns, + ) + + return returns +} diff --git a/pods/imports/k8s/Quantity__checks.go b/pods/imports/k8s/Quantity__checks.go new file mode 100644 index 000000000..79ec95b47 --- /dev/null +++ b/pods/imports/k8s/Quantity__checks.go @@ -0,0 +1,23 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" +) + +func validateQuantity_FromNumberParameters(value *float64) error { + if value == nil { + return fmt.Errorf("parameter value is required, but nil was provided") + } + + return nil +} + +func validateQuantity_FromStringParameters(value *string) error { + if value == nil { + return fmt.Errorf("parameter value is required, but nil was provided") + } + + return nil +} diff --git a/pods/imports/k8s/Quantity__no_checks.go b/pods/imports/k8s/Quantity__no_checks.go new file mode 100644 index 000000000..bafa1033c --- /dev/null +++ b/pods/imports/k8s/Quantity__no_checks.go @@ -0,0 +1,13 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateQuantity_FromNumberParameters(value *float64) error { + return nil +} + +func validateQuantity_FromStringParameters(value *string) error { + return nil +} diff --git a/pods/imports/k8s/QueuingConfiguration.go b/pods/imports/k8s/QueuingConfiguration.go new file mode 100644 index 000000000..a4b2e7175 --- /dev/null +++ b/pods/imports/k8s/QueuingConfiguration.go @@ -0,0 +1,17 @@ +package k8s + +// QueuingConfiguration holds the configuration parameters for queuing. +type QueuingConfiguration struct { + // `handSize` is a small positive number that configures the shuffle sharding of requests into queues. + // + // When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. + HandSize *float64 `field:"optional" json:"handSize" yaml:"handSize"` + // `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; + // + // excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. + QueueLengthLimit *float64 `field:"optional" json:"queueLengthLimit" yaml:"queueLengthLimit"` + // `queues` is the number of queues for this priority level. + // + // The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. + Queues *float64 `field:"optional" json:"queues" yaml:"queues"` +} diff --git a/pods/imports/k8s/QuobyteVolumeSource.go b/pods/imports/k8s/QuobyteVolumeSource.go new file mode 100644 index 000000000..43b142ea3 --- /dev/null +++ b/pods/imports/k8s/QuobyteVolumeSource.go @@ -0,0 +1,27 @@ +package k8s + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// +// Quobyte volumes do not support ownership management or SELinux relabeling. +type QuobyteVolumeSource struct { + // registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes. + Registry *string `field:"required" json:"registry" yaml:"registry"` + // volume is a string that references an already created Quobyte volume by name. + Volume *string `field:"required" json:"volume" yaml:"volume"` + // group to map volume access to Default is no group. + // Default: no group. + // + Group *string `field:"optional" json:"group" yaml:"group"` + // readOnly here will force the Quobyte volume to be mounted with read-only permissions. + // + // Defaults to false. + // Default: false. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin. + Tenant *string `field:"optional" json:"tenant" yaml:"tenant"` + // user to map volume access to Defaults to serivceaccount user. + // Default: serivceaccount user. + // + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/RbdPersistentVolumeSource.go b/pods/imports/k8s/RbdPersistentVolumeSource.go new file mode 100644 index 000000000..de6b07cdd --- /dev/null +++ b/pods/imports/k8s/RbdPersistentVolumeSource.go @@ -0,0 +1,49 @@ +package k8s + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// +// RBD volumes support ownership management and SELinux relabeling. +type RbdPersistentVolumeSource struct { + // image is the rados image name. + // + // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + Image *string `field:"required" json:"image" yaml:"image"` + // monitors is a collection of Ceph monitors. + // + // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` + // fsType is the filesystem type of the volume that you want to mount. + // + // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // keyring is the path to key ring for RBDUser. + // + // Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + Keyring *string `field:"optional" json:"keyring" yaml:"keyring"` + // pool is the rados pool name. + // + // Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + Pool *string `field:"optional" json:"pool" yaml:"pool"` + // readOnly here will force the ReadOnly setting in VolumeMounts. + // + // Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is name of the authentication secret for RBDUser. + // + // If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` + // user is the rados user name. + // + // Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/RbdVolumeSource.go b/pods/imports/k8s/RbdVolumeSource.go new file mode 100644 index 000000000..e0f3a3462 --- /dev/null +++ b/pods/imports/k8s/RbdVolumeSource.go @@ -0,0 +1,49 @@ +package k8s + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// +// RBD volumes support ownership management and SELinux relabeling. +type RbdVolumeSource struct { + // image is the rados image name. + // + // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + Image *string `field:"required" json:"image" yaml:"image"` + // monitors is a collection of Ceph monitors. + // + // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` + // fsType is the filesystem type of the volume that you want to mount. + // + // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // keyring is the path to key ring for RBDUser. + // + // Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + Keyring *string `field:"optional" json:"keyring" yaml:"keyring"` + // pool is the rados pool name. + // + // Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + Pool *string `field:"optional" json:"pool" yaml:"pool"` + // readOnly here will force the ReadOnly setting in VolumeMounts. + // + // Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef is name of the authentication secret for RBDUser. + // + // If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` + // user is the rados user name. + // + // Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // Default: admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + // + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/ReplicaSetSpec.go b/pods/imports/k8s/ReplicaSetSpec.go new file mode 100644 index 000000000..47d515351 --- /dev/null +++ b/pods/imports/k8s/ReplicaSetSpec.go @@ -0,0 +1,25 @@ +package k8s + +// ReplicaSetSpec is the specification of a ReplicaSet. +type ReplicaSetSpec struct { + // Selector is a label query over pods that should match the replica count. + // + // Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` + // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. + // + // Defaults to 0 (pod will be considered available as soon as it is ready). + // Default: 0 (pod will be considered available as soon as it is ready). + // + MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` + // Replicas is the number of desired replicas. + // + // This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // Default: 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // + Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` + // Template is the object that describes the pod that will be created if insufficient replicas are detected. + // + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` +} diff --git a/pods/imports/k8s/ReplicationControllerSpec.go b/pods/imports/k8s/ReplicationControllerSpec.go new file mode 100644 index 000000000..99bbf030d --- /dev/null +++ b/pods/imports/k8s/ReplicationControllerSpec.go @@ -0,0 +1,25 @@ +package k8s + +// ReplicationControllerSpec is the specification of a replication controller. +type ReplicationControllerSpec struct { + // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. + // + // Defaults to 0 (pod will be considered available as soon as it is ready). + // Default: 0 (pod will be considered available as soon as it is ready). + // + MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` + // Replicas is the number of desired replicas. + // + // This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + // Default: 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + // + Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` + // Selector is a label query over pods that should match the Replicas count. + // + // If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + Selector *map[string]*string `field:"optional" json:"selector" yaml:"selector"` + // Template is the object that describes the pod that will be created if insufficient replicas are detected. + // + // This takes precedence over a TemplateRef. The only allowed template.spec.restartPolicy value is "Always". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` +} diff --git a/pods/imports/k8s/ResourceAttributes.go b/pods/imports/k8s/ResourceAttributes.go new file mode 100644 index 000000000..9de2de71b --- /dev/null +++ b/pods/imports/k8s/ResourceAttributes.go @@ -0,0 +1,41 @@ +package k8s + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface. +type ResourceAttributes struct { + // fieldSelector describes the limitation on access based on field. It can only limit access, not broaden it. + // + // This field is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default). + FieldSelector *FieldSelectorAttributes `field:"optional" json:"fieldSelector" yaml:"fieldSelector"` + // Group is the API Group of the Resource. + // + // "*" means all. + Group *string `field:"optional" json:"group" yaml:"group"` + // labelSelector describes the limitation on access based on labels. It can only limit access, not broaden it. + // + // This field is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default). + LabelSelector *LabelSelectorAttributes `field:"optional" json:"labelSelector" yaml:"labelSelector"` + // Name is the name of the resource being requested for a "get" or deleted for a "delete". + // + // "" (empty) means all. + Name *string `field:"optional" json:"name" yaml:"name"` + // Namespace is the namespace of the action being requested. + // + // Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` + // Resource is one of the existing resource types. + // + // "*" means all. + Resource *string `field:"optional" json:"resource" yaml:"resource"` + // Subresource is one of the existing resource types. + // + // "" means none. + Subresource *string `field:"optional" json:"subresource" yaml:"subresource"` + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. + // + // "*" means all. + Verb *string `field:"optional" json:"verb" yaml:"verb"` + // Version is the API Version of the Resource. + // + // "*" means all. + Version *string `field:"optional" json:"version" yaml:"version"` +} diff --git a/pods/imports/k8s/ResourceClaim.go b/pods/imports/k8s/ResourceClaim.go new file mode 100644 index 000000000..3b7380f9b --- /dev/null +++ b/pods/imports/k8s/ResourceClaim.go @@ -0,0 +1,11 @@ +package k8s + +// ResourceClaim references one entry in PodSpec.ResourceClaims. +type ResourceClaim struct { + // Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + Name *string `field:"required" json:"name" yaml:"name"` + // Request is the name chosen for a request in the referenced claim. + // + // If empty, everything from the claim is made available, otherwise only the result of this request. + Request *string `field:"optional" json:"request" yaml:"request"` +} diff --git a/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go b/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go new file mode 100644 index 000000000..4b71f5bc8 --- /dev/null +++ b/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go @@ -0,0 +1,7 @@ +package k8s + +// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it. +type ResourceClaimSpecV1Alpha3 struct { + // Devices defines how to request devices. + Devices *DeviceClaimV1Alpha3 `field:"optional" json:"devices" yaml:"devices"` +} diff --git a/pods/imports/k8s/ResourceClaimSpecV1Beta1.go b/pods/imports/k8s/ResourceClaimSpecV1Beta1.go new file mode 100644 index 000000000..846a8497d --- /dev/null +++ b/pods/imports/k8s/ResourceClaimSpecV1Beta1.go @@ -0,0 +1,7 @@ +package k8s + +// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it. +type ResourceClaimSpecV1Beta1 struct { + // Devices defines how to request devices. + Devices *DeviceClaimV1Beta1 `field:"optional" json:"devices" yaml:"devices"` +} diff --git a/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go b/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go new file mode 100644 index 000000000..9ad42c0b0 --- /dev/null +++ b/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go @@ -0,0 +1,13 @@ +package k8s + +// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim. +type ResourceClaimTemplateSpecV1Alpha3 struct { + // Spec for the ResourceClaim. + // + // The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here. + Spec *ResourceClaimSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` + // ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim when creating it. + // + // No other fields are allowed and will be rejected during validation. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go b/pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go new file mode 100644 index 000000000..c18cd1bb2 --- /dev/null +++ b/pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go @@ -0,0 +1,13 @@ +package k8s + +// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim. +type ResourceClaimTemplateSpecV1Beta1 struct { + // Spec for the ResourceClaim. + // + // The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here. + Spec *ResourceClaimSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` + // ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim when creating it. + // + // No other fields are allowed and will be rejected during validation. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} diff --git a/pods/imports/k8s/ResourceFieldSelector.go b/pods/imports/k8s/ResourceFieldSelector.go new file mode 100644 index 000000000..39e67d39c --- /dev/null +++ b/pods/imports/k8s/ResourceFieldSelector.go @@ -0,0 +1,11 @@ +package k8s + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format. +type ResourceFieldSelector struct { + // Required: resource to select. + Resource *string `field:"required" json:"resource" yaml:"resource"` + // Container name: required for volumes, optional for env vars. + ContainerName *string `field:"optional" json:"containerName" yaml:"containerName"` + // Specifies the output format of the exposed resources, defaults to "1". + Divisor Quantity `field:"optional" json:"divisor" yaml:"divisor"` +} diff --git a/pods/imports/k8s/ResourceMetricSourceV2.go b/pods/imports/k8s/ResourceMetricSourceV2.go new file mode 100644 index 000000000..8eec73487 --- /dev/null +++ b/pods/imports/k8s/ResourceMetricSourceV2.go @@ -0,0 +1,9 @@ +package k8s + +// ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set. +type ResourceMetricSourceV2 struct { + // name is the name of the resource in question. + Name *string `field:"required" json:"name" yaml:"name"` + // target specifies the target value for the given metric. + Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` +} diff --git a/pods/imports/k8s/ResourcePolicyRule.go b/pods/imports/k8s/ResourcePolicyRule.go new file mode 100644 index 000000000..a093401af --- /dev/null +++ b/pods/imports/k8s/ResourcePolicyRule.go @@ -0,0 +1,25 @@ +package k8s + +// ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. +// +// A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==""`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace. +type ResourcePolicyRule struct { + // `apiGroups` is a list of matching API groups and may not be empty. + // + // "*" matches all API groups and, if present, must be the only entry. Required. + ApiGroups *[]*string `field:"required" json:"apiGroups" yaml:"apiGroups"` + // `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required. + Resources *[]*string `field:"required" json:"resources" yaml:"resources"` + // `verbs` is a list of matching verbs and may not be empty. + // + // "*" matches all verbs and, if present, must be the only entry. Required. + Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` + // `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). + // + // If this field is omitted or false then the `namespaces` field must contain a non-empty list. + ClusterScope *bool `field:"optional" json:"clusterScope" yaml:"clusterScope"` + // `namespaces` is a list of target namespaces that restricts matches. + // + // A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. + Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` +} diff --git a/pods/imports/k8s/ResourcePoolV1Alpha3.go b/pods/imports/k8s/ResourcePoolV1Alpha3.go new file mode 100644 index 000000000..974314ca4 --- /dev/null +++ b/pods/imports/k8s/ResourcePoolV1Alpha3.go @@ -0,0 +1,21 @@ +package k8s + +// ResourcePool describes the pool that ResourceSlices belong to. +type ResourcePoolV1Alpha3 struct { + // Generation tracks the change in a pool over time. + // + // Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted. + // + // Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state. + Generation *float64 `field:"required" json:"generation" yaml:"generation"` + // Name is used to identify the pool. + // + // For node-local devices, this is often the node name, but this is not required. + // + // It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable. + Name *string `field:"required" json:"name" yaml:"name"` + // ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero. + // + // Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool. + ResourceSliceCount *float64 `field:"required" json:"resourceSliceCount" yaml:"resourceSliceCount"` +} diff --git a/pods/imports/k8s/ResourcePoolV1Beta1.go b/pods/imports/k8s/ResourcePoolV1Beta1.go new file mode 100644 index 000000000..e5486f36a --- /dev/null +++ b/pods/imports/k8s/ResourcePoolV1Beta1.go @@ -0,0 +1,21 @@ +package k8s + +// ResourcePool describes the pool that ResourceSlices belong to. +type ResourcePoolV1Beta1 struct { + // Generation tracks the change in a pool over time. + // + // Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted. + // + // Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state. + Generation *float64 `field:"required" json:"generation" yaml:"generation"` + // Name is used to identify the pool. + // + // For node-local devices, this is often the node name, but this is not required. + // + // It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable. + Name *string `field:"required" json:"name" yaml:"name"` + // ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero. + // + // Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool. + ResourceSliceCount *float64 `field:"required" json:"resourceSliceCount" yaml:"resourceSliceCount"` +} diff --git a/pods/imports/k8s/ResourceQuotaSpec.go b/pods/imports/k8s/ResourceQuotaSpec.go new file mode 100644 index 000000000..93b0b82c3 --- /dev/null +++ b/pods/imports/k8s/ResourceQuotaSpec.go @@ -0,0 +1,17 @@ +package k8s + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota. +type ResourceQuotaSpec struct { + // hard is the set of desired hard limits for each named resource. + // + // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ + Hard *map[string]Quantity `field:"optional" json:"hard" yaml:"hard"` + // A collection of filters that must match each object tracked by a quota. + // + // If not specified, the quota matches all objects. + Scopes *[]*string `field:"optional" json:"scopes" yaml:"scopes"` + // scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota but expressed using ScopeSelectorOperator in combination with possible values. + // + // For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched. + ScopeSelector *ScopeSelector `field:"optional" json:"scopeSelector" yaml:"scopeSelector"` +} diff --git a/pods/imports/k8s/ResourceRequirements.go b/pods/imports/k8s/ResourceRequirements.go new file mode 100644 index 000000000..7da83b94a --- /dev/null +++ b/pods/imports/k8s/ResourceRequirements.go @@ -0,0 +1,19 @@ +package k8s + +// ResourceRequirements describes the compute resource requirements. +type ResourceRequirements struct { + // Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + // + // This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + // + // This field is immutable. It can only be set for containers. + Claims *[]*ResourceClaim `field:"optional" json:"claims" yaml:"claims"` + // Limits describes the maximum amount of compute resources allowed. + // + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Limits *map[string]Quantity `field:"optional" json:"limits" yaml:"limits"` + // Requests describes the minimum amount of compute resources required. + // + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Requests *map[string]Quantity `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go b/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go new file mode 100644 index 000000000..45c7a3cfd --- /dev/null +++ b/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go @@ -0,0 +1,35 @@ +package k8s + +// ResourceSliceSpec contains the information published by the driver in one ResourceSlice. +type ResourceSliceSpecV1Alpha3 struct { + // Driver identifies the DRA driver providing the capacity information. + // + // A field selector can be used to list only ResourceSlice objects with a certain driver name. + // + // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // Pool describes the pool that this ResourceSlice belongs to. + Pool *ResourcePoolV1Alpha3 `field:"required" json:"pool" yaml:"pool"` + // AllNodes indicates that all nodes have access to the resources in the pool. + // + // Exactly one of NodeName, NodeSelector and AllNodes must be set. + AllNodes *bool `field:"optional" json:"allNodes" yaml:"allNodes"` + // Devices lists some or all of the devices in this pool. + // + // Must not have more than 128 entries. + Devices *[]*DeviceV1Alpha3 `field:"optional" json:"devices" yaml:"devices"` + // NodeName identifies the node which provides the resources in this pool. + // + // A field selector can be used to list only ResourceSlice objects belonging to a certain node. + // + // This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available. + // + // Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable. + NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` + // NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node. + // + // Must use exactly one term. + // + // Exactly one of NodeName, NodeSelector and AllNodes must be set. + NodeSelector *NodeSelector `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` +} diff --git a/pods/imports/k8s/ResourceSliceSpecV1Beta1.go b/pods/imports/k8s/ResourceSliceSpecV1Beta1.go new file mode 100644 index 000000000..a77495179 --- /dev/null +++ b/pods/imports/k8s/ResourceSliceSpecV1Beta1.go @@ -0,0 +1,35 @@ +package k8s + +// ResourceSliceSpec contains the information published by the driver in one ResourceSlice. +type ResourceSliceSpecV1Beta1 struct { + // Driver identifies the DRA driver providing the capacity information. + // + // A field selector can be used to list only ResourceSlice objects with a certain driver name. + // + // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable. + Driver *string `field:"required" json:"driver" yaml:"driver"` + // Pool describes the pool that this ResourceSlice belongs to. + Pool *ResourcePoolV1Beta1 `field:"required" json:"pool" yaml:"pool"` + // AllNodes indicates that all nodes have access to the resources in the pool. + // + // Exactly one of NodeName, NodeSelector and AllNodes must be set. + AllNodes *bool `field:"optional" json:"allNodes" yaml:"allNodes"` + // Devices lists some or all of the devices in this pool. + // + // Must not have more than 128 entries. + Devices *[]*DeviceV1Beta1 `field:"optional" json:"devices" yaml:"devices"` + // NodeName identifies the node which provides the resources in this pool. + // + // A field selector can be used to list only ResourceSlice objects belonging to a certain node. + // + // This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available. + // + // Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable. + NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` + // NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node. + // + // Must use exactly one term. + // + // Exactly one of NodeName, NodeSelector and AllNodes must be set. + NodeSelector *NodeSelector `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` +} diff --git a/pods/imports/k8s/RoleRef.go b/pods/imports/k8s/RoleRef.go new file mode 100644 index 000000000..c88b038b6 --- /dev/null +++ b/pods/imports/k8s/RoleRef.go @@ -0,0 +1,11 @@ +package k8s + +// RoleRef contains information that points to the role being used. +type RoleRef struct { + // APIGroup is the group for the resource being referenced. + ApiGroup *string `field:"required" json:"apiGroup" yaml:"apiGroup"` + // Kind is the type of resource being referenced. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // Name is the name of resource being referenced. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/RollingUpdateDaemonSet.go b/pods/imports/k8s/RollingUpdateDaemonSet.go new file mode 100644 index 000000000..207bdb686 --- /dev/null +++ b/pods/imports/k8s/RollingUpdateDaemonSet.go @@ -0,0 +1,13 @@ +package k8s + +// Spec to control the desired behavior of daemon set rolling update. +type RollingUpdateDaemonSet struct { + // The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. + // + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. + MaxSurge IntOrString `field:"optional" json:"maxSurge" yaml:"maxSurge"` + // The maximum number of DaemonSet pods that can be unavailable during the update. + // + // Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update. + MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` +} diff --git a/pods/imports/k8s/RollingUpdateDeployment.go b/pods/imports/k8s/RollingUpdateDeployment.go new file mode 100644 index 000000000..04037735a --- /dev/null +++ b/pods/imports/k8s/RollingUpdateDeployment.go @@ -0,0 +1,17 @@ +package k8s + +// Spec to control the desired behavior of rolling update. +type RollingUpdateDeployment struct { + // The maximum number of pods that can be scheduled above the desired number of pods. + // + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods. + // Default: 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods. + // + MaxSurge IntOrString `field:"optional" json:"maxSurge" yaml:"maxSurge"` + // The maximum number of pods that can be unavailable during the update. + // + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods. + // Default: 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods. + // + MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` +} diff --git a/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go b/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go new file mode 100644 index 000000000..3bb7183da --- /dev/null +++ b/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go @@ -0,0 +1,15 @@ +package k8s + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +type RollingUpdateStatefulSetStrategy struct { + // The maximum number of pods that can be unavailable during the update. + // + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable. + // Default: 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable. + // + MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` + // Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. + // + // During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0. + Partition *float64 `field:"optional" json:"partition" yaml:"partition"` +} diff --git a/pods/imports/k8s/RuleWithOperations.go b/pods/imports/k8s/RuleWithOperations.go new file mode 100644 index 000000000..8579f83c1 --- /dev/null +++ b/pods/imports/k8s/RuleWithOperations.go @@ -0,0 +1,33 @@ +package k8s + +// RuleWithOperations is a tuple of Operations and Resources. +// +// It is recommended to make sure that all the tuple expansions are valid. +type RuleWithOperations struct { + // APIGroups is the API groups the resources belong to. + // + // '*' is all groups. If '*' is present, the length of the slice must be one. Required. + ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` + // APIVersions is the API versions the resources belong to. + // + // '*' is all versions. If '*' is present, the length of the slice must be one. Required. + ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` + // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. + // + // If '*' is present, the length of the slice must be one. Required. + Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` + // Resources is a list of resources this rule applies to. + // + // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. Required. + Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` + // scope specifies the scope of this rule. + // + // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". + // Default: . + // + Scope *string `field:"optional" json:"scope" yaml:"scope"` +} diff --git a/pods/imports/k8s/ScaleIoPersistentVolumeSource.go b/pods/imports/k8s/ScaleIoPersistentVolumeSource.go new file mode 100644 index 000000000..fd2241ca4 --- /dev/null +++ b/pods/imports/k8s/ScaleIoPersistentVolumeSource.go @@ -0,0 +1,37 @@ +package k8s + +// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume. +type ScaleIoPersistentVolumeSource struct { + // gateway is the host address of the ScaleIO API Gateway. + Gateway *string `field:"required" json:"gateway" yaml:"gateway"` + // secretRef references to the secret for ScaleIO user and other sensitive information. + // + // If this is not provided, Login operation will fail. + SecretRef *SecretReference `field:"required" json:"secretRef" yaml:"secretRef"` + // system is the name of the storage system as configured in ScaleIO. + System *string `field:"required" json:"system" yaml:"system"` + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs" + // Default: xfs". + // + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + ProtectionDomain *string `field:"optional" json:"protectionDomain" yaml:"protectionDomain"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // sslEnabled is the flag to enable/disable SSL communication with Gateway, default false. + SslEnabled *bool `field:"optional" json:"sslEnabled" yaml:"sslEnabled"` + // storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // + // Default is ThinProvisioned. + // Default: ThinProvisioned. + // + StorageMode *string `field:"optional" json:"storageMode" yaml:"storageMode"` + // storagePool is the ScaleIO Storage Pool associated with the protection domain. + StoragePool *string `field:"optional" json:"storagePool" yaml:"storagePool"` + // volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` +} diff --git a/pods/imports/k8s/ScaleIoVolumeSource.go b/pods/imports/k8s/ScaleIoVolumeSource.go new file mode 100644 index 000000000..106839c10 --- /dev/null +++ b/pods/imports/k8s/ScaleIoVolumeSource.go @@ -0,0 +1,39 @@ +package k8s + +// ScaleIOVolumeSource represents a persistent ScaleIO volume. +type ScaleIoVolumeSource struct { + // gateway is the host address of the ScaleIO API Gateway. + Gateway *string `field:"required" json:"gateway" yaml:"gateway"` + // secretRef references to the secret for ScaleIO user and other sensitive information. + // + // If this is not provided, Login operation will fail. + SecretRef *LocalObjectReference `field:"required" json:"secretRef" yaml:"secretRef"` + // system is the name of the storage system as configured in ScaleIO. + System *string `field:"required" json:"system" yaml:"system"` + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + // Default: xfs". + // + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + ProtectionDomain *string `field:"optional" json:"protectionDomain" yaml:"protectionDomain"` + // readOnly Defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // sslEnabled Flag enable/disable SSL communication with Gateway, default false. + SslEnabled *bool `field:"optional" json:"sslEnabled" yaml:"sslEnabled"` + // storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // + // Default is ThinProvisioned. + // Default: ThinProvisioned. + // + StorageMode *string `field:"optional" json:"storageMode" yaml:"storageMode"` + // storagePool is the ScaleIO Storage Pool associated with the protection domain. + StoragePool *string `field:"optional" json:"storagePool" yaml:"storagePool"` + // volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` +} diff --git a/pods/imports/k8s/ScaleSpec.go b/pods/imports/k8s/ScaleSpec.go new file mode 100644 index 000000000..3d3853599 --- /dev/null +++ b/pods/imports/k8s/ScaleSpec.go @@ -0,0 +1,7 @@ +package k8s + +// ScaleSpec describes the attributes of a scale subresource. +type ScaleSpec struct { + // replicas is the desired number of instances for the scaled object. + Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` +} diff --git a/pods/imports/k8s/Scheduling.go b/pods/imports/k8s/Scheduling.go new file mode 100644 index 000000000..ba799d34b --- /dev/null +++ b/pods/imports/k8s/Scheduling.go @@ -0,0 +1,11 @@ +package k8s + +// Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass. +type Scheduling struct { + // nodeSelector lists labels that must be present on nodes that support this RuntimeClass. + // + // Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission. + NodeSelector *map[string]*string `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` + // tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass. + Tolerations *[]*Toleration `field:"optional" json:"tolerations" yaml:"tolerations"` +} diff --git a/pods/imports/k8s/ScopeSelector.go b/pods/imports/k8s/ScopeSelector.go new file mode 100644 index 000000000..b93012cb6 --- /dev/null +++ b/pods/imports/k8s/ScopeSelector.go @@ -0,0 +1,7 @@ +package k8s + +// A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements. +type ScopeSelector struct { + // A list of scope selector requirements by scope of the resources. + MatchExpressions *[]*ScopedResourceSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` +} diff --git a/pods/imports/k8s/ScopedResourceSelectorRequirement.go b/pods/imports/k8s/ScopedResourceSelectorRequirement.go new file mode 100644 index 000000000..ad4213454 --- /dev/null +++ b/pods/imports/k8s/ScopedResourceSelectorRequirement.go @@ -0,0 +1,15 @@ +package k8s + +// A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values. +type ScopedResourceSelectorRequirement struct { + // Represents a scope's relationship to a set of values. + // + // Valid operators are In, NotIn, Exists, DoesNotExist. + Operator *string `field:"required" json:"operator" yaml:"operator"` + // The name of the scope that the selector applies to. + ScopeName *string `field:"required" json:"scopeName" yaml:"scopeName"` + // An array of string values. + // + // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + Values *[]*string `field:"optional" json:"values" yaml:"values"` +} diff --git a/pods/imports/k8s/SeLinuxOptions.go b/pods/imports/k8s/SeLinuxOptions.go new file mode 100644 index 000000000..32c0c0e78 --- /dev/null +++ b/pods/imports/k8s/SeLinuxOptions.go @@ -0,0 +1,13 @@ +package k8s + +// SELinuxOptions are the labels to be applied to the container. +type SeLinuxOptions struct { + // Level is SELinux level label that applies to the container. + Level *string `field:"optional" json:"level" yaml:"level"` + // Role is a SELinux role label that applies to the container. + Role *string `field:"optional" json:"role" yaml:"role"` + // Type is a SELinux type label that applies to the container. + Type *string `field:"optional" json:"type" yaml:"type"` + // User is a SELinux user label that applies to the container. + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/SeccompProfile.go b/pods/imports/k8s/SeccompProfile.go new file mode 100644 index 000000000..cd95236c5 --- /dev/null +++ b/pods/imports/k8s/SeccompProfile.go @@ -0,0 +1,15 @@ +package k8s + +// SeccompProfile defines a pod/container's seccomp profile settings. +// +// Only one profile source may be set. +type SeccompProfile struct { + // type indicates which kind of seccomp profile will be applied. Valid options are:. + // + // Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. + Type *string `field:"required" json:"type" yaml:"type"` + // localhostProfile indicates a profile defined in a file on the node should be used. + // + // The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + LocalhostProfile *string `field:"optional" json:"localhostProfile" yaml:"localhostProfile"` +} diff --git a/pods/imports/k8s/SecretEnvSource.go b/pods/imports/k8s/SecretEnvSource.go new file mode 100644 index 000000000..6144aeca9 --- /dev/null +++ b/pods/imports/k8s/SecretEnvSource.go @@ -0,0 +1,13 @@ +package k8s + +// SecretEnvSource selects a Secret to populate the environment variables with. +// +// The contents of the target Secret's Data field will represent the key-value pairs as environment variables. +type SecretEnvSource struct { + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/SecretKeySelector.go b/pods/imports/k8s/SecretKeySelector.go new file mode 100644 index 000000000..27f019df4 --- /dev/null +++ b/pods/imports/k8s/SecretKeySelector.go @@ -0,0 +1,15 @@ +package k8s + +// SecretKeySelector selects a key of a Secret. +type SecretKeySelector struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/SecretProjection.go b/pods/imports/k8s/SecretProjection.go new file mode 100644 index 000000000..79ae65ab2 --- /dev/null +++ b/pods/imports/k8s/SecretProjection.go @@ -0,0 +1,17 @@ +package k8s + +// Adapts a secret into a projected volume. +// +// The contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode. +type SecretProjection struct { + // items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. + // + // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` + // Name of the referent. + // + // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"optional" json:"name" yaml:"name"` + // optional field specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} diff --git a/pods/imports/k8s/SecretReference.go b/pods/imports/k8s/SecretReference.go new file mode 100644 index 000000000..3981dc7de --- /dev/null +++ b/pods/imports/k8s/SecretReference.go @@ -0,0 +1,11 @@ +package k8s + +// SecretReference represents a Secret Reference. +// +// It has enough information to retrieve secret in any namespace. +type SecretReference struct { + // name is unique within a namespace to reference a secret resource. + Name *string `field:"optional" json:"name" yaml:"name"` + // namespace defines the space within which the secret name must be unique. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` +} diff --git a/pods/imports/k8s/SecretVolumeSource.go b/pods/imports/k8s/SecretVolumeSource.go new file mode 100644 index 000000000..b456bbba7 --- /dev/null +++ b/pods/imports/k8s/SecretVolumeSource.go @@ -0,0 +1,23 @@ +package k8s + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling. +type SecretVolumeSource struct { + // defaultMode is Optional: mode bits used to set permissions on created files by default. + // + // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + // Default: 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + // + DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` + // items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. + // + // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` + // optional field specify whether the Secret or its keys must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` + // secretName is the name of the secret in the pod's namespace to use. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + SecretName *string `field:"optional" json:"secretName" yaml:"secretName"` +} diff --git a/pods/imports/k8s/SecurityContext.go b/pods/imports/k8s/SecurityContext.go new file mode 100644 index 000000000..54e42109c --- /dev/null +++ b/pods/imports/k8s/SecurityContext.go @@ -0,0 +1,63 @@ +package k8s + +// SecurityContext holds security configuration that will be applied to a container. +// +// Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. +type SecurityContext struct { + // AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. + // + // This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. + AllowPrivilegeEscalation *bool `field:"optional" json:"allowPrivilegeEscalation" yaml:"allowPrivilegeEscalation"` + // appArmorProfile is the AppArmor options to use by this container. + // + // If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows. + AppArmorProfile *AppArmorProfile `field:"optional" json:"appArmorProfile" yaml:"appArmorProfile"` + // The capabilities to add/drop when running containers. + // + // Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. + // Default: the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. + // + Capabilities *Capabilities `field:"optional" json:"capabilities" yaml:"capabilities"` + // Run container in privileged mode. + // + // Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. + // Default: false. Note that this field cannot be set when spec.os.name is windows. + // + Privileged *bool `field:"optional" json:"privileged" yaml:"privileged"` + // procMount denotes the type of proc mount to use for the containers. + // + // The default value is Default which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. + ProcMount *string `field:"optional" json:"procMount" yaml:"procMount"` + // Whether this container has a read-only root filesystem. + // + // Default is false. Note that this field cannot be set when spec.os.name is windows. + // Default: false. Note that this field cannot be set when spec.os.name is windows. + // + ReadOnlyRootFilesystem *bool `field:"optional" json:"readOnlyRootFilesystem" yaml:"readOnlyRootFilesystem"` + // The GID to run the entrypoint of the container process. + // + // Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + RunAsGroup *float64 `field:"optional" json:"runAsGroup" yaml:"runAsGroup"` + // Indicates that the container must run as a non-root user. + // + // If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsNonRoot *bool `field:"optional" json:"runAsNonRoot" yaml:"runAsNonRoot"` + // The UID to run the entrypoint of the container process. + // + // Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + // Default: user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + // + RunAsUser *float64 `field:"optional" json:"runAsUser" yaml:"runAsUser"` + // The seccomp options to use by this container. + // + // If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. + SeccompProfile *SeccompProfile `field:"optional" json:"seccompProfile" yaml:"seccompProfile"` + // The SELinux context to be applied to the container. + // + // If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + SeLinuxOptions *SeLinuxOptions `field:"optional" json:"seLinuxOptions" yaml:"seLinuxOptions"` + // The Windows specific settings applied to all containers. + // + // If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + WindowsOptions *WindowsSecurityContextOptions `field:"optional" json:"windowsOptions" yaml:"windowsOptions"` +} diff --git a/pods/imports/k8s/SelectableField.go b/pods/imports/k8s/SelectableField.go new file mode 100644 index 000000000..9c649b0ce --- /dev/null +++ b/pods/imports/k8s/SelectableField.go @@ -0,0 +1,9 @@ +package k8s + +// SelectableField specifies the JSON path of a field that may be used with field selectors. +type SelectableField struct { + // jsonPath is a simple JSON path which is evaluated against each custom resource to produce a field selector value. + // + // Only JSON paths without the array notation are allowed. Must point to a field of type string, boolean or integer. Types with enum values and strings with formats are allowed. If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string. Must not point to metdata fields. Required. + JsonPath *string `field:"required" json:"jsonPath" yaml:"jsonPath"` +} diff --git a/pods/imports/k8s/SelfSubjectAccessReviewSpec.go b/pods/imports/k8s/SelfSubjectAccessReviewSpec.go new file mode 100644 index 000000000..d127271d2 --- /dev/null +++ b/pods/imports/k8s/SelfSubjectAccessReviewSpec.go @@ -0,0 +1,11 @@ +package k8s + +// SelfSubjectAccessReviewSpec is a description of the access request. +// +// Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set. +type SelfSubjectAccessReviewSpec struct { + // NonResourceAttributes describes information for a non-resource access request. + NonResourceAttributes *NonResourceAttributes `field:"optional" json:"nonResourceAttributes" yaml:"nonResourceAttributes"` + // ResourceAuthorizationAttributes describes information for a resource access request. + ResourceAttributes *ResourceAttributes `field:"optional" json:"resourceAttributes" yaml:"resourceAttributes"` +} diff --git a/pods/imports/k8s/SelfSubjectRulesReviewSpec.go b/pods/imports/k8s/SelfSubjectRulesReviewSpec.go new file mode 100644 index 000000000..c0c1e62a9 --- /dev/null +++ b/pods/imports/k8s/SelfSubjectRulesReviewSpec.go @@ -0,0 +1,9 @@ +package k8s + +// SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview. +type SelfSubjectRulesReviewSpec struct { + // Namespace to evaluate rules for. + // + // Required. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` +} diff --git a/pods/imports/k8s/ServiceAccountTokenProjection.go b/pods/imports/k8s/ServiceAccountTokenProjection.go new file mode 100644 index 000000000..113022494 --- /dev/null +++ b/pods/imports/k8s/ServiceAccountTokenProjection.go @@ -0,0 +1,19 @@ +package k8s + +// ServiceAccountTokenProjection represents a projected service account token volume. +// +// This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise). +type ServiceAccountTokenProjection struct { + // path is the path relative to the mount point of the file to project the token into. + Path *string `field:"required" json:"path" yaml:"path"` + // audience is the intended audience of the token. + // + // A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + Audience *string `field:"optional" json:"audience" yaml:"audience"` + // expirationSeconds is the requested duration of validity of the service account token. + // + // As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + // Default: 1 hour and must be at least 10 minutes. + // + ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` +} diff --git a/pods/imports/k8s/ServiceBackendPort.go b/pods/imports/k8s/ServiceBackendPort.go new file mode 100644 index 000000000..2c155e655 --- /dev/null +++ b/pods/imports/k8s/ServiceBackendPort.go @@ -0,0 +1,11 @@ +package k8s + +// ServiceBackendPort is the service port being referenced. +type ServiceBackendPort struct { + // name is the name of the port on the Service. + // + // This is a mutually exclusive setting with "Number". + Name *string `field:"optional" json:"name" yaml:"name"` + // number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name". + Number *float64 `field:"optional" json:"number" yaml:"number"` +} diff --git a/pods/imports/k8s/ServiceCidrSpecV1Beta1.go b/pods/imports/k8s/ServiceCidrSpecV1Beta1.go new file mode 100644 index 000000000..0d9350c2e --- /dev/null +++ b/pods/imports/k8s/ServiceCidrSpecV1Beta1.go @@ -0,0 +1,7 @@ +package k8s + +// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services. +type ServiceCidrSpecV1Beta1 struct { + // CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable. + Cidrs *[]*string `field:"optional" json:"cidrs" yaml:"cidrs"` +} diff --git a/pods/imports/k8s/ServicePort.go b/pods/imports/k8s/ServicePort.go new file mode 100644 index 000000000..00a5681f7 --- /dev/null +++ b/pods/imports/k8s/ServicePort.go @@ -0,0 +1,38 @@ +package k8s + +// ServicePort contains information on service's port. +type ServicePort struct { + // The port that will be exposed by this service. + Port *float64 `field:"required" json:"port" yaml:"port"` + // The application protocol for this port. + // + // This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: + // + // * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). + // + // * Kubernetes-defined prefixed names: + // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- + // * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 + // * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 + // + // * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. + AppProtocol *string `field:"optional" json:"appProtocol" yaml:"appProtocol"` + // The name of this port within the service. + // + // This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. + Name *string `field:"optional" json:"name" yaml:"name"` + // The port on each node on which this service is exposed when type is NodePort or LoadBalancer. + // + // Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + NodePort *float64 `field:"optional" json:"nodePort" yaml:"nodePort"` + // The IP protocol for this port. + // + // Supports "TCP", "UDP", and "SCTP". Default is TCP. + // Default: TCP. + // + Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` + // Number or name of the port to access on the pods targeted by the service. + // + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + TargetPort IntOrString `field:"optional" json:"targetPort" yaml:"targetPort"` +} diff --git a/pods/imports/k8s/ServiceReference.go b/pods/imports/k8s/ServiceReference.go new file mode 100644 index 000000000..8695de0fe --- /dev/null +++ b/pods/imports/k8s/ServiceReference.go @@ -0,0 +1,21 @@ +package k8s + +// ServiceReference holds a reference to Service.legacy.k8s.io. +type ServiceReference struct { + // `name` is the name of the service. + // + // Required. + Name *string `field:"required" json:"name" yaml:"name"` + // `namespace` is the namespace of the service. + // + // Required. + Namespace *string `field:"required" json:"namespace" yaml:"namespace"` + // `path` is an optional URL path which will be sent in any request to this service. + Path *string `field:"optional" json:"path" yaml:"path"` + // If specified, the port on the service that hosting webhook. + // + // Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). + // Default: 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). + // + Port *float64 `field:"optional" json:"port" yaml:"port"` +} diff --git a/pods/imports/k8s/ServiceSpec.go b/pods/imports/k8s/ServiceSpec.go new file mode 100644 index 000000000..923446dd8 --- /dev/null +++ b/pods/imports/k8s/ServiceSpec.go @@ -0,0 +1,89 @@ +package k8s + +// ServiceSpec describes the attributes that a user creates on a service. +type ServiceSpec struct { + // allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. + // + // Default is "true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. + // Default: true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. + // + AllocateLoadBalancerNodePorts *bool `field:"optional" json:"allocateLoadBalancerNodePorts" yaml:"allocateLoadBalancerNodePorts"` + // clusterIP is the IP address of the service and is usually assigned randomly. + // + // If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ClusterIp *string `field:"optional" json:"clusterIp" yaml:"clusterIp"` + // ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. + // + // If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value. + // + // This field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ClusterIPs *[]*string `field:"optional" json:"clusterIPs" yaml:"clusterIPs"` + // externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. + // + // These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. + ExternalIPs *[]*string `field:"optional" json:"externalIPs" yaml:"externalIPs"` + // externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". + ExternalName *string `field:"optional" json:"externalName" yaml:"externalName"` + // externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's "externally-facing" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). + // + // If set to "Local", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, "Cluster", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get "Cluster" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node. + ExternalTrafficPolicy *string `field:"optional" json:"externalTrafficPolicy" yaml:"externalTrafficPolicy"` + // healthCheckNodePort specifies the healthcheck nodePort for the service. + // + // This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set. + HealthCheckNodePort *float64 `field:"optional" json:"healthCheckNodePort" yaml:"healthCheckNodePort"` + // InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. + // + // If set to "Local", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, "Cluster", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). + InternalTrafficPolicy *string `field:"optional" json:"internalTrafficPolicy" yaml:"internalTrafficPolicy"` + // IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This field will be wiped when updating a Service to type ExternalName. + // + // This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. + IpFamilies *[]*string `field:"optional" json:"ipFamilies" yaml:"ipFamilies"` + // IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. + // + // If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. + IpFamilyPolicy *string `field:"optional" json:"ipFamilyPolicy" yaml:"ipFamilyPolicy"` + // loadBalancerClass is the class of the load balancer implementation this Service belongs to. + // + // If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. + LoadBalancerClass *string `field:"optional" json:"loadBalancerClass" yaml:"loadBalancerClass"` + // Only applies to Service Type: LoadBalancer. + // + // This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available. + LoadBalancerIp *string `field:"optional" json:"loadBalancerIp" yaml:"loadBalancerIp"` + // If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. + // + // This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ + LoadBalancerSourceRanges *[]*string `field:"optional" json:"loadBalancerSourceRanges" yaml:"loadBalancerSourceRanges"` + // The list of ports that are exposed by this service. + // + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + Ports *[]*ServicePort `field:"optional" json:"ports" yaml:"ports"` + // publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. + // + // The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered "ready" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior. + PublishNotReadyAddresses *bool `field:"optional" json:"publishNotReadyAddresses" yaml:"publishNotReadyAddresses"` + // Route service traffic to pods with label keys and values matching this selector. + // + // If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/ + Selector *map[string]*string `field:"optional" json:"selector" yaml:"selector"` + // Supports "ClientIP" and "None". + // + // Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // Default: None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // + SessionAffinity *string `field:"optional" json:"sessionAffinity" yaml:"sessionAffinity"` + // sessionAffinityConfig contains the configurations of session affinity. + SessionAffinityConfig *SessionAffinityConfig `field:"optional" json:"sessionAffinityConfig" yaml:"sessionAffinityConfig"` + // TrafficDistribution offers a way to express preferences for how traffic is distributed to Service endpoints. + // + // Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to "PreferClose", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is a beta field and requires enabling ServiceTrafficDistribution feature. + TrafficDistribution *string `field:"optional" json:"trafficDistribution" yaml:"trafficDistribution"` + // type determines how the Service is exposed. + // + // Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + // Default: ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + // + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/SessionAffinityConfig.go b/pods/imports/k8s/SessionAffinityConfig.go new file mode 100644 index 000000000..a1a4c6640 --- /dev/null +++ b/pods/imports/k8s/SessionAffinityConfig.go @@ -0,0 +1,7 @@ +package k8s + +// SessionAffinityConfig represents the configurations of session affinity. +type SessionAffinityConfig struct { + // clientIP contains the configurations of Client IP based session affinity. + ClientIp *ClientIpConfig `field:"optional" json:"clientIp" yaml:"clientIp"` +} diff --git a/pods/imports/k8s/SleepAction.go b/pods/imports/k8s/SleepAction.go new file mode 100644 index 000000000..9b73bb0e2 --- /dev/null +++ b/pods/imports/k8s/SleepAction.go @@ -0,0 +1,7 @@ +package k8s + +// SleepAction describes a "sleep" action. +type SleepAction struct { + // Seconds is the number of seconds to sleep. + Seconds *float64 `field:"required" json:"seconds" yaml:"seconds"` +} diff --git a/pods/imports/k8s/StatefulSetOrdinals.go b/pods/imports/k8s/StatefulSetOrdinals.go new file mode 100644 index 000000000..79aff7d64 --- /dev/null +++ b/pods/imports/k8s/StatefulSetOrdinals.go @@ -0,0 +1,12 @@ +package k8s + +// StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet. +type StatefulSetOrdinals struct { + // start is the number representing the first replica's index. + // + // It may be used to number replicas from an alternate index (eg: 1-indexed) over the default 0-indexed names, or to orchestrate progressive movement of replicas from one StatefulSet to another. If set, replica indices will be in the range: + // [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas). + // If unset, defaults to 0. Replica indices will be in the range: + // [0, .spec.replicas). + Start *float64 `field:"optional" json:"start" yaml:"start"` +} diff --git a/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go b/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go new file mode 100644 index 000000000..bbbb8923f --- /dev/null +++ b/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go @@ -0,0 +1,13 @@ +package k8s + +// StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. +type StatefulSetPersistentVolumeClaimRetentionPolicy struct { + // WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. + // + // The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted. + WhenDeleted *string `field:"optional" json:"whenDeleted" yaml:"whenDeleted"` + // WhenScaled specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is scaled down. + // + // The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted. + WhenScaled *string `field:"optional" json:"whenScaled" yaml:"whenScaled"` +} diff --git a/pods/imports/k8s/StatefulSetSpec.go b/pods/imports/k8s/StatefulSetSpec.go new file mode 100644 index 000000000..db5abc9b3 --- /dev/null +++ b/pods/imports/k8s/StatefulSetSpec.go @@ -0,0 +1,49 @@ +package k8s + +// A StatefulSetSpec is the specification of a StatefulSet. +type StatefulSetSpec struct { + // selector is a label query over pods that should match the replica count. + // + // It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` + // serviceName is the name of the service that governs this StatefulSet. + // + // This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller. + ServiceName *string `field:"required" json:"serviceName" yaml:"serviceName"` + // template is the object that describes the pod that will be created if insufficient replicas are detected. + // + // Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet. Each pod will be named with the format -. For example, a pod in a StatefulSet named "web" with index number "3" would be named "web-3". The only allowed template.spec.restartPolicy value is "Always". + Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` + // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. + // + // Defaults to 0 (pod will be considered available as soon as it is ready). + // Default: 0 (pod will be considered available as soon as it is ready). + // + MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` + // ordinals controls the numbering of replica indices in a StatefulSet. + // + // The default ordinals behavior assigns a "0" index to the first replica and increments the index by one for each additional replica requested. + Ordinals *StatefulSetOrdinals `field:"optional" json:"ordinals" yaml:"ordinals"` + // persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. + // + // By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. + PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `field:"optional" json:"persistentVolumeClaimRetentionPolicy" yaml:"persistentVolumeClaimRetentionPolicy"` + // podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. + // + // The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once. + PodManagementPolicy *string `field:"optional" json:"podManagementPolicy" yaml:"podManagementPolicy"` + // replicas is the desired number of replicas of the given Template. + // + // These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1. + Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` + // revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. + // + // The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10. + RevisionHistoryLimit *float64 `field:"optional" json:"revisionHistoryLimit" yaml:"revisionHistoryLimit"` + // updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template. + UpdateStrategy *StatefulSetUpdateStrategy `field:"optional" json:"updateStrategy" yaml:"updateStrategy"` + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // + // The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name. + VolumeClaimTemplates *[]*KubePersistentVolumeClaimProps `field:"optional" json:"volumeClaimTemplates" yaml:"volumeClaimTemplates"` +} diff --git a/pods/imports/k8s/StatefulSetUpdateStrategy.go b/pods/imports/k8s/StatefulSetUpdateStrategy.go new file mode 100644 index 000000000..d7d410054 --- /dev/null +++ b/pods/imports/k8s/StatefulSetUpdateStrategy.go @@ -0,0 +1,15 @@ +package k8s + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. +// +// It includes any additional parameters necessary to perform the update for the indicated strategy. +type StatefulSetUpdateStrategy struct { + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + RollingUpdate *RollingUpdateStatefulSetStrategy `field:"optional" json:"rollingUpdate" yaml:"rollingUpdate"` + // Type indicates the type of the StatefulSetUpdateStrategy. + // + // Default is RollingUpdate. + // Default: RollingUpdate. + // + Type *string `field:"optional" json:"type" yaml:"type"` +} diff --git a/pods/imports/k8s/StatusCause.go b/pods/imports/k8s/StatusCause.go new file mode 100644 index 000000000..a3c794195 --- /dev/null +++ b/pods/imports/k8s/StatusCause.go @@ -0,0 +1,21 @@ +package k8s + +// StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered. +type StatusCause struct { + // The field of the resource that has caused this error, as named by its JSON serialization. + // + // May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. + // + // Examples: + // "name" - the field "name" on the current resource + // "items[0].name" - the field "name" on the first array entry in "items" + Field *string `field:"optional" json:"field" yaml:"field"` + // A human-readable description of the cause of the error. + // + // This field may be presented as-is to a reader. + Message *string `field:"optional" json:"message" yaml:"message"` + // A machine-readable description of the cause of the error. + // + // If this value is empty there is no information available. + Reason *string `field:"optional" json:"reason" yaml:"reason"` +} diff --git a/pods/imports/k8s/StatusDetails.go b/pods/imports/k8s/StatusDetails.go new file mode 100644 index 000000000..b45577cb5 --- /dev/null +++ b/pods/imports/k8s/StatusDetails.go @@ -0,0 +1,27 @@ +package k8s + +// StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. +// +// The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined. +type StatusDetails struct { + // The Causes array includes more details associated with the StatusReason failure. + // + // Not all StatusReasons may provide detailed causes. + Causes *[]*StatusCause `field:"optional" json:"causes" yaml:"causes"` + // The group attribute of the resource associated with the status StatusReason. + Group *string `field:"optional" json:"group" yaml:"group"` + // The kind attribute of the resource associated with the status StatusReason. + // + // On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Kind *string `field:"optional" json:"kind" yaml:"kind"` + // The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described). + Name *string `field:"optional" json:"name" yaml:"name"` + // If specified, the time in seconds before the operation should be retried. + // + // Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action. + RetryAfterSeconds *float64 `field:"optional" json:"retryAfterSeconds" yaml:"retryAfterSeconds"` + // UID of the resource. + // + // (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids + Uid *string `field:"optional" json:"uid" yaml:"uid"` +} diff --git a/pods/imports/k8s/StorageOsPersistentVolumeSource.go b/pods/imports/k8s/StorageOsPersistentVolumeSource.go new file mode 100644 index 000000000..e186c6244 --- /dev/null +++ b/pods/imports/k8s/StorageOsPersistentVolumeSource.go @@ -0,0 +1,25 @@ +package k8s + +// Represents a StorageOS persistent volume resource. +type StorageOsPersistentVolumeSource struct { + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef specifies the secret to use for obtaining the StorageOS API credentials. + // + // If not specified, default values will be attempted. + SecretRef *ObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` + // volumeName is the human-readable name of the StorageOS volume. + // + // Volume names are only unique within a namespace. + VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` + // volumeNamespace specifies the scope of the volume within StorageOS. + // + // If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + VolumeNamespace *string `field:"optional" json:"volumeNamespace" yaml:"volumeNamespace"` +} diff --git a/pods/imports/k8s/StorageOsVolumeSource.go b/pods/imports/k8s/StorageOsVolumeSource.go new file mode 100644 index 000000000..2fb196f4f --- /dev/null +++ b/pods/imports/k8s/StorageOsVolumeSource.go @@ -0,0 +1,25 @@ +package k8s + +// Represents a StorageOS persistent volume resource. +type StorageOsVolumeSource struct { + // fsType is the filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // readOnly defaults to false (read/write). + // + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // secretRef specifies the secret to use for obtaining the StorageOS API credentials. + // + // If not specified, default values will be attempted. + SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` + // volumeName is the human-readable name of the StorageOS volume. + // + // Volume names are only unique within a namespace. + VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` + // volumeNamespace specifies the scope of the volume within StorageOS. + // + // If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + VolumeNamespace *string `field:"optional" json:"volumeNamespace" yaml:"volumeNamespace"` +} diff --git a/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go b/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go new file mode 100644 index 000000000..2dcb4338f --- /dev/null +++ b/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go @@ -0,0 +1,13 @@ +package k8s + +// Spec of the storage version migration. +type StorageVersionMigrationSpecV1Alpha1 struct { + // The resource that is being migrated. + // + // The migrator sends requests to the endpoint serving the resource. Immutable. + Resource *GroupVersionResourceV1Alpha1 `field:"required" json:"resource" yaml:"resource"` + // The token used in the list options to get the next chunk of objects to migrate. + // + // When the .status.conditions indicates the migration is "Running", users can use this token to check the progress of the migration. + ContinueToken *string `field:"optional" json:"continueToken" yaml:"continueToken"` +} diff --git a/pods/imports/k8s/Subject.go b/pods/imports/k8s/Subject.go new file mode 100644 index 000000000..fed495755 --- /dev/null +++ b/pods/imports/k8s/Subject.go @@ -0,0 +1,23 @@ +package k8s + +// Subject contains a reference to the object or user identities a role binding applies to. +// +// This can either hold a direct API object reference, or a value for non-objects such as user and group names. +type Subject struct { + // Kind of object being referenced. + // + // Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // Name of the object being referenced. + Name *string `field:"required" json:"name" yaml:"name"` + // APIGroup holds the API group of the referenced subject. + // + // Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // Default: for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // + ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` + // Namespace of the referenced object. + // + // If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` +} diff --git a/pods/imports/k8s/SubjectAccessReviewSpec.go b/pods/imports/k8s/SubjectAccessReviewSpec.go new file mode 100644 index 000000000..32a1426a5 --- /dev/null +++ b/pods/imports/k8s/SubjectAccessReviewSpec.go @@ -0,0 +1,21 @@ +package k8s + +// SubjectAccessReviewSpec is a description of the access request. +// +// Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set. +type SubjectAccessReviewSpec struct { + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here. + Extra *map[string]*[]*string `field:"optional" json:"extra" yaml:"extra"` + // Groups is the groups you're testing for. + Groups *[]*string `field:"optional" json:"groups" yaml:"groups"` + // NonResourceAttributes describes information for a non-resource access request. + NonResourceAttributes *NonResourceAttributes `field:"optional" json:"nonResourceAttributes" yaml:"nonResourceAttributes"` + // ResourceAuthorizationAttributes describes information for a resource access request. + ResourceAttributes *ResourceAttributes `field:"optional" json:"resourceAttributes" yaml:"resourceAttributes"` + // UID information about the requesting user. + Uid *string `field:"optional" json:"uid" yaml:"uid"` + // User is the user you're testing for. + // + // If you specify "User" but not "Groups", then is it interpreted as "What if User were not a member of any groups. + User *string `field:"optional" json:"user" yaml:"user"` +} diff --git a/pods/imports/k8s/SuccessPolicy.go b/pods/imports/k8s/SuccessPolicy.go new file mode 100644 index 000000000..928311e85 --- /dev/null +++ b/pods/imports/k8s/SuccessPolicy.go @@ -0,0 +1,7 @@ +package k8s + +// SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes. +type SuccessPolicy struct { + // rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the "SucceededCriteriaMet" condition is added, and the lingering pods are removed. The terminal state for such a Job has the "Complete" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed. + Rules *[]*SuccessPolicyRule `field:"required" json:"rules" yaml:"rules"` +} diff --git a/pods/imports/k8s/SuccessPolicyRule.go b/pods/imports/k8s/SuccessPolicyRule.go new file mode 100644 index 000000000..f504e897b --- /dev/null +++ b/pods/imports/k8s/SuccessPolicyRule.go @@ -0,0 +1,15 @@ +package k8s + +// SuccessPolicyRule describes rule for declaring a Job as succeeded. +// +// Each rule must have at least one of the "succeededIndexes" or "succeededCount" specified. +type SuccessPolicyRule struct { + // succeededCount specifies the minimal required size of the actual set of the succeeded indexes for the Job. + // + // When succeededCount is used along with succeededIndexes, the check is constrained only to the set of indexes specified by succeededIndexes. For example, given that succeededIndexes is "1-4", succeededCount is "3", and completed indexes are "1", "3", and "5", the Job isn't declared as succeeded because only "1" and "3" indexes are considered in that rules. When this field is null, this doesn't default to any value and is never evaluated at any time. When specified it needs to be a positive integer. + SucceededCount *float64 `field:"optional" json:"succeededCount" yaml:"succeededCount"` + // succeededIndexes specifies the set of indexes which need to be contained in the actual set of the succeeded indexes for the Job. + // + // The list of indexes must be within 0 to ".spec.completions-1" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as "1,3-5,7". When this field is null, this field doesn't default to any value and is never evaluated at any time. + SucceededIndexes *string `field:"optional" json:"succeededIndexes" yaml:"succeededIndexes"` +} diff --git a/pods/imports/k8s/Sysctl.go b/pods/imports/k8s/Sysctl.go new file mode 100644 index 000000000..d30ba56c4 --- /dev/null +++ b/pods/imports/k8s/Sysctl.go @@ -0,0 +1,9 @@ +package k8s + +// Sysctl defines a kernel parameter to be set. +type Sysctl struct { + // Name of a property to set. + Name *string `field:"required" json:"name" yaml:"name"` + // Value of a property to set. + Value *string `field:"required" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/Taint.go b/pods/imports/k8s/Taint.go new file mode 100644 index 000000000..5cbe27aaa --- /dev/null +++ b/pods/imports/k8s/Taint.go @@ -0,0 +1,23 @@ +package k8s + +import ( + "time" +) + +// The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint. +type Taint struct { + // Required. + // + // The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute. + Effect *string `field:"required" json:"effect" yaml:"effect"` + // Required. + // + // The taint key to be applied to a node. + Key *string `field:"required" json:"key" yaml:"key"` + // TimeAdded represents the time at which the taint was added. + // + // It is only written for NoExecute taints. + TimeAdded *time.Time `field:"optional" json:"timeAdded" yaml:"timeAdded"` + // The taint value corresponding to the taint key. + Value *string `field:"optional" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/TcpSocketAction.go b/pods/imports/k8s/TcpSocketAction.go new file mode 100644 index 000000000..eba05f00b --- /dev/null +++ b/pods/imports/k8s/TcpSocketAction.go @@ -0,0 +1,11 @@ +package k8s + +// TCPSocketAction describes an action based on opening a socket. +type TcpSocketAction struct { + // Number or name of the port to access on the container. + // + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + Port IntOrString `field:"required" json:"port" yaml:"port"` + // Optional: Host name to connect to, defaults to the pod IP. + Host *string `field:"optional" json:"host" yaml:"host"` +} diff --git a/pods/imports/k8s/TokenRequest.go b/pods/imports/k8s/TokenRequest.go new file mode 100644 index 000000000..62fad3c08 --- /dev/null +++ b/pods/imports/k8s/TokenRequest.go @@ -0,0 +1,13 @@ +package k8s + +// TokenRequest contains parameters of a service account token. +type TokenRequest struct { + // audience is the intended audience of the token in "TokenRequestSpec". + // + // It will default to the audiences of kube apiserver. + Audience *string `field:"required" json:"audience" yaml:"audience"` + // expirationSeconds is the duration of validity of the token in "TokenRequestSpec". + // + // It has the same default value of "ExpirationSeconds" in "TokenRequestSpec". + ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` +} diff --git a/pods/imports/k8s/TokenRequestSpec.go b/pods/imports/k8s/TokenRequestSpec.go new file mode 100644 index 000000000..52d89dcbe --- /dev/null +++ b/pods/imports/k8s/TokenRequestSpec.go @@ -0,0 +1,17 @@ +package k8s + +// TokenRequestSpec contains client provided parameters of a token request. +type TokenRequestSpec struct { + // Audiences are the intendend audiences of the token. + // + // A recipient of a token must identify themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences. + Audiences *[]*string `field:"required" json:"audiences" yaml:"audiences"` + // BoundObjectRef is a reference to an object that the token will be bound to. + // + // The token will only be valid for as long as the bound object exists. NOTE: The API server's TokenReview endpoint will validate the BoundObjectRef, but other audiences may not. Keep ExpirationSeconds small if you want prompt revocation. + BoundObjectRef *BoundObjectReference `field:"optional" json:"boundObjectRef" yaml:"boundObjectRef"` + // ExpirationSeconds is the requested duration of validity of the request. + // + // The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response. + ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` +} diff --git a/pods/imports/k8s/TokenReviewSpec.go b/pods/imports/k8s/TokenReviewSpec.go new file mode 100644 index 000000000..71e9c9582 --- /dev/null +++ b/pods/imports/k8s/TokenReviewSpec.go @@ -0,0 +1,11 @@ +package k8s + +// TokenReviewSpec is a description of the token authentication request. +type TokenReviewSpec struct { + // Audiences is a list of the identifiers that the resource server presented with the token identifies as. + // + // Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver. + Audiences *[]*string `field:"optional" json:"audiences" yaml:"audiences"` + // Token is the opaque bearer token. + Token *string `field:"optional" json:"token" yaml:"token"` +} diff --git a/pods/imports/k8s/Toleration.go b/pods/imports/k8s/Toleration.go new file mode 100644 index 000000000..d739a04c8 --- /dev/null +++ b/pods/imports/k8s/Toleration.go @@ -0,0 +1,27 @@ +package k8s + +// The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . +type Toleration struct { + // Effect indicates the taint effect to match. + // + // Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + Effect *string `field:"optional" json:"effect" yaml:"effect"` + // Key is the taint key that the toleration applies to. + // + // Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + Key *string `field:"optional" json:"key" yaml:"key"` + // Operator represents a key's relationship to the value. + // + // Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + // Default: Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + // + Operator *string `field:"optional" json:"operator" yaml:"operator"` + // TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. + // + // By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + TolerationSeconds *float64 `field:"optional" json:"tolerationSeconds" yaml:"tolerationSeconds"` + // Value is the taint value the toleration matches to. + // + // If the operator is Exists, the value should be empty, otherwise just a regular string. + Value *string `field:"optional" json:"value" yaml:"value"` +} diff --git a/pods/imports/k8s/TopologySelectorLabelRequirement.go b/pods/imports/k8s/TopologySelectorLabelRequirement.go new file mode 100644 index 000000000..cdac8107a --- /dev/null +++ b/pods/imports/k8s/TopologySelectorLabelRequirement.go @@ -0,0 +1,13 @@ +package k8s + +// A topology selector requirement is a selector that matches given label. +// +// This is an alpha feature and may change in the future. +type TopologySelectorLabelRequirement struct { + // The label key that the selector applies to. + Key *string `field:"required" json:"key" yaml:"key"` + // An array of string values. + // + // One value must match the label to be selected. Each entry in Values is ORed. + Values *[]*string `field:"required" json:"values" yaml:"values"` +} diff --git a/pods/imports/k8s/TopologySelectorTerm.go b/pods/imports/k8s/TopologySelectorTerm.go new file mode 100644 index 000000000..e95444994 --- /dev/null +++ b/pods/imports/k8s/TopologySelectorTerm.go @@ -0,0 +1,9 @@ +package k8s + +// A topology selector term represents the result of label queries. +// +// A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future. +type TopologySelectorTerm struct { + // A list of topology selector requirements by labels. + MatchLabelExpressions *[]*TopologySelectorLabelRequirement `field:"optional" json:"matchLabelExpressions" yaml:"matchLabelExpressions"` +} diff --git a/pods/imports/k8s/TopologySpreadConstraint.go b/pods/imports/k8s/TopologySpreadConstraint.go new file mode 100644 index 000000000..402cc108c --- /dev/null +++ b/pods/imports/k8s/TopologySpreadConstraint.go @@ -0,0 +1,48 @@ +package k8s + +// TopologySpreadConstraint specifies how to spread matching pods among the given topology. +type TopologySpreadConstraint struct { + // MaxSkew describes the degree to which pods may be unevenly distributed. + // + // When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed. + MaxSkew *float64 `field:"required" json:"maxSkew" yaml:"maxSkew"` + // TopologyKey is the key of node labels. + // + // Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field. + TopologyKey *string `field:"required" json:"topologyKey" yaml:"topologyKey"` + // WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. + // + // - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, + // but giving higher precedence to topologies that would help reduce the + // skew. + // A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field. + WhenUnsatisfiable *string `field:"required" json:"whenUnsatisfiable" yaml:"whenUnsatisfiable"` + // LabelSelector is used to find matching pods. + // + // Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. + LabelSelector *LabelSelector `field:"optional" json:"labelSelector" yaml:"labelSelector"` + // MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. + // + // The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. + // + // This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). + MatchLabelKeys *[]*string `field:"optional" json:"matchLabelKeys" yaml:"matchLabelKeys"` + // MinDomains indicates a minimum number of eligible domains. + // + // When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. + // + // For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. + MinDomains *float64 `field:"optional" json:"minDomains" yaml:"minDomains"` + // NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. + // + // Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + // + // If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. + NodeAffinityPolicy *string `field:"optional" json:"nodeAffinityPolicy" yaml:"nodeAffinityPolicy"` + // NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. + // + // Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. + // + // If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. + NodeTaintsPolicy *string `field:"optional" json:"nodeTaintsPolicy" yaml:"nodeTaintsPolicy"` +} diff --git a/pods/imports/k8s/TypedLocalObjectReference.go b/pods/imports/k8s/TypedLocalObjectReference.go new file mode 100644 index 000000000..a41c0dfa8 --- /dev/null +++ b/pods/imports/k8s/TypedLocalObjectReference.go @@ -0,0 +1,13 @@ +package k8s + +// TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace. +type TypedLocalObjectReference struct { + // Kind is the type of resource being referenced. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // Name is the name of resource being referenced. + Name *string `field:"required" json:"name" yaml:"name"` + // APIGroup is the group for the resource being referenced. + // + // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` +} diff --git a/pods/imports/k8s/TypedObjectReference.go b/pods/imports/k8s/TypedObjectReference.go new file mode 100644 index 000000000..bb7761efe --- /dev/null +++ b/pods/imports/k8s/TypedObjectReference.go @@ -0,0 +1,15 @@ +package k8s + +// TypedObjectReference contains enough information to let you locate the typed referenced object. +type TypedObjectReference struct { + // Kind is the type of resource being referenced. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // Name is the name of resource being referenced. + Name *string `field:"required" json:"name" yaml:"name"` + // APIGroup is the group for the resource being referenced. + // + // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` + // Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` +} diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go new file mode 100644 index 000000000..e1ce6f2bd --- /dev/null +++ b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go @@ -0,0 +1,39 @@ +package k8s + +// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. +type ValidatingAdmissionPolicyBindingSpec struct { + // MatchResources declares what resources match this binding and will be validated by it. + // + // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. + MatchResources *MatchResources `field:"optional" json:"matchResources" yaml:"matchResources"` + // paramRef specifies the parameter resource used to configure the admission control policy. + // + // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. + ParamRef *ParamRef `field:"optional" json:"paramRef" yaml:"paramRef"` + // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. + // + // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. + PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` + // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. + // + // If a validation evaluates to false it is always enforced according to these actions. + // + // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. + // + // validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. + // + // The supported actions values are: + // + // "Deny" specifies that a validation failure results in a denied request. + // + // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. + // + // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]"` + // + // Clients should expect to handle additional values by ignoring any values not recognized. + // + // "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. + // + // Required. + ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` +} diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go new file mode 100644 index 000000000..4c3c23774 --- /dev/null +++ b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go @@ -0,0 +1,39 @@ +package k8s + +// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. +type ValidatingAdmissionPolicyBindingSpecV1Beta1 struct { + // MatchResources declares what resources match this binding and will be validated by it. + // + // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. + MatchResources *MatchResourcesV1Beta1 `field:"optional" json:"matchResources" yaml:"matchResources"` + // paramRef specifies the parameter resource used to configure the admission control policy. + // + // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. + ParamRef *ParamRefV1Beta1 `field:"optional" json:"paramRef" yaml:"paramRef"` + // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. + // + // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. + PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` + // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. + // + // If a validation evaluates to false it is always enforced according to these actions. + // + // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. + // + // validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. + // + // The supported actions values are: + // + // "Deny" specifies that a validation failure results in a denied request. + // + // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. + // + // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]"` + // + // Clients should expect to handle additional values by ignoring any values not recognized. + // + // "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. + // + // Required. + ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` +} diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpec.go b/pods/imports/k8s/ValidatingAdmissionPolicySpec.go new file mode 100644 index 000000000..c862b67af --- /dev/null +++ b/pods/imports/k8s/ValidatingAdmissionPolicySpec.go @@ -0,0 +1,54 @@ +package k8s + +// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. +type ValidatingAdmissionPolicySpec struct { + // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. + // + // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. + AuditAnnotations *[]*AuditAnnotation `field:"optional" json:"auditAnnotations" yaml:"auditAnnotations"` + // failurePolicy defines how to handle failures for the admission policy. + // + // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. + // + // A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. + // + // failurePolicy does not define how validations that evaluate to false are handled. + // + // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. + // + // Allowed values are Ignore or Fail. Defaults to Fail. + // Default: Fail. + // + FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` + // MatchConditions is a list of conditions that must be met for a request to be validated. + // + // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + // + // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. + // + // The exact matching logic is (in order): + // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. + // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. + // 3. If any matchCondition evaluates to an error (but none are FALSE): + // - If failurePolicy=Fail, reject the request + // - If failurePolicy=Ignore, the policy is skipped. + MatchConditions *[]*MatchCondition `field:"optional" json:"matchConditions" yaml:"matchConditions"` + // MatchConstraints specifies what resources this policy is designed to validate. + // + // The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. + MatchConstraints *MatchResources `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` + // ParamKind specifies the kind of resources used to parameterize this policy. + // + // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. + ParamKind *ParamKind `field:"optional" json:"paramKind" yaml:"paramKind"` + // Validations contain CEL expressions which is used to apply the validation. + // + // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. + Validations *[]*Validation `field:"optional" json:"validations" yaml:"validations"` + // Variables contain definitions of variables that can be used in composition of other expressions. + // + // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. + // + // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. + Variables *[]*Variable `field:"optional" json:"variables" yaml:"variables"` +} diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go new file mode 100644 index 000000000..94d89e42a --- /dev/null +++ b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go @@ -0,0 +1,54 @@ +package k8s + +// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. +type ValidatingAdmissionPolicySpecV1Beta1 struct { + // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. + // + // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. + AuditAnnotations *[]*AuditAnnotationV1Beta1 `field:"optional" json:"auditAnnotations" yaml:"auditAnnotations"` + // failurePolicy defines how to handle failures for the admission policy. + // + // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. + // + // A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. + // + // failurePolicy does not define how validations that evaluate to false are handled. + // + // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. + // + // Allowed values are Ignore or Fail. Defaults to Fail. + // Default: Fail. + // + FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` + // MatchConditions is a list of conditions that must be met for a request to be validated. + // + // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + // + // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. + // + // The exact matching logic is (in order): + // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. + // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. + // 3. If any matchCondition evaluates to an error (but none are FALSE): + // - If failurePolicy=Fail, reject the request + // - If failurePolicy=Ignore, the policy is skipped. + MatchConditions *[]*MatchConditionV1Beta1 `field:"optional" json:"matchConditions" yaml:"matchConditions"` + // MatchConstraints specifies what resources this policy is designed to validate. + // + // The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. + MatchConstraints *MatchResourcesV1Beta1 `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` + // ParamKind specifies the kind of resources used to parameterize this policy. + // + // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. + ParamKind *ParamKindV1Beta1 `field:"optional" json:"paramKind" yaml:"paramKind"` + // Validations contain CEL expressions which is used to apply the validation. + // + // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. + Validations *[]*ValidationV1Beta1 `field:"optional" json:"validations" yaml:"validations"` + // Variables contain definitions of variables that can be used in composition of other expressions. + // + // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. + // + // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. + Variables *[]*VariableV1Beta1 `field:"optional" json:"variables" yaml:"variables"` +} diff --git a/pods/imports/k8s/ValidatingWebhook.go b/pods/imports/k8s/ValidatingWebhook.go new file mode 100644 index 000000000..d195c9d00 --- /dev/null +++ b/pods/imports/k8s/ValidatingWebhook.go @@ -0,0 +1,100 @@ +package k8s + +// ValidatingWebhook describes an admission webhook and the resources and operations it applies to. +type ValidatingWebhook struct { + // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. + // + // API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. + AdmissionReviewVersions *[]*string `field:"required" json:"admissionReviewVersions" yaml:"admissionReviewVersions"` + // ClientConfig defines how to communicate with the hook. + // + // Required. + ClientConfig *WebhookClientConfig `field:"required" json:"clientConfig" yaml:"clientConfig"` + // The name of the admission webhook. + // + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required. + Name *string `field:"required" json:"name" yaml:"name"` + // SideEffects states whether this webhook has side effects. + // + // Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. + SideEffects *string `field:"required" json:"sideEffects" yaml:"sideEffects"` + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. + // + // Defaults to Fail. + // Default: Fail. + // + FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` + // MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. + // + // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + // + // The exact matching logic is (in order): + // 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. + // 2. If ALL matchConditions evaluate to TRUE, the webhook is called. + // 3. If any matchCondition evaluates to an error (but none are FALSE): + // - If failurePolicy=Fail, reject the request + // - If failurePolicy=Ignore, the error is ignored and the webhook is skipped. + MatchConditions *[]*MatchCondition `field:"optional" json:"matchConditions" yaml:"matchConditions"` + // matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". + // + // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. + // + // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. + // + // Defaults to "Equivalent". + // Default: Equivalent". + // + MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` + // NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. + // + // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook. + // + // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "runlevel", + // "operator": "NotIn", + // "values": [ + // "0", + // "1" + // ] + // } + // ] + // } + // + // If instead you want to only run the webhook on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { + // "matchExpressions": [ + // { + // "key": "environment", + // "operator": "In", + // "values": [ + // "prod", + // "staging" + // ] + // } + // ] + // } + // + // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels for more examples of label selectors. + // + // Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // ObjectSelector decides whether to run the webhook based on if the object has matching labels. + // + // objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. + // Default: the empty LabelSelector, which matches everything. + // + ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` + // Rules describes what operations on what resources/subresources the webhook cares about. + // + // The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. + Rules *[]*RuleWithOperations `field:"optional" json:"rules" yaml:"rules"` + // TimeoutSeconds specifies the timeout for this webhook. + // + // After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. + // Default: 10 seconds. + // + TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` +} diff --git a/pods/imports/k8s/Validation.go b/pods/imports/k8s/Validation.go new file mode 100644 index 000000000..926011bb5 --- /dev/null +++ b/pods/imports/k8s/Validation.go @@ -0,0 +1,46 @@ +package k8s + +// Validation specifies the CEL expression which is used to apply the validation. +type Validation struct { + // Expression represents the expression which will be evaluated by CEL. + // + // ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: + // + // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + // For example, a variable named 'foo' can be accessed as 'variables.foo'. + // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // + // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. + // + // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: + // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", + // "import", "let", "loop", "package", "namespace", "return". + // Examples: + // - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} + // - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} + // - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} + // + // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: + // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and + // non-intersecting elements in `Y` are appended, retaining their partial order. + // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values + // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with + // non-intersecting keys are appended, retaining their partial order. + // Required. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Message represents the message displayed when validation fails. + // + // The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". + Message *string `field:"optional" json:"message" yaml:"message"` + // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. + // + // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" + MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` + // Reason represents a machine-readable description of why this validation failed. + // + // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. + Reason *string `field:"optional" json:"reason" yaml:"reason"` +} diff --git a/pods/imports/k8s/ValidationRule.go b/pods/imports/k8s/ValidationRule.go new file mode 100644 index 000000000..897ea18a9 --- /dev/null +++ b/pods/imports/k8s/ValidationRule.go @@ -0,0 +1,65 @@ +package k8s + +// ValidationRule describes a validation rule written in the CEL expression language. +type ValidationRule struct { + // Rule represents the expression which will be evaluated by CEL. + // + // ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual <= self.spec.maxDesired"} + // + // If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as absent fields in CEL expressions. If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map are accessible via CEL macros and functions such as `self.all(...)`. If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and functions. If the Rule is scoped to a scalar, `self` is bound to the scalar value. Examples: - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority < 10"} - Rule scoped to a list of integers: {"rule": "self.values.all(value, value >= 0 && value < 100)"} - Rule scoped to a string value: {"rule": "self.startsWith('kube')"} + // + // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible. + // + // Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL expressions. This includes: - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields. - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as: + // - A schema with no type and x-kubernetes-preserve-unknown-fields set to true + // - An array where the items schema is of an "unknown type" + // - An object where the additionalProperties schema is of an "unknown type" + // + // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: + // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", + // "import", "let", "loop", "package", "namespace", "return". + // Examples: + // - Rule accessing a property named "namespace": {"rule": "self.__namespace__ > 0"} + // - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop > 0"} + // - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d > 0"} + // + // Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: + // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and + // non-intersecting elements in `Y` are appended, retaining their partial order. + // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values + // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with + // non-intersecting keys are appended, retaining their partial order. + // + // If `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`. + // + // By default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional + // variable whose value() is the same type as `self`. + // See the documentation for the `optionalOldSelf` field for details. + // + // Transition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true. + Rule *string `field:"required" json:"rule" yaml:"rule"` + // fieldPath represents the field path returned when the validation fails. + // + // It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` + FieldPath *string `field:"optional" json:"fieldPath" yaml:"fieldPath"` + // Message represents the message displayed when validation fails. + // + // The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" + Message *string `field:"optional" json:"message" yaml:"message"` + // MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. + // + // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a rule, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the rule; the only difference is the return type. Example: "x must be less than max ("+string(self.max)+")" + MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` + // optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value. + // + // When enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created. + // + // You may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes + // + // May not be set unless `oldSelf` is used in `rule`. + OptionalOldSelf *bool `field:"optional" json:"optionalOldSelf" yaml:"optionalOldSelf"` + // reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. + // + // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". If not set, default to use "FieldValueInvalid". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. + Reason *string `field:"optional" json:"reason" yaml:"reason"` +} diff --git a/pods/imports/k8s/ValidationV1Beta1.go b/pods/imports/k8s/ValidationV1Beta1.go new file mode 100644 index 000000000..e333b1493 --- /dev/null +++ b/pods/imports/k8s/ValidationV1Beta1.go @@ -0,0 +1,46 @@ +package k8s + +// Validation specifies the CEL expression which is used to apply the validation. +type ValidationV1Beta1 struct { + // Expression represents the expression which will be evaluated by CEL. + // + // ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: + // + // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + // For example, a variable named 'foo' can be accessed as 'variables.foo'. + // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // + // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. + // + // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: + // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", + // "import", "let", "loop", "package", "namespace", "return". + // Examples: + // - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} + // - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} + // - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} + // + // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: + // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and + // non-intersecting elements in `Y` are appended, retaining their partial order. + // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values + // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with + // non-intersecting keys are appended, retaining their partial order. + // Required. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Message represents the message displayed when validation fails. + // + // The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". + Message *string `field:"optional" json:"message" yaml:"message"` + // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. + // + // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" + MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` + // Reason represents a machine-readable description of why this validation failed. + // + // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. + Reason *string `field:"optional" json:"reason" yaml:"reason"` +} diff --git a/pods/imports/k8s/Variable.go b/pods/imports/k8s/Variable.go new file mode 100644 index 000000000..e4e6c9f00 --- /dev/null +++ b/pods/imports/k8s/Variable.go @@ -0,0 +1,15 @@ +package k8s + +// Variable is the definition of a variable that is used for composition. +// +// A variable is defined as a named expression. +type Variable struct { + // Expression is the expression that will be evaluated as the value of the variable. + // + // The CEL expression has access to the same identifiers as the CEL expressions in Validation. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Name is the name of the variable. + // + // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/VariableV1Alpha1.go b/pods/imports/k8s/VariableV1Alpha1.go new file mode 100644 index 000000000..780fc8713 --- /dev/null +++ b/pods/imports/k8s/VariableV1Alpha1.go @@ -0,0 +1,13 @@ +package k8s + +// Variable is the definition of a variable that is used for composition. +type VariableV1Alpha1 struct { + // Expression is the expression that will be evaluated as the value of the variable. + // + // The CEL expression has access to the same identifiers as the CEL expressions in Validation. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Name is the name of the variable. + // + // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/VariableV1Beta1.go b/pods/imports/k8s/VariableV1Beta1.go new file mode 100644 index 000000000..aab22c5cf --- /dev/null +++ b/pods/imports/k8s/VariableV1Beta1.go @@ -0,0 +1,15 @@ +package k8s + +// Variable is the definition of a variable that is used for composition. +// +// A variable is defined as a named expression. +type VariableV1Beta1 struct { + // Expression is the expression that will be evaluated as the value of the variable. + // + // The CEL expression has access to the same identifiers as the CEL expressions in Validation. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Name is the name of the variable. + // + // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/Volume.go b/pods/imports/k8s/Volume.go new file mode 100644 index 000000000..6e1280c17 --- /dev/null +++ b/pods/imports/k8s/Volume.go @@ -0,0 +1,134 @@ +package k8s + +// Volume represents a named volume in a pod that may be accessed by any container in the pod. +type Volume struct { + // name of the volume. + // + // Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name *string `field:"required" json:"name" yaml:"name"` + // awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. + // + // Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + AwsElasticBlockStore *AwsElasticBlockStoreVolumeSource `field:"optional" json:"awsElasticBlockStore" yaml:"awsElasticBlockStore"` + // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // + // Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver. + AzureDisk *AzureDiskVolumeSource `field:"optional" json:"azureDisk" yaml:"azureDisk"` + // azureFile represents an Azure File Service mount on the host and bind mount to the pod. + // + // Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type are redirected to the file.csi.azure.com CSI driver. + AzureFile *AzureFileVolumeSource `field:"optional" json:"azureFile" yaml:"azureFile"` + // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. + // + // Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported. + Cephfs *CephFsVolumeSource `field:"optional" json:"cephfs" yaml:"cephfs"` + // cinder represents a cinder volume attached and mounted on kubelets host machine. + // + // Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + Cinder *CinderVolumeSource `field:"optional" json:"cinder" yaml:"cinder"` + // configMap represents a configMap that should populate this volume. + ConfigMap *ConfigMapVolumeSource `field:"optional" json:"configMap" yaml:"configMap"` + // csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. + Csi *CsiVolumeSource `field:"optional" json:"csi" yaml:"csi"` + // downwardAPI represents downward API about the pod that should populate this volume. + DownwardApi *DownwardApiVolumeSource `field:"optional" json:"downwardApi" yaml:"downwardApi"` + // emptyDir represents a temporary directory that shares a pod's lifetime. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + EmptyDir *EmptyDirVolumeSource `field:"optional" json:"emptyDir" yaml:"emptyDir"` + // ephemeral represents a volume that is handled by a cluster storage driver. + // + // The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. + // + // Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity + // tracking are needed, + // c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through + // a PersistentVolumeClaim (see EphemeralVolumeSource for more + // information on the connection between this volume type + // and PersistentVolumeClaim). + // + // Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. + // + // Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. + // + // A pod can use both types of ephemeral volumes and persistent volumes at the same time. + Ephemeral *EphemeralVolumeSource `field:"optional" json:"ephemeral" yaml:"ephemeral"` + // fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + Fc *FcVolumeSource `field:"optional" json:"fc" yaml:"fc"` + // flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + // + // Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. + FlexVolume *FlexVolumeSource `field:"optional" json:"flexVolume" yaml:"flexVolume"` + // flocker represents a Flocker volume attached to a kubelet's host machine. + // + // This depends on the Flocker control service being running. Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported. + Flocker *FlockerVolumeSource `field:"optional" json:"flocker" yaml:"flocker"` + // gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. + // + // Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + GcePersistentDisk *GcePersistentDiskVolumeSource `field:"optional" json:"gcePersistentDisk" yaml:"gcePersistentDisk"` + // gitRepo represents a git repository at a particular revision. + // + // Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + GitRepo *GitRepoVolumeSource `field:"optional" json:"gitRepo" yaml:"gitRepo"` + // glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + // + // Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md + Glusterfs *GlusterfsVolumeSource `field:"optional" json:"glusterfs" yaml:"glusterfs"` + // hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. + // + // This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + HostPath *HostPathVolumeSource `field:"optional" json:"hostPath" yaml:"hostPath"` + // image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. + // + // The volume is resolved at pod startup depending on which PullPolicy value is provided: + // + // - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. + // + // The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro) and non-executable files (noexec). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type. + Image *ImageVolumeSource `field:"optional" json:"image" yaml:"image"` + // iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. + // + // More info: https://examples.k8s.io/volumes/iscsi/README.md + Iscsi *IscsiVolumeSource `field:"optional" json:"iscsi" yaml:"iscsi"` + // nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs. + Nfs *NfsVolumeSource `field:"optional" json:"nfs" yaml:"nfs"` + // persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. + // + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `field:"optional" json:"persistentVolumeClaim" yaml:"persistentVolumeClaim"` + // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. + // + // Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported. + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `field:"optional" json:"photonPersistentDisk" yaml:"photonPersistentDisk"` + // portworxVolume represents a portworx volume attached and mounted on kubelets host machine. + // + // Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate is on. + PortworxVolume *PortworxVolumeSource `field:"optional" json:"portworxVolume" yaml:"portworxVolume"` + // projected items for all in one resources secrets, configmaps, and downward API. + Projected *ProjectedVolumeSource `field:"optional" json:"projected" yaml:"projected"` + // quobyte represents a Quobyte mount on the host that shares a pod's lifetime. + // + // Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported. + Quobyte *QuobyteVolumeSource `field:"optional" json:"quobyte" yaml:"quobyte"` + // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. + // + // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md + Rbd *RbdVolumeSource `field:"optional" json:"rbd" yaml:"rbd"` + // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // + // Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported. + ScaleIo *ScaleIoVolumeSource `field:"optional" json:"scaleIo" yaml:"scaleIo"` + // secret represents a secret that should populate this volume. + // + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + Secret *SecretVolumeSource `field:"optional" json:"secret" yaml:"secret"` + // storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + // + // Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported. + Storageos *StorageOsVolumeSource `field:"optional" json:"storageos" yaml:"storageos"` + // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. + // + // Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type are redirected to the csi.vsphere.vmware.com CSI driver. + VsphereVolume *VsphereVirtualDiskVolumeSource `field:"optional" json:"vsphereVolume" yaml:"vsphereVolume"` +} diff --git a/pods/imports/k8s/VolumeAttachmentSource.go b/pods/imports/k8s/VolumeAttachmentSource.go new file mode 100644 index 000000000..ecfda8fc4 --- /dev/null +++ b/pods/imports/k8s/VolumeAttachmentSource.go @@ -0,0 +1,13 @@ +package k8s + +// VolumeAttachmentSource represents a volume that should be attached. +// +// Right now only PersistentVolumes can be attached via external attacher, in the future we may allow also inline volumes in pods. Exactly one member can be set. +type VolumeAttachmentSource struct { + // inlineVolumeSpec contains all the information necessary to attach a persistent volume defined by a pod's inline VolumeSource. + // + // This field is populated only for the CSIMigration feature. It contains translated fields from a pod's inline VolumeSource to a PersistentVolumeSpec. This field is beta-level and is only honored by servers that enabled the CSIMigration feature. + InlineVolumeSpec *PersistentVolumeSpec `field:"optional" json:"inlineVolumeSpec" yaml:"inlineVolumeSpec"` + // persistentVolumeName represents the name of the persistent volume to attach. + PersistentVolumeName *string `field:"optional" json:"persistentVolumeName" yaml:"persistentVolumeName"` +} diff --git a/pods/imports/k8s/VolumeAttachmentSpec.go b/pods/imports/k8s/VolumeAttachmentSpec.go new file mode 100644 index 000000000..b2c550ed0 --- /dev/null +++ b/pods/imports/k8s/VolumeAttachmentSpec.go @@ -0,0 +1,13 @@ +package k8s + +// VolumeAttachmentSpec is the specification of a VolumeAttachment request. +type VolumeAttachmentSpec struct { + // attacher indicates the name of the volume driver that MUST handle this request. + // + // This is the name returned by GetPluginName(). + Attacher *string `field:"required" json:"attacher" yaml:"attacher"` + // nodeName represents the node that the volume should be attached to. + NodeName *string `field:"required" json:"nodeName" yaml:"nodeName"` + // source represents the volume that should be attached. + Source *VolumeAttachmentSource `field:"required" json:"source" yaml:"source"` +} diff --git a/pods/imports/k8s/VolumeDevice.go b/pods/imports/k8s/VolumeDevice.go new file mode 100644 index 000000000..27312a1aa --- /dev/null +++ b/pods/imports/k8s/VolumeDevice.go @@ -0,0 +1,9 @@ +package k8s + +// volumeDevice describes a mapping of a raw block device within a container. +type VolumeDevice struct { + // devicePath is the path inside of the container that the device will be mapped to. + DevicePath *string `field:"required" json:"devicePath" yaml:"devicePath"` + // name must match the name of a persistentVolumeClaim in the pod. + Name *string `field:"required" json:"name" yaml:"name"` +} diff --git a/pods/imports/k8s/VolumeMount.go b/pods/imports/k8s/VolumeMount.go new file mode 100644 index 000000000..a4a000f54 --- /dev/null +++ b/pods/imports/k8s/VolumeMount.go @@ -0,0 +1,43 @@ +package k8s + +// VolumeMount describes a mounting of a Volume within a container. +type VolumeMount struct { + // Path within the container at which the volume should be mounted. + // + // Must not contain ':'. + MountPath *string `field:"required" json:"mountPath" yaml:"mountPath"` + // This must match the Name of a Volume. + Name *string `field:"required" json:"name" yaml:"name"` + // mountPropagation determines how mounts are propagated from the host to container and the other way around. + // + // When not set, MountPropagationNone is used. This field is beta in 1.10. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None). + MountPropagation *string `field:"optional" json:"mountPropagation" yaml:"mountPropagation"` + // Mounted read-only if true, read-write otherwise (false or unspecified). + // + // Defaults to false. + // Default: false. + // + ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` + // RecursiveReadOnly specifies whether read-only mounts should be handled recursively. + // + // If ReadOnly is false, this field has no meaning and must be unspecified. + // + // If ReadOnly is true, and this field is set to Disabled, the mount is not made recursively read-only. If this field is set to IfPossible, the mount is made recursively read-only, if it is supported by the container runtime. If this field is set to Enabled, the mount is made recursively read-only if it is supported by the container runtime, otherwise the pod will not be started and an error will be generated to indicate the reason. + // + // If this field is set to IfPossible or Enabled, MountPropagation must be set to None (or be unspecified, which defaults to None). + // + // If this field is not specified, it is treated as an equivalent of Disabled. + RecursiveReadOnly *string `field:"optional" json:"recursiveReadOnly" yaml:"recursiveReadOnly"` + // Path within the volume from which the container's volume should be mounted. + // + // Defaults to "" (volume's root). + // Default: volume's root). + // + SubPath *string `field:"optional" json:"subPath" yaml:"subPath"` + // Expanded path within the volume from which the container's volume should be mounted. + // + // Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + // Default: volume's root). SubPathExpr and SubPath are mutually exclusive. + // + SubPathExpr *string `field:"optional" json:"subPathExpr" yaml:"subPathExpr"` +} diff --git a/pods/imports/k8s/VolumeNodeAffinity.go b/pods/imports/k8s/VolumeNodeAffinity.go new file mode 100644 index 000000000..552d00af5 --- /dev/null +++ b/pods/imports/k8s/VolumeNodeAffinity.go @@ -0,0 +1,7 @@ +package k8s + +// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. +type VolumeNodeAffinity struct { + // required specifies hard node constraints that must be met. + Required *NodeSelector `field:"optional" json:"required" yaml:"required"` +} diff --git a/pods/imports/k8s/VolumeNodeResources.go b/pods/imports/k8s/VolumeNodeResources.go new file mode 100644 index 000000000..9ab61629b --- /dev/null +++ b/pods/imports/k8s/VolumeNodeResources.go @@ -0,0 +1,9 @@ +package k8s + +// VolumeNodeResources is a set of resource limits for scheduling of volumes. +type VolumeNodeResources struct { + // count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. + // + // A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded. + Count *float64 `field:"optional" json:"count" yaml:"count"` +} diff --git a/pods/imports/k8s/VolumeProjection.go b/pods/imports/k8s/VolumeProjection.go new file mode 100644 index 000000000..ca3ad2796 --- /dev/null +++ b/pods/imports/k8s/VolumeProjection.go @@ -0,0 +1,23 @@ +package k8s + +// Projection that may be projected along with other supported volume types. +// +// Exactly one of these fields must be set. +type VolumeProjection struct { + // ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + // + // Alpha, gated by the ClusterTrustBundleProjection feature gate. + // + // ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + // + // Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + ClusterTrustBundle *ClusterTrustBundleProjection `field:"optional" json:"clusterTrustBundle" yaml:"clusterTrustBundle"` + // configMap information about the configMap data to project. + ConfigMap *ConfigMapProjection `field:"optional" json:"configMap" yaml:"configMap"` + // downwardAPI information about the downwardAPI data to project. + DownwardApi *DownwardApiProjection `field:"optional" json:"downwardApi" yaml:"downwardApi"` + // secret information about the secret data to project. + Secret *SecretProjection `field:"optional" json:"secret" yaml:"secret"` + // serviceAccountToken is information about the serviceAccountToken data to project. + ServiceAccountToken *ServiceAccountTokenProjection `field:"optional" json:"serviceAccountToken" yaml:"serviceAccountToken"` +} diff --git a/pods/imports/k8s/VolumeResourceRequirements.go b/pods/imports/k8s/VolumeResourceRequirements.go new file mode 100644 index 000000000..ec6e74934 --- /dev/null +++ b/pods/imports/k8s/VolumeResourceRequirements.go @@ -0,0 +1,13 @@ +package k8s + +// VolumeResourceRequirements describes the storage resource requirements for a volume. +type VolumeResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Limits *map[string]Quantity `field:"optional" json:"limits" yaml:"limits"` + // Requests describes the minimum amount of compute resources required. + // + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Requests *map[string]Quantity `field:"optional" json:"requests" yaml:"requests"` +} diff --git a/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go b/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go new file mode 100644 index 000000000..43f2ca2f3 --- /dev/null +++ b/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go @@ -0,0 +1,15 @@ +package k8s + +// Represents a vSphere volume resource. +type VsphereVirtualDiskVolumeSource struct { + // volumePath is the path that identifies vSphere volume vmdk. + VolumePath *string `field:"required" json:"volumePath" yaml:"volumePath"` + // fsType is filesystem type to mount. + // + // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FsType *string `field:"optional" json:"fsType" yaml:"fsType"` + // storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + StoragePolicyId *string `field:"optional" json:"storagePolicyId" yaml:"storagePolicyId"` + // storagePolicyName is the storage Policy Based Management (SPBM) profile name. + StoragePolicyName *string `field:"optional" json:"storagePolicyName" yaml:"storagePolicyName"` +} diff --git a/pods/imports/k8s/WebhookClientConfig.go b/pods/imports/k8s/WebhookClientConfig.go new file mode 100644 index 000000000..ecc1f5843 --- /dev/null +++ b/pods/imports/k8s/WebhookClientConfig.go @@ -0,0 +1,27 @@ +package k8s + +// WebhookClientConfig contains the information to make a TLS connection with the webhook. +type WebhookClientConfig struct { + // `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. + // + // If unspecified, system trust roots on the apiserver are used. + CaBundle *string `field:"optional" json:"caBundle" yaml:"caBundle"` + // `service` is a reference to the service for this webhook. Either `service` or `url` must be specified. + // + // If the webhook is running within the cluster, then you should use `service`. + Service *ServiceReference `field:"optional" json:"service" yaml:"service"` + // `url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). + // + // Exactly one of `url` or `service` must be specified. + // + // The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address. + // + // Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster. + // + // The scheme must be "https"; the URL must begin with "https://". + // + // A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier. + // + // Attempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either. + Url *string `field:"optional" json:"url" yaml:"url"` +} diff --git a/pods/imports/k8s/WebhookConversion.go b/pods/imports/k8s/WebhookConversion.go new file mode 100644 index 000000000..9c40b880b --- /dev/null +++ b/pods/imports/k8s/WebhookConversion.go @@ -0,0 +1,11 @@ +package k8s + +// WebhookConversion describes how to call a conversion webhook. +type WebhookConversion struct { + // conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. + // + // The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail. + ConversionReviewVersions *[]*string `field:"required" json:"conversionReviewVersions" yaml:"conversionReviewVersions"` + // clientConfig is the instructions for how to call the webhook if strategy is `Webhook`. + ClientConfig *WebhookClientConfig `field:"optional" json:"clientConfig" yaml:"clientConfig"` +} diff --git a/pods/imports/k8s/WeightedPodAffinityTerm.go b/pods/imports/k8s/WeightedPodAffinityTerm.go new file mode 100644 index 000000000..21cb74a0b --- /dev/null +++ b/pods/imports/k8s/WeightedPodAffinityTerm.go @@ -0,0 +1,11 @@ +package k8s + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s). +type WeightedPodAffinityTerm struct { + // Required. + // + // A pod affinity term, associated with the corresponding weight. + PodAffinityTerm *PodAffinityTerm `field:"required" json:"podAffinityTerm" yaml:"podAffinityTerm"` + // weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + Weight *float64 `field:"required" json:"weight" yaml:"weight"` +} diff --git a/pods/imports/k8s/WindowsSecurityContextOptions.go b/pods/imports/k8s/WindowsSecurityContextOptions.go new file mode 100644 index 000000000..eafe6fc7c --- /dev/null +++ b/pods/imports/k8s/WindowsSecurityContextOptions.go @@ -0,0 +1,19 @@ +package k8s + +// WindowsSecurityContextOptions contain Windows-specific options and credentials. +type WindowsSecurityContextOptions struct { + // GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + GmsaCredentialSpec *string `field:"optional" json:"gmsaCredentialSpec" yaml:"gmsaCredentialSpec"` + // GMSACredentialSpecName is the name of the GMSA credential spec to use. + GmsaCredentialSpecName *string `field:"optional" json:"gmsaCredentialSpecName" yaml:"gmsaCredentialSpecName"` + // HostProcess determines if a container should be run as a 'Host Process' container. + // + // All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + HostProcess *bool `field:"optional" json:"hostProcess" yaml:"hostProcess"` + // The UserName in Windows to run the entrypoint of the container process. + // + // Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Default: the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // + RunAsUserName *string `field:"optional" json:"runAsUserName" yaml:"runAsUserName"` +} diff --git a/pods/imports/k8s/internal/types.go b/pods/imports/k8s/internal/types.go new file mode 100644 index 000000000..4b6b993a2 --- /dev/null +++ b/pods/imports/k8s/internal/types.go @@ -0,0 +1,7 @@ +package internal + +import ( + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" +) + +type Type__cdk8sApiObject = cdk8s.ApiObject diff --git a/pods/imports/k8s/jsii/jsii.go b/pods/imports/k8s/jsii/jsii.go new file mode 100644 index 000000000..7d3b07906 --- /dev/null +++ b/pods/imports/k8s/jsii/jsii.go @@ -0,0 +1,28 @@ +// Package jsii contains the functionaility needed for jsii packages to +// initialize their dependencies and themselves. Users should never need to use this package +// directly. If you find you need to - please report a bug at +// https://github.com/aws/jsii/issues/new/choose +package jsii + +import ( + _ "embed" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + constructs "github.com/aws/constructs-go/constructs/v10/jsii" + cdk8s "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2/jsii" +) + +//go:embed k8s-0.0.0.tgz +var tarball []byte + +// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module. +// The implementation is idempotent (and hence safe to be called over and over). +func Initialize() { + // Ensure all dependencies are initialized + cdk8s.Initialize() + constructs.Initialize() + + // Load this library into the kernel + _jsii_.Load("k8s", "0.0.0", tarball) +} diff --git a/pods/imports/k8s/jsii/k8s-0.0.0.tgz b/pods/imports/k8s/jsii/k8s-0.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..232dc0fede578979531770316c7391fa9f16e346 GIT binary patch literal 763629 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�r-~ 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

MXFG9cP`AL z{ovB77zAq>g6xmL=Fv?S%2cwST9B^D$R*P$Hhy(rQcHZ3~iuwYa z$Okt9r43!*<>V=N)q>>ilw}&3t8T+bsSc4z56^>j=cn%bHk<<5txvyreW)TqJxf{Y zT!{O^IBaJczv&kKQR92tRGYrv?)Ajn;I4dk@3Qi*NF%wKo-$9JJLVVtkwpy6+v1jI zvwN4V;&&Pg+AgjM9N+%AOe<#zj@n95F|1$wC)a|MJ-GU;6oJAY0GFxF32~gexEHbl z-2q#(n5`NBg=gbWG+Xz_g{{T%Hl@*<0-k``S}&4~=H>A>P`TWnjJy02<+KDK@U*~V zB<*00{x%9jS_UHpw`?`1P@au$HBxo z#mA(s*Iup1&u%YOfpzCVv~Uin@Wi2iK1y)zDFUJds!T2?E&gVRYDFLfCBV46-+t;3 zvupJWUmk()mzIka$k#uyjRIBOjhERUn12M0Ggnal5A#bBT%${S_}?hEi&F5jbh%d; z+ms*C#DJwb#or^lzjojK+

DI0B-?{qZ=_K_P;^hslKWGiU=xo0Goc-;*TPXBT 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⪙Hh|(G-QrIlXG73JNiB<@7LHj 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 z zps32fDu&(N0SULW*VykU$P5OMV!#VXA_V`H)IlRKg3(f$->#DkEQrY~DnqZG+xV`u zms$rsi5#kp^#$58gr19wq77@CTx+;pVE`TAwb$lbwfBr_6*(P zC8RP5SnkB;o|cT9wIzB7=95u+P5md*C^eY5PK6woR+^z>X_rF5a!#A17QY)(JDEu# z+|g=N=jG9(Ah*f(Avg_)EY~e~1$w6jrQPqWjC^+-;jZ&N6|?B#Z9M$v@$i3s7!CK| z@xKp-zsEm+dr@cF=(us9N~2ISQNj&m0Qg4~6Lx-ZQ%f;AIV$(qmT`tLTnSvb^TQ82 z+#nh;)ZY}54-f1m6skI-dX-6DanZ0*6qh$#wqGwRr@HXe9Tu4&KPr6%Gwi~>fzGPe zFV0@Pe)HlvxWGX|a&D0u{E>hCNi{kWI2-tZE(WqXTfjr0$jHQ(~D=w&u1`+i^#UlpV0P?5Hz;CrYm~ zXkUi_=8$)05TPRX_HYnAdKdlaPtn^)gXr+x2%g2^Rw!Z1o%)1}B6&2;0EBB?+HZQ4 zZ_P{_Qg;+x{CD)9(cdn>JqbhyT=y3lU5&K7LJ2s}$t{eP8#b*k@5Ev;2sUfstw=^gQm02` z^}MLrs4h%;#Bh_YLDZzP;u@BLba$_f1QV7{JkvBZ5)E|{NuPr939QJp;c|EG&Rhv> zqcb|ul1@`hA%(e>qwi0jAD_Pv6B*r6Fu}_EbUvpSBe)=n636enY>>QyOUVdLwQ!kh zF=?v+r7Mp+@{EFsOBuQqQB7p a_vwG1{`cvBpZ@pY|NDR6O%+D~l3xIr-~=oH literal 0 HcmV?d00001 diff --git a/pods/imports/k8s/main.go b/pods/imports/k8s/main.go new file mode 100644 index 000000000..cd689aa95 --- /dev/null +++ b/pods/imports/k8s/main.go @@ -0,0 +1,5374 @@ +// k8s +package k8s + +import ( + "reflect" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" +) + +func init() { + _jsii_.RegisterStruct( + "k8s.Affinity", + reflect.TypeOf((*Affinity)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AggregationRule", + reflect.TypeOf((*AggregationRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ApiServiceSpec", + reflect.TypeOf((*ApiServiceSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AppArmorProfile", + reflect.TypeOf((*AppArmorProfile)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ApplyConfigurationV1Alpha1", + reflect.TypeOf((*ApplyConfigurationV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AuditAnnotation", + reflect.TypeOf((*AuditAnnotation)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AuditAnnotationV1Beta1", + reflect.TypeOf((*AuditAnnotationV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AwsElasticBlockStoreVolumeSource", + reflect.TypeOf((*AwsElasticBlockStoreVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AzureDiskVolumeSource", + reflect.TypeOf((*AzureDiskVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AzureFilePersistentVolumeSource", + reflect.TypeOf((*AzureFilePersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.AzureFileVolumeSource", + reflect.TypeOf((*AzureFileVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.BasicDeviceV1Alpha3", + reflect.TypeOf((*BasicDeviceV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.BasicDeviceV1Beta1", + reflect.TypeOf((*BasicDeviceV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.BoundObjectReference", + reflect.TypeOf((*BoundObjectReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Capabilities", + reflect.TypeOf((*Capabilities)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CelDeviceSelectorV1Alpha3", + reflect.TypeOf((*CelDeviceSelectorV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CelDeviceSelectorV1Beta1", + reflect.TypeOf((*CelDeviceSelectorV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CephFsPersistentVolumeSource", + reflect.TypeOf((*CephFsPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CephFsVolumeSource", + reflect.TypeOf((*CephFsVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CertificateSigningRequestSpec", + reflect.TypeOf((*CertificateSigningRequestSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CinderPersistentVolumeSource", + reflect.TypeOf((*CinderPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CinderVolumeSource", + reflect.TypeOf((*CinderVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ClientIpConfig", + reflect.TypeOf((*ClientIpConfig)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ClusterTrustBundleProjection", + reflect.TypeOf((*ClusterTrustBundleProjection)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ClusterTrustBundleSpecV1Alpha1", + reflect.TypeOf((*ClusterTrustBundleSpecV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ComponentCondition", + reflect.TypeOf((*ComponentCondition)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ConfigMapEnvSource", + reflect.TypeOf((*ConfigMapEnvSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ConfigMapKeySelector", + reflect.TypeOf((*ConfigMapKeySelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ConfigMapNodeConfigSource", + reflect.TypeOf((*ConfigMapNodeConfigSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ConfigMapProjection", + reflect.TypeOf((*ConfigMapProjection)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ConfigMapVolumeSource", + reflect.TypeOf((*ConfigMapVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Container", + reflect.TypeOf((*Container)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ContainerPort", + reflect.TypeOf((*ContainerPort)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ContainerResizePolicy", + reflect.TypeOf((*ContainerResizePolicy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ContainerResourceMetricSourceV2", + reflect.TypeOf((*ContainerResourceMetricSourceV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CronJobSpec", + reflect.TypeOf((*CronJobSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CrossVersionObjectReference", + reflect.TypeOf((*CrossVersionObjectReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CrossVersionObjectReferenceV2", + reflect.TypeOf((*CrossVersionObjectReferenceV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CsiDriverSpec", + reflect.TypeOf((*CsiDriverSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CsiNodeDriver", + reflect.TypeOf((*CsiNodeDriver)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CsiNodeSpec", + reflect.TypeOf((*CsiNodeSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CsiPersistentVolumeSource", + reflect.TypeOf((*CsiPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CsiVolumeSource", + reflect.TypeOf((*CsiVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceColumnDefinition", + reflect.TypeOf((*CustomResourceColumnDefinition)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceConversion", + reflect.TypeOf((*CustomResourceConversion)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceDefinitionNames", + reflect.TypeOf((*CustomResourceDefinitionNames)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceDefinitionSpec", + reflect.TypeOf((*CustomResourceDefinitionSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceDefinitionVersion", + reflect.TypeOf((*CustomResourceDefinitionVersion)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceSubresourceScale", + reflect.TypeOf((*CustomResourceSubresourceScale)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceSubresources", + reflect.TypeOf((*CustomResourceSubresources)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.CustomResourceValidation", + reflect.TypeOf((*CustomResourceValidation)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DaemonSetSpec", + reflect.TypeOf((*DaemonSetSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DaemonSetUpdateStrategy", + reflect.TypeOf((*DaemonSetUpdateStrategy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeleteOptions", + reflect.TypeOf((*DeleteOptions)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeploymentSpec", + reflect.TypeOf((*DeploymentSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeploymentStrategy", + reflect.TypeOf((*DeploymentStrategy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceAttributeV1Alpha3", + reflect.TypeOf((*DeviceAttributeV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceAttributeV1Beta1", + reflect.TypeOf((*DeviceAttributeV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceCapacityV1Beta1", + reflect.TypeOf((*DeviceCapacityV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClaimConfigurationV1Alpha3", + reflect.TypeOf((*DeviceClaimConfigurationV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClaimConfigurationV1Beta1", + reflect.TypeOf((*DeviceClaimConfigurationV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClaimV1Alpha3", + reflect.TypeOf((*DeviceClaimV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClaimV1Beta1", + reflect.TypeOf((*DeviceClaimV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClassConfigurationV1Alpha3", + reflect.TypeOf((*DeviceClassConfigurationV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClassConfigurationV1Beta1", + reflect.TypeOf((*DeviceClassConfigurationV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClassSpecV1Alpha3", + reflect.TypeOf((*DeviceClassSpecV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceClassSpecV1Beta1", + reflect.TypeOf((*DeviceClassSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceConstraintV1Alpha3", + reflect.TypeOf((*DeviceConstraintV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceConstraintV1Beta1", + reflect.TypeOf((*DeviceConstraintV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceRequestV1Alpha3", + reflect.TypeOf((*DeviceRequestV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceRequestV1Beta1", + reflect.TypeOf((*DeviceRequestV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceSelectorV1Alpha3", + reflect.TypeOf((*DeviceSelectorV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceSelectorV1Beta1", + reflect.TypeOf((*DeviceSelectorV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceV1Alpha3", + reflect.TypeOf((*DeviceV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DeviceV1Beta1", + reflect.TypeOf((*DeviceV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DownwardApiProjection", + reflect.TypeOf((*DownwardApiProjection)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DownwardApiVolumeFile", + reflect.TypeOf((*DownwardApiVolumeFile)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.DownwardApiVolumeSource", + reflect.TypeOf((*DownwardApiVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EmptyDirVolumeSource", + reflect.TypeOf((*EmptyDirVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Endpoint", + reflect.TypeOf((*Endpoint)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EndpointAddress", + reflect.TypeOf((*EndpointAddress)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EndpointConditions", + reflect.TypeOf((*EndpointConditions)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EndpointHints", + reflect.TypeOf((*EndpointHints)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EndpointPort", + reflect.TypeOf((*EndpointPort)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EndpointSubset", + reflect.TypeOf((*EndpointSubset)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EnvFromSource", + reflect.TypeOf((*EnvFromSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EnvVar", + reflect.TypeOf((*EnvVar)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EnvVarSource", + reflect.TypeOf((*EnvVarSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EphemeralContainer", + reflect.TypeOf((*EphemeralContainer)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EphemeralVolumeSource", + reflect.TypeOf((*EphemeralVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EventSeries", + reflect.TypeOf((*EventSeries)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.EventSource", + reflect.TypeOf((*EventSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ExecAction", + reflect.TypeOf((*ExecAction)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ExemptPriorityLevelConfiguration", + reflect.TypeOf((*ExemptPriorityLevelConfiguration)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ExternalDocumentation", + reflect.TypeOf((*ExternalDocumentation)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ExternalMetricSourceV2", + reflect.TypeOf((*ExternalMetricSourceV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FcVolumeSource", + reflect.TypeOf((*FcVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FieldSelectorAttributes", + reflect.TypeOf((*FieldSelectorAttributes)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FieldSelectorRequirement", + reflect.TypeOf((*FieldSelectorRequirement)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FlexPersistentVolumeSource", + reflect.TypeOf((*FlexPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FlexVolumeSource", + reflect.TypeOf((*FlexVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FlockerVolumeSource", + reflect.TypeOf((*FlockerVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FlowDistinguisherMethod", + reflect.TypeOf((*FlowDistinguisherMethod)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.FlowSchemaSpec", + reflect.TypeOf((*FlowSchemaSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ForZone", + reflect.TypeOf((*ForZone)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.GcePersistentDiskVolumeSource", + reflect.TypeOf((*GcePersistentDiskVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.GitRepoVolumeSource", + reflect.TypeOf((*GitRepoVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.GlusterfsPersistentVolumeSource", + reflect.TypeOf((*GlusterfsPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.GlusterfsVolumeSource", + reflect.TypeOf((*GlusterfsVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.GroupVersionResourceV1Alpha1", + reflect.TypeOf((*GroupVersionResourceV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.GrpcAction", + reflect.TypeOf((*GrpcAction)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HorizontalPodAutoscalerBehaviorV2", + reflect.TypeOf((*HorizontalPodAutoscalerBehaviorV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HorizontalPodAutoscalerSpec", + reflect.TypeOf((*HorizontalPodAutoscalerSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HorizontalPodAutoscalerSpecV2", + reflect.TypeOf((*HorizontalPodAutoscalerSpecV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HostAlias", + reflect.TypeOf((*HostAlias)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HostPathVolumeSource", + reflect.TypeOf((*HostPathVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HpaScalingPolicyV2", + reflect.TypeOf((*HpaScalingPolicyV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HpaScalingRulesV2", + reflect.TypeOf((*HpaScalingRulesV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HttpGetAction", + reflect.TypeOf((*HttpGetAction)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HttpHeader", + reflect.TypeOf((*HttpHeader)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HttpIngressPath", + reflect.TypeOf((*HttpIngressPath)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.HttpIngressRuleValue", + reflect.TypeOf((*HttpIngressRuleValue)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ImageVolumeSource", + reflect.TypeOf((*ImageVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressBackend", + reflect.TypeOf((*IngressBackend)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressClassParametersReference", + reflect.TypeOf((*IngressClassParametersReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressClassSpec", + reflect.TypeOf((*IngressClassSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressRule", + reflect.TypeOf((*IngressRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressServiceBackend", + reflect.TypeOf((*IngressServiceBackend)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressSpec", + reflect.TypeOf((*IngressSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IngressTls", + reflect.TypeOf((*IngressTls)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.IntOrString", + reflect.TypeOf((*IntOrString)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberProperty{JsiiProperty: "value", GoGetter: "Value"}, + }, + func() interface{} { + return &jsiiProxy_IntOrString{} + }, + ) + _jsii_.RegisterEnum( + "k8s.IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind", + reflect.TypeOf((*IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind)(nil)).Elem(), + map[string]interface{}{ + "DELETE_OPTIONS": IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind_DELETE_OPTIONS, + }, + ) + _jsii_.RegisterStruct( + "k8s.IpAddressSpecV1Beta1", + reflect.TypeOf((*IpAddressSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IpBlock", + reflect.TypeOf((*IpBlock)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IscsiPersistentVolumeSource", + reflect.TypeOf((*IscsiPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.IscsiVolumeSource", + reflect.TypeOf((*IscsiVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.JobSpec", + reflect.TypeOf((*JobSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.JobTemplateSpec", + reflect.TypeOf((*JobTemplateSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.JsonPatchV1Alpha1", + reflect.TypeOf((*JsonPatchV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.JsonSchemaProps", + reflect.TypeOf((*JsonSchemaProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KeyToPath", + reflect.TypeOf((*KeyToPath)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeApiService", + reflect.TypeOf((*KubeApiService)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeApiService{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeApiServiceList", + reflect.TypeOf((*KubeApiServiceList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeApiServiceList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeApiServiceListProps", + reflect.TypeOf((*KubeApiServiceListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeApiServiceProps", + reflect.TypeOf((*KubeApiServiceProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeBinding", + reflect.TypeOf((*KubeBinding)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeBinding{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeBindingProps", + reflect.TypeOf((*KubeBindingProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeCertificateSigningRequest", + reflect.TypeOf((*KubeCertificateSigningRequest)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCertificateSigningRequest{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeCertificateSigningRequestList", + reflect.TypeOf((*KubeCertificateSigningRequestList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCertificateSigningRequestList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeCertificateSigningRequestListProps", + reflect.TypeOf((*KubeCertificateSigningRequestListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeCertificateSigningRequestProps", + reflect.TypeOf((*KubeCertificateSigningRequestProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeClusterRole", + reflect.TypeOf((*KubeClusterRole)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeClusterRole{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeClusterRoleBinding", + reflect.TypeOf((*KubeClusterRoleBinding)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeClusterRoleBinding{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeClusterRoleBindingList", + reflect.TypeOf((*KubeClusterRoleBindingList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeClusterRoleBindingList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeClusterRoleBindingListProps", + reflect.TypeOf((*KubeClusterRoleBindingListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeClusterRoleBindingProps", + reflect.TypeOf((*KubeClusterRoleBindingProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeClusterRoleList", + reflect.TypeOf((*KubeClusterRoleList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeClusterRoleList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeClusterRoleListProps", + reflect.TypeOf((*KubeClusterRoleListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeClusterRoleProps", + reflect.TypeOf((*KubeClusterRoleProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeClusterTrustBundleListV1Alpha1", + reflect.TypeOf((*KubeClusterTrustBundleListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeClusterTrustBundleListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeClusterTrustBundleListV1Alpha1Props", + reflect.TypeOf((*KubeClusterTrustBundleListV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeClusterTrustBundleV1Alpha1", + reflect.TypeOf((*KubeClusterTrustBundleV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeClusterTrustBundleV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeClusterTrustBundleV1Alpha1Props", + reflect.TypeOf((*KubeClusterTrustBundleV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeComponentStatus", + reflect.TypeOf((*KubeComponentStatus)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeComponentStatus{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeComponentStatusList", + reflect.TypeOf((*KubeComponentStatusList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeComponentStatusList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeComponentStatusListProps", + reflect.TypeOf((*KubeComponentStatusListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeComponentStatusProps", + reflect.TypeOf((*KubeComponentStatusProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeConfigMap", + reflect.TypeOf((*KubeConfigMap)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeConfigMap{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeConfigMapList", + reflect.TypeOf((*KubeConfigMapList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeConfigMapList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeConfigMapListProps", + reflect.TypeOf((*KubeConfigMapListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeConfigMapProps", + reflect.TypeOf((*KubeConfigMapProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeControllerRevision", + reflect.TypeOf((*KubeControllerRevision)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeControllerRevision{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeControllerRevisionList", + reflect.TypeOf((*KubeControllerRevisionList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeControllerRevisionList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeControllerRevisionListProps", + reflect.TypeOf((*KubeControllerRevisionListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeControllerRevisionProps", + reflect.TypeOf((*KubeControllerRevisionProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeCronJob", + reflect.TypeOf((*KubeCronJob)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCronJob{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeCronJobList", + reflect.TypeOf((*KubeCronJobList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCronJobList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeCronJobListProps", + reflect.TypeOf((*KubeCronJobListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeCronJobProps", + reflect.TypeOf((*KubeCronJobProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeCsiDriver", + reflect.TypeOf((*KubeCsiDriver)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCsiDriver{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeCsiDriverList", + reflect.TypeOf((*KubeCsiDriverList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCsiDriverList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeCsiDriverListProps", + reflect.TypeOf((*KubeCsiDriverListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeCsiDriverProps", + reflect.TypeOf((*KubeCsiDriverProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeCsiNode", + reflect.TypeOf((*KubeCsiNode)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCsiNode{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeCsiNodeList", + reflect.TypeOf((*KubeCsiNodeList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCsiNodeList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeCsiNodeListProps", + reflect.TypeOf((*KubeCsiNodeListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeCsiNodeProps", + reflect.TypeOf((*KubeCsiNodeProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeCsiStorageCapacity", + reflect.TypeOf((*KubeCsiStorageCapacity)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCsiStorageCapacity{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeCsiStorageCapacityList", + reflect.TypeOf((*KubeCsiStorageCapacityList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCsiStorageCapacityList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeCsiStorageCapacityListProps", + reflect.TypeOf((*KubeCsiStorageCapacityListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeCsiStorageCapacityProps", + reflect.TypeOf((*KubeCsiStorageCapacityProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeCustomResourceDefinition", + reflect.TypeOf((*KubeCustomResourceDefinition)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCustomResourceDefinition{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeCustomResourceDefinitionList", + reflect.TypeOf((*KubeCustomResourceDefinitionList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeCustomResourceDefinitionList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeCustomResourceDefinitionListProps", + reflect.TypeOf((*KubeCustomResourceDefinitionListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeCustomResourceDefinitionProps", + reflect.TypeOf((*KubeCustomResourceDefinitionProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeDaemonSet", + reflect.TypeOf((*KubeDaemonSet)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDaemonSet{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeDaemonSetList", + reflect.TypeOf((*KubeDaemonSetList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDaemonSetList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeDaemonSetListProps", + reflect.TypeOf((*KubeDaemonSetListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeDaemonSetProps", + reflect.TypeOf((*KubeDaemonSetProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeDeployment", + reflect.TypeOf((*KubeDeployment)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDeployment{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeDeploymentList", + reflect.TypeOf((*KubeDeploymentList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDeploymentList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeDeploymentListProps", + reflect.TypeOf((*KubeDeploymentListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeDeploymentProps", + reflect.TypeOf((*KubeDeploymentProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeDeviceClassListV1Alpha3", + reflect.TypeOf((*KubeDeviceClassListV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDeviceClassListV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeDeviceClassListV1Alpha3Props", + reflect.TypeOf((*KubeDeviceClassListV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeDeviceClassListV1Beta1", + reflect.TypeOf((*KubeDeviceClassListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDeviceClassListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeDeviceClassListV1Beta1Props", + reflect.TypeOf((*KubeDeviceClassListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeDeviceClassV1Alpha3", + reflect.TypeOf((*KubeDeviceClassV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDeviceClassV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeDeviceClassV1Alpha3Props", + reflect.TypeOf((*KubeDeviceClassV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeDeviceClassV1Beta1", + reflect.TypeOf((*KubeDeviceClassV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeDeviceClassV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeDeviceClassV1Beta1Props", + reflect.TypeOf((*KubeDeviceClassV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeEndpointSlice", + reflect.TypeOf((*KubeEndpointSlice)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEndpointSlice{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeEndpointSliceList", + reflect.TypeOf((*KubeEndpointSliceList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEndpointSliceList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeEndpointSliceListProps", + reflect.TypeOf((*KubeEndpointSliceListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeEndpointSliceProps", + reflect.TypeOf((*KubeEndpointSliceProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeEndpoints", + reflect.TypeOf((*KubeEndpoints)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEndpoints{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeEndpointsList", + reflect.TypeOf((*KubeEndpointsList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEndpointsList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeEndpointsListProps", + reflect.TypeOf((*KubeEndpointsListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeEndpointsProps", + reflect.TypeOf((*KubeEndpointsProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeEvent", + reflect.TypeOf((*KubeEvent)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEvent{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeEventList", + reflect.TypeOf((*KubeEventList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEventList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeEventListProps", + reflect.TypeOf((*KubeEventListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeEventProps", + reflect.TypeOf((*KubeEventProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeEviction", + reflect.TypeOf((*KubeEviction)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeEviction{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeEvictionProps", + reflect.TypeOf((*KubeEvictionProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeFlowSchema", + reflect.TypeOf((*KubeFlowSchema)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeFlowSchema{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeFlowSchemaList", + reflect.TypeOf((*KubeFlowSchemaList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeFlowSchemaList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeFlowSchemaListProps", + reflect.TypeOf((*KubeFlowSchemaListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeFlowSchemaProps", + reflect.TypeOf((*KubeFlowSchemaProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeHorizontalPodAutoscaler", + reflect.TypeOf((*KubeHorizontalPodAutoscaler)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeHorizontalPodAutoscaler{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeHorizontalPodAutoscalerList", + reflect.TypeOf((*KubeHorizontalPodAutoscalerList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeHorizontalPodAutoscalerList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeHorizontalPodAutoscalerListProps", + reflect.TypeOf((*KubeHorizontalPodAutoscalerListProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeHorizontalPodAutoscalerListV2", + reflect.TypeOf((*KubeHorizontalPodAutoscalerListV2)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeHorizontalPodAutoscalerListV2{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeHorizontalPodAutoscalerListV2Props", + reflect.TypeOf((*KubeHorizontalPodAutoscalerListV2Props)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeHorizontalPodAutoscalerProps", + reflect.TypeOf((*KubeHorizontalPodAutoscalerProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeHorizontalPodAutoscalerV2", + reflect.TypeOf((*KubeHorizontalPodAutoscalerV2)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeHorizontalPodAutoscalerV2{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeHorizontalPodAutoscalerV2Props", + reflect.TypeOf((*KubeHorizontalPodAutoscalerV2Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeIngress", + reflect.TypeOf((*KubeIngress)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeIngress{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeIngressClass", + reflect.TypeOf((*KubeIngressClass)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeIngressClass{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeIngressClassList", + reflect.TypeOf((*KubeIngressClassList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeIngressClassList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeIngressClassListProps", + reflect.TypeOf((*KubeIngressClassListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeIngressClassProps", + reflect.TypeOf((*KubeIngressClassProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeIngressList", + reflect.TypeOf((*KubeIngressList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeIngressList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeIngressListProps", + reflect.TypeOf((*KubeIngressListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeIngressProps", + reflect.TypeOf((*KubeIngressProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeIpAddressListV1Beta1", + reflect.TypeOf((*KubeIpAddressListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeIpAddressListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeIpAddressListV1Beta1Props", + reflect.TypeOf((*KubeIpAddressListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeIpAddressV1Beta1", + reflect.TypeOf((*KubeIpAddressV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeIpAddressV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeIpAddressV1Beta1Props", + reflect.TypeOf((*KubeIpAddressV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeJob", + reflect.TypeOf((*KubeJob)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeJob{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeJobList", + reflect.TypeOf((*KubeJobList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeJobList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeJobListProps", + reflect.TypeOf((*KubeJobListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeJobProps", + reflect.TypeOf((*KubeJobProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeLease", + reflect.TypeOf((*KubeLease)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLease{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeLeaseCandidateListV1Alpha2", + reflect.TypeOf((*KubeLeaseCandidateListV1Alpha2)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLeaseCandidateListV1Alpha2{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeLeaseCandidateListV1Alpha2Props", + reflect.TypeOf((*KubeLeaseCandidateListV1Alpha2Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeLeaseCandidateV1Alpha2", + reflect.TypeOf((*KubeLeaseCandidateV1Alpha2)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLeaseCandidateV1Alpha2{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeLeaseCandidateV1Alpha2Props", + reflect.TypeOf((*KubeLeaseCandidateV1Alpha2Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeLeaseList", + reflect.TypeOf((*KubeLeaseList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLeaseList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeLeaseListProps", + reflect.TypeOf((*KubeLeaseListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeLeaseProps", + reflect.TypeOf((*KubeLeaseProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeLimitRange", + reflect.TypeOf((*KubeLimitRange)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLimitRange{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeLimitRangeList", + reflect.TypeOf((*KubeLimitRangeList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLimitRangeList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeLimitRangeListProps", + reflect.TypeOf((*KubeLimitRangeListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeLimitRangeProps", + reflect.TypeOf((*KubeLimitRangeProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeLocalSubjectAccessReview", + reflect.TypeOf((*KubeLocalSubjectAccessReview)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeLocalSubjectAccessReview{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeLocalSubjectAccessReviewProps", + reflect.TypeOf((*KubeLocalSubjectAccessReviewProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1Props", + reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingListV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1Props", + reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + reflect.TypeOf((*KubeMutatingAdmissionPolicyListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeMutatingAdmissionPolicyListV1Alpha1Props", + reflect.TypeOf((*KubeMutatingAdmissionPolicyListV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + reflect.TypeOf((*KubeMutatingAdmissionPolicyV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeMutatingAdmissionPolicyV1Alpha1Props", + reflect.TypeOf((*KubeMutatingAdmissionPolicyV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeMutatingWebhookConfiguration", + reflect.TypeOf((*KubeMutatingWebhookConfiguration)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeMutatingWebhookConfiguration{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeMutatingWebhookConfigurationList", + reflect.TypeOf((*KubeMutatingWebhookConfigurationList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeMutatingWebhookConfigurationList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeMutatingWebhookConfigurationListProps", + reflect.TypeOf((*KubeMutatingWebhookConfigurationListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeMutatingWebhookConfigurationProps", + reflect.TypeOf((*KubeMutatingWebhookConfigurationProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeNamespace", + reflect.TypeOf((*KubeNamespace)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeNamespace{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeNamespaceList", + reflect.TypeOf((*KubeNamespaceList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeNamespaceList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeNamespaceListProps", + reflect.TypeOf((*KubeNamespaceListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeNamespaceProps", + reflect.TypeOf((*KubeNamespaceProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeNetworkPolicy", + reflect.TypeOf((*KubeNetworkPolicy)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeNetworkPolicy{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeNetworkPolicyList", + reflect.TypeOf((*KubeNetworkPolicyList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeNetworkPolicyList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeNetworkPolicyListProps", + reflect.TypeOf((*KubeNetworkPolicyListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeNetworkPolicyProps", + reflect.TypeOf((*KubeNetworkPolicyProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeNode", + reflect.TypeOf((*KubeNode)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeNode{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeNodeList", + reflect.TypeOf((*KubeNodeList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeNodeList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeNodeListProps", + reflect.TypeOf((*KubeNodeListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeNodeProps", + reflect.TypeOf((*KubeNodeProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePersistentVolume", + reflect.TypeOf((*KubePersistentVolume)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePersistentVolume{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePersistentVolumeClaim", + reflect.TypeOf((*KubePersistentVolumeClaim)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePersistentVolumeClaim{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePersistentVolumeClaimList", + reflect.TypeOf((*KubePersistentVolumeClaimList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePersistentVolumeClaimList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePersistentVolumeClaimListProps", + reflect.TypeOf((*KubePersistentVolumeClaimListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePersistentVolumeClaimProps", + reflect.TypeOf((*KubePersistentVolumeClaimProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePersistentVolumeList", + reflect.TypeOf((*KubePersistentVolumeList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePersistentVolumeList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePersistentVolumeListProps", + reflect.TypeOf((*KubePersistentVolumeListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePersistentVolumeProps", + reflect.TypeOf((*KubePersistentVolumeProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePod", + reflect.TypeOf((*KubePod)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePod{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePodDisruptionBudget", + reflect.TypeOf((*KubePodDisruptionBudget)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodDisruptionBudget{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePodDisruptionBudgetList", + reflect.TypeOf((*KubePodDisruptionBudgetList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodDisruptionBudgetList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePodDisruptionBudgetListProps", + reflect.TypeOf((*KubePodDisruptionBudgetListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePodDisruptionBudgetProps", + reflect.TypeOf((*KubePodDisruptionBudgetProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePodList", + reflect.TypeOf((*KubePodList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePodListProps", + reflect.TypeOf((*KubePodListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePodProps", + reflect.TypeOf((*KubePodProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePodTemplate", + reflect.TypeOf((*KubePodTemplate)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodTemplate{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePodTemplateList", + reflect.TypeOf((*KubePodTemplateList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodTemplateList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePodTemplateListProps", + reflect.TypeOf((*KubePodTemplateListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePodTemplateProps", + reflect.TypeOf((*KubePodTemplateProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePriorityClass", + reflect.TypeOf((*KubePriorityClass)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePriorityClass{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePriorityClassList", + reflect.TypeOf((*KubePriorityClassList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePriorityClassList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePriorityClassListProps", + reflect.TypeOf((*KubePriorityClassListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePriorityClassProps", + reflect.TypeOf((*KubePriorityClassProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePriorityLevelConfiguration", + reflect.TypeOf((*KubePriorityLevelConfiguration)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePriorityLevelConfiguration{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubePriorityLevelConfigurationList", + reflect.TypeOf((*KubePriorityLevelConfigurationList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePriorityLevelConfigurationList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePriorityLevelConfigurationListProps", + reflect.TypeOf((*KubePriorityLevelConfigurationListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePriorityLevelConfigurationProps", + reflect.TypeOf((*KubePriorityLevelConfigurationProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeReplicaSet", + reflect.TypeOf((*KubeReplicaSet)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeReplicaSet{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeReplicaSetList", + reflect.TypeOf((*KubeReplicaSetList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeReplicaSetList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeReplicaSetListProps", + reflect.TypeOf((*KubeReplicaSetListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeReplicaSetProps", + reflect.TypeOf((*KubeReplicaSetProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeReplicationController", + reflect.TypeOf((*KubeReplicationController)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeReplicationController{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeReplicationControllerList", + reflect.TypeOf((*KubeReplicationControllerList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeReplicationControllerList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeReplicationControllerListProps", + reflect.TypeOf((*KubeReplicationControllerListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeReplicationControllerProps", + reflect.TypeOf((*KubeReplicationControllerProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimListV1Alpha3", + reflect.TypeOf((*KubeResourceClaimListV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimListV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimListV1Alpha3Props", + reflect.TypeOf((*KubeResourceClaimListV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimListV1Beta1", + reflect.TypeOf((*KubeResourceClaimListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimListV1Beta1Props", + reflect.TypeOf((*KubeResourceClaimListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimTemplateListV1Alpha3", + reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimTemplateListV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimTemplateListV1Alpha3Props", + reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimTemplateListV1Beta1", + reflect.TypeOf((*KubeResourceClaimTemplateListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimTemplateListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimTemplateListV1Beta1Props", + reflect.TypeOf((*KubeResourceClaimTemplateListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimTemplateV1Alpha3", + reflect.TypeOf((*KubeResourceClaimTemplateV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimTemplateV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimTemplateV1Alpha3Props", + reflect.TypeOf((*KubeResourceClaimTemplateV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimTemplateV1Beta1", + reflect.TypeOf((*KubeResourceClaimTemplateV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimTemplateV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimTemplateV1Beta1Props", + reflect.TypeOf((*KubeResourceClaimTemplateV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimV1Alpha3", + reflect.TypeOf((*KubeResourceClaimV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimV1Alpha3Props", + reflect.TypeOf((*KubeResourceClaimV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceClaimV1Beta1", + reflect.TypeOf((*KubeResourceClaimV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceClaimV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceClaimV1Beta1Props", + reflect.TypeOf((*KubeResourceClaimV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceQuota", + reflect.TypeOf((*KubeResourceQuota)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceQuota{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeResourceQuotaList", + reflect.TypeOf((*KubeResourceQuotaList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceQuotaList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceQuotaListProps", + reflect.TypeOf((*KubeResourceQuotaListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceQuotaProps", + reflect.TypeOf((*KubeResourceQuotaProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceSliceListV1Alpha3", + reflect.TypeOf((*KubeResourceSliceListV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceSliceListV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceSliceListV1Alpha3Props", + reflect.TypeOf((*KubeResourceSliceListV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceSliceListV1Beta1", + reflect.TypeOf((*KubeResourceSliceListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceSliceListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceSliceListV1Beta1Props", + reflect.TypeOf((*KubeResourceSliceListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceSliceV1Alpha3", + reflect.TypeOf((*KubeResourceSliceV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceSliceV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceSliceV1Alpha3Props", + reflect.TypeOf((*KubeResourceSliceV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeResourceSliceV1Beta1", + reflect.TypeOf((*KubeResourceSliceV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeResourceSliceV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeResourceSliceV1Beta1Props", + reflect.TypeOf((*KubeResourceSliceV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeRole", + reflect.TypeOf((*KubeRole)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeRole{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeRoleBinding", + reflect.TypeOf((*KubeRoleBinding)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeRoleBinding{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeRoleBindingList", + reflect.TypeOf((*KubeRoleBindingList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeRoleBindingList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeRoleBindingListProps", + reflect.TypeOf((*KubeRoleBindingListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeRoleBindingProps", + reflect.TypeOf((*KubeRoleBindingProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeRoleList", + reflect.TypeOf((*KubeRoleList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeRoleList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeRoleListProps", + reflect.TypeOf((*KubeRoleListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeRoleProps", + reflect.TypeOf((*KubeRoleProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeRuntimeClass", + reflect.TypeOf((*KubeRuntimeClass)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeRuntimeClass{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeRuntimeClassList", + reflect.TypeOf((*KubeRuntimeClassList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeRuntimeClassList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeRuntimeClassListProps", + reflect.TypeOf((*KubeRuntimeClassListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeRuntimeClassProps", + reflect.TypeOf((*KubeRuntimeClassProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeScale", + reflect.TypeOf((*KubeScale)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeScale{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeScaleProps", + reflect.TypeOf((*KubeScaleProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeSecret", + reflect.TypeOf((*KubeSecret)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSecret{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeSecretList", + reflect.TypeOf((*KubeSecretList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSecretList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSecretListProps", + reflect.TypeOf((*KubeSecretListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeSecretProps", + reflect.TypeOf((*KubeSecretProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeSelfSubjectAccessReview", + reflect.TypeOf((*KubeSelfSubjectAccessReview)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSelfSubjectAccessReview{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSelfSubjectAccessReviewProps", + reflect.TypeOf((*KubeSelfSubjectAccessReviewProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeSelfSubjectReview", + reflect.TypeOf((*KubeSelfSubjectReview)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSelfSubjectReview{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSelfSubjectReviewProps", + reflect.TypeOf((*KubeSelfSubjectReviewProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeSelfSubjectReviewV1Beta1", + reflect.TypeOf((*KubeSelfSubjectReviewV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSelfSubjectReviewV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSelfSubjectReviewV1Beta1Props", + reflect.TypeOf((*KubeSelfSubjectReviewV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeSelfSubjectRulesReview", + reflect.TypeOf((*KubeSelfSubjectRulesReview)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSelfSubjectRulesReview{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSelfSubjectRulesReviewProps", + reflect.TypeOf((*KubeSelfSubjectRulesReviewProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeService", + reflect.TypeOf((*KubeService)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeService{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeServiceAccount", + reflect.TypeOf((*KubeServiceAccount)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeServiceAccount{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeServiceAccountList", + reflect.TypeOf((*KubeServiceAccountList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeServiceAccountList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeServiceAccountListProps", + reflect.TypeOf((*KubeServiceAccountListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeServiceAccountProps", + reflect.TypeOf((*KubeServiceAccountProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeServiceCidrListV1Beta1", + reflect.TypeOf((*KubeServiceCidrListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeServiceCidrListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeServiceCidrListV1Beta1Props", + reflect.TypeOf((*KubeServiceCidrListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeServiceCidrv1Beta1", + reflect.TypeOf((*KubeServiceCidrv1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeServiceCidrv1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeServiceCidrv1Beta1Props", + reflect.TypeOf((*KubeServiceCidrv1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeServiceList", + reflect.TypeOf((*KubeServiceList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeServiceList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeServiceListProps", + reflect.TypeOf((*KubeServiceListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeServiceProps", + reflect.TypeOf((*KubeServiceProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStatefulSet", + reflect.TypeOf((*KubeStatefulSet)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStatefulSet{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeStatefulSetList", + reflect.TypeOf((*KubeStatefulSetList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStatefulSetList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStatefulSetListProps", + reflect.TypeOf((*KubeStatefulSetListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeStatefulSetProps", + reflect.TypeOf((*KubeStatefulSetProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStatus", + reflect.TypeOf((*KubeStatus)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStatus{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStatusProps", + reflect.TypeOf((*KubeStatusProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStorageClass", + reflect.TypeOf((*KubeStorageClass)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStorageClass{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeStorageClassList", + reflect.TypeOf((*KubeStorageClassList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStorageClassList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStorageClassListProps", + reflect.TypeOf((*KubeStorageClassListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeStorageClassProps", + reflect.TypeOf((*KubeStorageClassProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStorageVersionListV1Alpha1", + reflect.TypeOf((*KubeStorageVersionListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStorageVersionListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStorageVersionListV1Alpha1Props", + reflect.TypeOf((*KubeStorageVersionListV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStorageVersionMigrationListV1Alpha1", + reflect.TypeOf((*KubeStorageVersionMigrationListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStorageVersionMigrationListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStorageVersionMigrationListV1Alpha1Props", + reflect.TypeOf((*KubeStorageVersionMigrationListV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStorageVersionMigrationV1Alpha1", + reflect.TypeOf((*KubeStorageVersionMigrationV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStorageVersionMigrationV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStorageVersionMigrationV1Alpha1Props", + reflect.TypeOf((*KubeStorageVersionMigrationV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeStorageVersionV1Alpha1", + reflect.TypeOf((*KubeStorageVersionV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeStorageVersionV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeStorageVersionV1Alpha1Props", + reflect.TypeOf((*KubeStorageVersionV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeSubjectAccessReview", + reflect.TypeOf((*KubeSubjectAccessReview)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSubjectAccessReview{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSubjectAccessReviewProps", + reflect.TypeOf((*KubeSubjectAccessReviewProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeTokenRequest", + reflect.TypeOf((*KubeTokenRequest)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeTokenRequest{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeTokenRequestProps", + reflect.TypeOf((*KubeTokenRequestProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeTokenReview", + reflect.TypeOf((*KubeTokenReview)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeTokenReview{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeTokenReviewProps", + reflect.TypeOf((*KubeTokenReviewProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicy", + reflect.TypeOf((*KubeValidatingAdmissionPolicy)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicy{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyBinding", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBinding)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyBinding{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyBindingList", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyBindingListProps", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyBindingProps", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyList", + reflect.TypeOf((*KubeValidatingAdmissionPolicyList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyListProps", + reflect.TypeOf((*KubeValidatingAdmissionPolicyListProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyListV1Beta1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyProps", + reflect.TypeOf((*KubeValidatingAdmissionPolicyProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyV1Beta1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyV1Beta1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingWebhookConfiguration", + reflect.TypeOf((*KubeValidatingWebhookConfiguration)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingWebhookConfiguration{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeValidatingWebhookConfigurationList", + reflect.TypeOf((*KubeValidatingWebhookConfigurationList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingWebhookConfigurationList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingWebhookConfigurationListProps", + reflect.TypeOf((*KubeValidatingWebhookConfigurationListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingWebhookConfigurationProps", + reflect.TypeOf((*KubeValidatingWebhookConfigurationProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeVolumeAttachment", + reflect.TypeOf((*KubeVolumeAttachment)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeVolumeAttachment{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterClass( + "k8s.KubeVolumeAttachmentList", + reflect.TypeOf((*KubeVolumeAttachmentList)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeVolumeAttachmentList{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeVolumeAttachmentListProps", + reflect.TypeOf((*KubeVolumeAttachmentListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeVolumeAttachmentProps", + reflect.TypeOf((*KubeVolumeAttachmentProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeVolumeAttributesClassListV1Alpha1", + reflect.TypeOf((*KubeVolumeAttributesClassListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeVolumeAttributesClassListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeVolumeAttributesClassListV1Alpha1Props", + reflect.TypeOf((*KubeVolumeAttributesClassListV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeVolumeAttributesClassListV1Beta1", + reflect.TypeOf((*KubeVolumeAttributesClassListV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeVolumeAttributesClassListV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeVolumeAttributesClassListV1Beta1Props", + reflect.TypeOf((*KubeVolumeAttributesClassListV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeVolumeAttributesClassV1Alpha1", + reflect.TypeOf((*KubeVolumeAttributesClassV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeVolumeAttributesClassV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeVolumeAttributesClassV1Alpha1Props", + reflect.TypeOf((*KubeVolumeAttributesClassV1Alpha1Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubeVolumeAttributesClassV1Beta1", + reflect.TypeOf((*KubeVolumeAttributesClassV1Beta1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeVolumeAttributesClassV1Beta1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeVolumeAttributesClassV1Beta1Props", + reflect.TypeOf((*KubeVolumeAttributesClassV1Beta1Props)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LabelSelector", + reflect.TypeOf((*LabelSelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LabelSelectorAttributes", + reflect.TypeOf((*LabelSelectorAttributes)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LabelSelectorRequirement", + reflect.TypeOf((*LabelSelectorRequirement)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LeaseCandidateSpecV1Alpha2", + reflect.TypeOf((*LeaseCandidateSpecV1Alpha2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LeaseSpec", + reflect.TypeOf((*LeaseSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Lifecycle", + reflect.TypeOf((*Lifecycle)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LifecycleHandler", + reflect.TypeOf((*LifecycleHandler)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LimitRangeItem", + reflect.TypeOf((*LimitRangeItem)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LimitRangeSpec", + reflect.TypeOf((*LimitRangeSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LimitResponse", + reflect.TypeOf((*LimitResponse)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LimitedPriorityLevelConfiguration", + reflect.TypeOf((*LimitedPriorityLevelConfiguration)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ListMeta", + reflect.TypeOf((*ListMeta)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LocalObjectReference", + reflect.TypeOf((*LocalObjectReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.LocalVolumeSource", + reflect.TypeOf((*LocalVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ManagedFieldsEntry", + reflect.TypeOf((*ManagedFieldsEntry)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MatchCondition", + reflect.TypeOf((*MatchCondition)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MatchConditionV1Alpha1", + reflect.TypeOf((*MatchConditionV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MatchConditionV1Beta1", + reflect.TypeOf((*MatchConditionV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MatchResources", + reflect.TypeOf((*MatchResources)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MatchResourcesV1Alpha1", + reflect.TypeOf((*MatchResourcesV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MatchResourcesV1Beta1", + reflect.TypeOf((*MatchResourcesV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MetricIdentifierV2", + reflect.TypeOf((*MetricIdentifierV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MetricSpecV2", + reflect.TypeOf((*MetricSpecV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MetricTargetV2", + reflect.TypeOf((*MetricTargetV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MutatingAdmissionPolicyBindingSpecV1Alpha1", + reflect.TypeOf((*MutatingAdmissionPolicyBindingSpecV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MutatingAdmissionPolicySpecV1Alpha1", + reflect.TypeOf((*MutatingAdmissionPolicySpecV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MutatingWebhook", + reflect.TypeOf((*MutatingWebhook)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.MutationV1Alpha1", + reflect.TypeOf((*MutationV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NamedRuleWithOperations", + reflect.TypeOf((*NamedRuleWithOperations)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NamedRuleWithOperationsV1Alpha1", + reflect.TypeOf((*NamedRuleWithOperationsV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NamedRuleWithOperationsV1Beta1", + reflect.TypeOf((*NamedRuleWithOperationsV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NamespaceSpec", + reflect.TypeOf((*NamespaceSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NetworkPolicyEgressRule", + reflect.TypeOf((*NetworkPolicyEgressRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NetworkPolicyIngressRule", + reflect.TypeOf((*NetworkPolicyIngressRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NetworkPolicyPeer", + reflect.TypeOf((*NetworkPolicyPeer)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NetworkPolicyPort", + reflect.TypeOf((*NetworkPolicyPort)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NetworkPolicySpec", + reflect.TypeOf((*NetworkPolicySpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NfsVolumeSource", + reflect.TypeOf((*NfsVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NodeAffinity", + reflect.TypeOf((*NodeAffinity)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NodeConfigSource", + reflect.TypeOf((*NodeConfigSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NodeSelector", + reflect.TypeOf((*NodeSelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NodeSelectorRequirement", + reflect.TypeOf((*NodeSelectorRequirement)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NodeSelectorTerm", + reflect.TypeOf((*NodeSelectorTerm)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NodeSpec", + reflect.TypeOf((*NodeSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NonResourceAttributes", + reflect.TypeOf((*NonResourceAttributes)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.NonResourcePolicyRule", + reflect.TypeOf((*NonResourcePolicyRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ObjectFieldSelector", + reflect.TypeOf((*ObjectFieldSelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ObjectMeta", + reflect.TypeOf((*ObjectMeta)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ObjectMetricSourceV2", + reflect.TypeOf((*ObjectMetricSourceV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ObjectReference", + reflect.TypeOf((*ObjectReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.OpaqueDeviceConfigurationV1Alpha3", + reflect.TypeOf((*OpaqueDeviceConfigurationV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.OpaqueDeviceConfigurationV1Beta1", + reflect.TypeOf((*OpaqueDeviceConfigurationV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Overhead", + reflect.TypeOf((*Overhead)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.OwnerReference", + reflect.TypeOf((*OwnerReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParamKind", + reflect.TypeOf((*ParamKind)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParamKindV1Alpha1", + reflect.TypeOf((*ParamKindV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParamKindV1Beta1", + reflect.TypeOf((*ParamKindV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParamRef", + reflect.TypeOf((*ParamRef)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParamRefV1Alpha1", + reflect.TypeOf((*ParamRefV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParamRefV1Beta1", + reflect.TypeOf((*ParamRefV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ParentReferenceV1Beta1", + reflect.TypeOf((*ParentReferenceV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PersistentVolumeClaimSpec", + reflect.TypeOf((*PersistentVolumeClaimSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PersistentVolumeClaimTemplate", + reflect.TypeOf((*PersistentVolumeClaimTemplate)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PersistentVolumeClaimVolumeSource", + reflect.TypeOf((*PersistentVolumeClaimVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PersistentVolumeSpec", + reflect.TypeOf((*PersistentVolumeSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PhotonPersistentDiskVolumeSource", + reflect.TypeOf((*PhotonPersistentDiskVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodAffinity", + reflect.TypeOf((*PodAffinity)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodAffinityTerm", + reflect.TypeOf((*PodAffinityTerm)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodAntiAffinity", + reflect.TypeOf((*PodAntiAffinity)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodDisruptionBudgetSpec", + reflect.TypeOf((*PodDisruptionBudgetSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodDnsConfig", + reflect.TypeOf((*PodDnsConfig)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodDnsConfigOption", + reflect.TypeOf((*PodDnsConfigOption)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodFailurePolicy", + reflect.TypeOf((*PodFailurePolicy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodFailurePolicyOnExitCodesRequirement", + reflect.TypeOf((*PodFailurePolicyOnExitCodesRequirement)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodFailurePolicyOnPodConditionsPattern", + reflect.TypeOf((*PodFailurePolicyOnPodConditionsPattern)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodFailurePolicyRule", + reflect.TypeOf((*PodFailurePolicyRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodOs", + reflect.TypeOf((*PodOs)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodReadinessGate", + reflect.TypeOf((*PodReadinessGate)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodResourceClaim", + reflect.TypeOf((*PodResourceClaim)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodSchedulingGate", + reflect.TypeOf((*PodSchedulingGate)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodSecurityContext", + reflect.TypeOf((*PodSecurityContext)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodSpec", + reflect.TypeOf((*PodSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodTemplateSpec", + reflect.TypeOf((*PodTemplateSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PodsMetricSourceV2", + reflect.TypeOf((*PodsMetricSourceV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PolicyRule", + reflect.TypeOf((*PolicyRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PolicyRulesWithSubjects", + reflect.TypeOf((*PolicyRulesWithSubjects)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PortworxVolumeSource", + reflect.TypeOf((*PortworxVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Preconditions", + reflect.TypeOf((*Preconditions)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PreferredSchedulingTerm", + reflect.TypeOf((*PreferredSchedulingTerm)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PriorityLevelConfigurationReference", + reflect.TypeOf((*PriorityLevelConfigurationReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.PriorityLevelConfigurationSpec", + reflect.TypeOf((*PriorityLevelConfigurationSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Probe", + reflect.TypeOf((*Probe)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ProjectedVolumeSource", + reflect.TypeOf((*ProjectedVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.Quantity", + reflect.TypeOf((*Quantity)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberProperty{JsiiProperty: "value", GoGetter: "Value"}, + }, + func() interface{} { + return &jsiiProxy_Quantity{} + }, + ) + _jsii_.RegisterStruct( + "k8s.QueuingConfiguration", + reflect.TypeOf((*QueuingConfiguration)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.QuobyteVolumeSource", + reflect.TypeOf((*QuobyteVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RbdPersistentVolumeSource", + reflect.TypeOf((*RbdPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RbdVolumeSource", + reflect.TypeOf((*RbdVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ReplicaSetSpec", + reflect.TypeOf((*ReplicaSetSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ReplicationControllerSpec", + reflect.TypeOf((*ReplicationControllerSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceAttributes", + reflect.TypeOf((*ResourceAttributes)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceClaim", + reflect.TypeOf((*ResourceClaim)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceClaimSpecV1Alpha3", + reflect.TypeOf((*ResourceClaimSpecV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceClaimSpecV1Beta1", + reflect.TypeOf((*ResourceClaimSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceClaimTemplateSpecV1Alpha3", + reflect.TypeOf((*ResourceClaimTemplateSpecV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceClaimTemplateSpecV1Beta1", + reflect.TypeOf((*ResourceClaimTemplateSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceFieldSelector", + reflect.TypeOf((*ResourceFieldSelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceMetricSourceV2", + reflect.TypeOf((*ResourceMetricSourceV2)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourcePolicyRule", + reflect.TypeOf((*ResourcePolicyRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourcePoolV1Alpha3", + reflect.TypeOf((*ResourcePoolV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourcePoolV1Beta1", + reflect.TypeOf((*ResourcePoolV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceQuotaSpec", + reflect.TypeOf((*ResourceQuotaSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceRequirements", + reflect.TypeOf((*ResourceRequirements)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceSliceSpecV1Alpha3", + reflect.TypeOf((*ResourceSliceSpecV1Alpha3)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ResourceSliceSpecV1Beta1", + reflect.TypeOf((*ResourceSliceSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RoleRef", + reflect.TypeOf((*RoleRef)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RollingUpdateDaemonSet", + reflect.TypeOf((*RollingUpdateDaemonSet)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RollingUpdateDeployment", + reflect.TypeOf((*RollingUpdateDeployment)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RollingUpdateStatefulSetStrategy", + reflect.TypeOf((*RollingUpdateStatefulSetStrategy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.RuleWithOperations", + reflect.TypeOf((*RuleWithOperations)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ScaleIoPersistentVolumeSource", + reflect.TypeOf((*ScaleIoPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ScaleIoVolumeSource", + reflect.TypeOf((*ScaleIoVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ScaleSpec", + reflect.TypeOf((*ScaleSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Scheduling", + reflect.TypeOf((*Scheduling)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ScopeSelector", + reflect.TypeOf((*ScopeSelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ScopedResourceSelectorRequirement", + reflect.TypeOf((*ScopedResourceSelectorRequirement)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SeLinuxOptions", + reflect.TypeOf((*SeLinuxOptions)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SeccompProfile", + reflect.TypeOf((*SeccompProfile)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SecretEnvSource", + reflect.TypeOf((*SecretEnvSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SecretKeySelector", + reflect.TypeOf((*SecretKeySelector)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SecretProjection", + reflect.TypeOf((*SecretProjection)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SecretReference", + reflect.TypeOf((*SecretReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SecretVolumeSource", + reflect.TypeOf((*SecretVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SecurityContext", + reflect.TypeOf((*SecurityContext)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SelectableField", + reflect.TypeOf((*SelectableField)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SelfSubjectAccessReviewSpec", + reflect.TypeOf((*SelfSubjectAccessReviewSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SelfSubjectRulesReviewSpec", + reflect.TypeOf((*SelfSubjectRulesReviewSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ServiceAccountTokenProjection", + reflect.TypeOf((*ServiceAccountTokenProjection)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ServiceBackendPort", + reflect.TypeOf((*ServiceBackendPort)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ServiceCidrSpecV1Beta1", + reflect.TypeOf((*ServiceCidrSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ServicePort", + reflect.TypeOf((*ServicePort)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ServiceReference", + reflect.TypeOf((*ServiceReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ServiceSpec", + reflect.TypeOf((*ServiceSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SessionAffinityConfig", + reflect.TypeOf((*SessionAffinityConfig)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SleepAction", + reflect.TypeOf((*SleepAction)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StatefulSetOrdinals", + reflect.TypeOf((*StatefulSetOrdinals)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StatefulSetPersistentVolumeClaimRetentionPolicy", + reflect.TypeOf((*StatefulSetPersistentVolumeClaimRetentionPolicy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StatefulSetSpec", + reflect.TypeOf((*StatefulSetSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StatefulSetUpdateStrategy", + reflect.TypeOf((*StatefulSetUpdateStrategy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StatusCause", + reflect.TypeOf((*StatusCause)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StatusDetails", + reflect.TypeOf((*StatusDetails)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StorageOsPersistentVolumeSource", + reflect.TypeOf((*StorageOsPersistentVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StorageOsVolumeSource", + reflect.TypeOf((*StorageOsVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.StorageVersionMigrationSpecV1Alpha1", + reflect.TypeOf((*StorageVersionMigrationSpecV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Subject", + reflect.TypeOf((*Subject)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SubjectAccessReviewSpec", + reflect.TypeOf((*SubjectAccessReviewSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SuccessPolicy", + reflect.TypeOf((*SuccessPolicy)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.SuccessPolicyRule", + reflect.TypeOf((*SuccessPolicyRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Sysctl", + reflect.TypeOf((*Sysctl)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Taint", + reflect.TypeOf((*Taint)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TcpSocketAction", + reflect.TypeOf((*TcpSocketAction)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TokenRequest", + reflect.TypeOf((*TokenRequest)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TokenRequestSpec", + reflect.TypeOf((*TokenRequestSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TokenReviewSpec", + reflect.TypeOf((*TokenReviewSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Toleration", + reflect.TypeOf((*Toleration)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TopologySelectorLabelRequirement", + reflect.TypeOf((*TopologySelectorLabelRequirement)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TopologySelectorTerm", + reflect.TypeOf((*TopologySelectorTerm)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TopologySpreadConstraint", + reflect.TypeOf((*TopologySpreadConstraint)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TypedLocalObjectReference", + reflect.TypeOf((*TypedLocalObjectReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.TypedObjectReference", + reflect.TypeOf((*TypedObjectReference)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidatingAdmissionPolicyBindingSpec", + reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidatingAdmissionPolicyBindingSpecV1Beta1", + reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidatingAdmissionPolicySpec", + reflect.TypeOf((*ValidatingAdmissionPolicySpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidatingAdmissionPolicySpecV1Beta1", + reflect.TypeOf((*ValidatingAdmissionPolicySpecV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidatingWebhook", + reflect.TypeOf((*ValidatingWebhook)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Validation", + reflect.TypeOf((*Validation)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidationRule", + reflect.TypeOf((*ValidationRule)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.ValidationV1Beta1", + reflect.TypeOf((*ValidationV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Variable", + reflect.TypeOf((*Variable)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VariableV1Alpha1", + reflect.TypeOf((*VariableV1Alpha1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VariableV1Beta1", + reflect.TypeOf((*VariableV1Beta1)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.Volume", + reflect.TypeOf((*Volume)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeAttachmentSource", + reflect.TypeOf((*VolumeAttachmentSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeAttachmentSpec", + reflect.TypeOf((*VolumeAttachmentSpec)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeDevice", + reflect.TypeOf((*VolumeDevice)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeMount", + reflect.TypeOf((*VolumeMount)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeNodeAffinity", + reflect.TypeOf((*VolumeNodeAffinity)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeNodeResources", + reflect.TypeOf((*VolumeNodeResources)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeProjection", + reflect.TypeOf((*VolumeProjection)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VolumeResourceRequirements", + reflect.TypeOf((*VolumeResourceRequirements)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.VsphereVirtualDiskVolumeSource", + reflect.TypeOf((*VsphereVirtualDiskVolumeSource)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.WebhookClientConfig", + reflect.TypeOf((*WebhookClientConfig)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.WebhookConversion", + reflect.TypeOf((*WebhookConversion)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.WeightedPodAffinityTerm", + reflect.TypeOf((*WeightedPodAffinityTerm)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.WindowsSecurityContextOptions", + reflect.TypeOf((*WindowsSecurityContextOptions)(nil)).Elem(), + ) +} diff --git a/pods/imports/k8s/version b/pods/imports/k8s/version new file mode 100644 index 000000000..77d6f4ca2 --- /dev/null +++ b/pods/imports/k8s/version @@ -0,0 +1 @@ +0.0.0 diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitor.go b/pods/imports/monitoringcoreoscom/ServiceMonitor.go new file mode 100644 index 000000000..e8618d3b5 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitor.go @@ -0,0 +1,317 @@ +package monitoringcoreoscom + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/monitoringcoreoscom/jsii" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/smartcontractkit/pods/imports/monitoringcoreoscom/internal" +) + +// ServiceMonitor defines monitoring for a set of services. +type ServiceMonitor interface { + cdk8s.ApiObject + // The group portion of the API version (e.g. `authorization.k8s.io`). + ApiGroup() *string + // The object's API version (e.g. `authorization.k8s.io/v1`). + ApiVersion() *string + // The chart in which this object is defined. + Chart() cdk8s.Chart + // The object kind. + Kind() *string + // Metadata associated with this API object. + Metadata() cdk8s.ApiObjectMetadataDefinition + // The name of the API object. + // + // If a name is specified in `metadata.name` this will be the name returned. + // Otherwise, a name will be generated by calling + // `Chart.of(this).generatedObjectName(this)`, which by default uses the + // construct path to generate a DNS-compatible name for the resource. + Name() *string + // The tree node. + Node() constructs.Node + // Create a dependency between this ApiObject and other constructs. + // + // These can be other ApiObjects, Charts, or custom. + AddDependency(dependencies ...constructs.IConstruct) + // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. + // + // Example: + // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); + // + AddJsonPatch(ops ...cdk8s.JsonPatch) + // Renders the object to Kubernetes JSON. + ToJson() interface{} + // Returns a string representation of this construct. + ToString() *string +} + +// The jsii proxy struct for ServiceMonitor +type jsiiProxy_ServiceMonitor struct { + internal.Type__cdk8sApiObject +} + +func (j *jsiiProxy_ServiceMonitor) ApiGroup() *string { + var returns *string + _jsii_.Get( + j, + "apiGroup", + &returns, + ) + return returns +} + +func (j *jsiiProxy_ServiceMonitor) ApiVersion() *string { + var returns *string + _jsii_.Get( + j, + "apiVersion", + &returns, + ) + return returns +} + +func (j *jsiiProxy_ServiceMonitor) Chart() cdk8s.Chart { + var returns cdk8s.Chart + _jsii_.Get( + j, + "chart", + &returns, + ) + return returns +} + +func (j *jsiiProxy_ServiceMonitor) Kind() *string { + var returns *string + _jsii_.Get( + j, + "kind", + &returns, + ) + return returns +} + +func (j *jsiiProxy_ServiceMonitor) Metadata() cdk8s.ApiObjectMetadataDefinition { + var returns cdk8s.ApiObjectMetadataDefinition + _jsii_.Get( + j, + "metadata", + &returns, + ) + return returns +} + +func (j *jsiiProxy_ServiceMonitor) Name() *string { + var returns *string + _jsii_.Get( + j, + "name", + &returns, + ) + return returns +} + +func (j *jsiiProxy_ServiceMonitor) Node() constructs.Node { + var returns constructs.Node + _jsii_.Get( + j, + "node", + &returns, + ) + return returns +} + + +// Defines a "ServiceMonitor" API object. +func NewServiceMonitor(scope constructs.Construct, id *string, props *ServiceMonitorProps) ServiceMonitor { + _init_.Initialize() + + if err := validateNewServiceMonitorParameters(scope, id, props); err != nil { + panic(err) + } + j := jsiiProxy_ServiceMonitor{} + + _jsii_.Create( + "monitoringcoreoscom.ServiceMonitor", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Defines a "ServiceMonitor" API object. +func NewServiceMonitor_Override(s ServiceMonitor, scope constructs.Construct, id *string, props *ServiceMonitorProps) { + _init_.Initialize() + + _jsii_.Create( + "monitoringcoreoscom.ServiceMonitor", + []interface{}{scope, id, props}, + s, + ) +} + +// Return whether the given object is an `ApiObject`. +// +// We do attribute detection since we can't reliably use 'instanceof'. +func ServiceMonitor_IsApiObject(o interface{}) *bool { + _init_.Initialize() + + if err := validateServiceMonitor_IsApiObjectParameters(o); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "monitoringcoreoscom.ServiceMonitor", + "isApiObject", + []interface{}{o}, + &returns, + ) + + return returns +} + +// Checks if `x` is a construct. +// +// Use this method instead of `instanceof` to properly detect `Construct` +// instances, even when the construct library is symlinked. +// +// Explanation: in JavaScript, multiple copies of the `constructs` library on +// disk are seen as independent, completely different libraries. As a +// consequence, the class `Construct` in each copy of the `constructs` library +// is seen as a different class, and an instance of one class will not test as +// `instanceof` the other class. `npm install` will not create installations +// like this, but users may manually symlink construct libraries together or +// use a monorepo tool: in those cases, multiple copies of the `constructs` +// library can be accidentally installed, and `instanceof` will behave +// unpredictably. It is safest to avoid using `instanceof`, and using +// this type-testing method instead. +// +// Returns: true if `x` is an object created from a class which extends `Construct`. +func ServiceMonitor_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + if err := validateServiceMonitor_IsConstructParameters(x); err != nil { + panic(err) + } + var returns *bool + + _jsii_.StaticInvoke( + "monitoringcoreoscom.ServiceMonitor", + "isConstruct", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Renders a Kubernetes manifest for "ServiceMonitor". +// +// This can be used to inline resource manifests inside other objects (e.g. as templates). +func ServiceMonitor_Manifest(props *ServiceMonitorProps) interface{} { + _init_.Initialize() + + if err := validateServiceMonitor_ManifestParameters(props); err != nil { + panic(err) + } + var returns interface{} + + _jsii_.StaticInvoke( + "monitoringcoreoscom.ServiceMonitor", + "manifest", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Returns the `ApiObject` named `Resource` which is a child of the given construct. +// +// If `c` is an `ApiObject`, it is returned directly. Throws an +// exception if the construct does not have a child named `Default` _or_ if +// this child is not an `ApiObject`. +func ServiceMonitor_Of(c constructs.IConstruct) cdk8s.ApiObject { + _init_.Initialize() + + if err := validateServiceMonitor_OfParameters(c); err != nil { + panic(err) + } + var returns cdk8s.ApiObject + + _jsii_.StaticInvoke( + "monitoringcoreoscom.ServiceMonitor", + "of", + []interface{}{c}, + &returns, + ) + + return returns +} + +func ServiceMonitor_GVK() *cdk8s.GroupVersionKind { + _init_.Initialize() + var returns *cdk8s.GroupVersionKind + _jsii_.StaticGet( + "monitoringcoreoscom.ServiceMonitor", + "GVK", + &returns, + ) + return returns +} + +func (s *jsiiProxy_ServiceMonitor) AddDependency(dependencies ...constructs.IConstruct) { + args := []interface{}{} + for _, a := range dependencies { + args = append(args, a) + } + + _jsii_.InvokeVoid( + s, + "addDependency", + args, + ) +} + +func (s *jsiiProxy_ServiceMonitor) AddJsonPatch(ops ...cdk8s.JsonPatch) { + args := []interface{}{} + for _, a := range ops { + args = append(args, a) + } + + _jsii_.InvokeVoid( + s, + "addJsonPatch", + args, + ) +} + +func (s *jsiiProxy_ServiceMonitor) ToJson() interface{} { + var returns interface{} + + _jsii_.Invoke( + s, + "toJson", + nil, // no parameters + &returns, + ) + + return returns +} + +func (s *jsiiProxy_ServiceMonitor) ToString() *string { + var returns *string + + _jsii_.Invoke( + s, + "toString", + nil, // no parameters + &returns, + ) + + return returns +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorProps.go b/pods/imports/monitoringcoreoscom/ServiceMonitorProps.go new file mode 100644 index 000000000..f8bd112c2 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorProps.go @@ -0,0 +1,13 @@ +package monitoringcoreoscom + +import ( + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" +) + +// ServiceMonitor defines monitoring for a set of services. +type ServiceMonitorProps struct { + // Specification of desired Service selection for target discovery by Prometheus. + Spec *ServiceMonitorSpec `field:"required" json:"spec" yaml:"spec"` + Metadata *cdk8s.ApiObjectMetadata `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go new file mode 100644 index 000000000..9f258a8d3 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go @@ -0,0 +1,47 @@ +package monitoringcoreoscom + + +// Specification of desired Service selection for target discovery by Prometheus. +type ServiceMonitorSpec struct { + // Label selector to select the Kubernetes `Endpoints` objects. + Selector *ServiceMonitorSpecSelector `field:"required" json:"selector" yaml:"selector"` + // `attachMetadata` defines additional metadata which is added to the discovered targets. + // + // It requires Prometheus >= v2.37.0. + AttachMetadata *ServiceMonitorSpecAttachMetadata `field:"optional" json:"attachMetadata" yaml:"attachMetadata"` + // List of endpoints part of this ServiceMonitor. + Endpoints *[]*ServiceMonitorSpecEndpoints `field:"optional" json:"endpoints" yaml:"endpoints"` + // `jobLabel` selects the label from the associated Kubernetes `Service` object which will be used as the `job` label for all metrics. + // + // For example if `jobLabel` is set to `foo` and the Kubernetes `Service` object is labeled with `foo: bar`, then Prometheus adds the `job="bar"` label to all ingested metrics. + // If the value of this field is empty or if the label doesn't exist for the given Service, the `job` label of the metrics defaults to the name of the associated Kubernetes `Service`. + JobLabel *string `field:"optional" json:"jobLabel" yaml:"jobLabel"` + // Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. + // + // 0 means no limit. + // It requires Prometheus >= v2.47.0. + KeepDroppedTargets *float64 `field:"optional" json:"keepDroppedTargets" yaml:"keepDroppedTargets"` + // Per-scrape limit on number of labels that will be accepted for a sample. + // + // It requires Prometheus >= v2.27.0. + LabelLimit *float64 `field:"optional" json:"labelLimit" yaml:"labelLimit"` + // Per-scrape limit on length of labels name that will be accepted for a sample. + // + // It requires Prometheus >= v2.27.0. + LabelNameLengthLimit *float64 `field:"optional" json:"labelNameLengthLimit" yaml:"labelNameLengthLimit"` + // Per-scrape limit on length of labels value that will be accepted for a sample. + // + // It requires Prometheus >= v2.27.0. + LabelValueLengthLimit *float64 `field:"optional" json:"labelValueLengthLimit" yaml:"labelValueLengthLimit"` + // Selector to select which namespaces the Kubernetes `Endpoints` objects are discovered from. + NamespaceSelector *ServiceMonitorSpecNamespaceSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` + // `podTargetLabels` defines the labels which are transferred from the associated Kubernetes `Pod` object onto the ingested metrics. + PodTargetLabels *[]*string `field:"optional" json:"podTargetLabels" yaml:"podTargetLabels"` + // `sampleLimit` defines a per-scrape limit on the number of scraped samples that will be accepted. + SampleLimit *float64 `field:"optional" json:"sampleLimit" yaml:"sampleLimit"` + // `targetLabels` defines the labels which are transferred from the associated Kubernetes `Service` object onto the ingested metrics. + TargetLabels *[]*string `field:"optional" json:"targetLabels" yaml:"targetLabels"` + // `targetLimit` defines a limit on the number of scraped targets that will be accepted. + TargetLimit *float64 `field:"optional" json:"targetLimit" yaml:"targetLimit"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go new file mode 100644 index 000000000..3a8c198d9 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go @@ -0,0 +1,11 @@ +package monitoringcoreoscom + + +// `attachMetadata` defines additional metadata which is added to the discovered targets. +// +// It requires Prometheus >= v2.37.0. +type ServiceMonitorSpecAttachMetadata struct { + // When set to true, Prometheus must have the `get` permission on the `Nodes` objects. + Node *bool `field:"optional" json:"node" yaml:"node"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go new file mode 100644 index 000000000..00871e783 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go @@ -0,0 +1,83 @@ +package monitoringcoreoscom + + +// Endpoint defines an endpoint serving Prometheus metrics to be scraped by Prometheus. +type ServiceMonitorSpecEndpoints struct { + // `authorization` configures the Authorization header credentials to use when scraping the target. + // + // Cannot be set at the same time as `basicAuth`, or `oauth2`. + Authorization *ServiceMonitorSpecEndpointsAuthorization `field:"optional" json:"authorization" yaml:"authorization"` + // `basicAuth` configures the Basic Authentication credentials to use when scraping the target. + // + // Cannot be set at the same time as `authorization`, or `oauth2`. + BasicAuth *ServiceMonitorSpecEndpointsBasicAuth `field:"optional" json:"basicAuth" yaml:"basicAuth"` + // File to read bearer token for scraping the target. + // + // Deprecated: use `authorization` instead. + BearerTokenFile *string `field:"optional" json:"bearerTokenFile" yaml:"bearerTokenFile"` + // `bearerTokenSecret` specifies a key of a Secret containing the bearer token for scraping targets. + // + // The secret needs to be in the same namespace as the ServiceMonitor object and readable by the Prometheus Operator. + // Deprecated: use `authorization` instead. + BearerTokenSecret *ServiceMonitorSpecEndpointsBearerTokenSecret `field:"optional" json:"bearerTokenSecret" yaml:"bearerTokenSecret"` + // `enableHttp2` can be used to disable HTTP2 when scraping the target. + EnableHttp2 *bool `field:"optional" json:"enableHttp2" yaml:"enableHttp2"` + // When true, the pods which are not running (e.g. either in Failed or Succeeded state) are dropped during the target discovery. If unset, the filtering is enabled. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase. + FilterRunning *bool `field:"optional" json:"filterRunning" yaml:"filterRunning"` + // `followRedirects` defines whether the scrape requests should follow HTTP 3xx redirects. + FollowRedirects *bool `field:"optional" json:"followRedirects" yaml:"followRedirects"` + // When true, `honorLabels` preserves the metric's labels when they collide with the target's labels. + HonorLabels *bool `field:"optional" json:"honorLabels" yaml:"honorLabels"` + // `honorTimestamps` controls whether Prometheus preserves the timestamps when exposed by the target. + HonorTimestamps *bool `field:"optional" json:"honorTimestamps" yaml:"honorTimestamps"` + // Interval at which Prometheus scrapes the metrics from the target. + // + // If empty, Prometheus uses the global scrape interval. + Interval *string `field:"optional" json:"interval" yaml:"interval"` + // `metricRelabelings` configures the relabeling rules to apply to the samples before ingestion. + MetricRelabelings *[]*ServiceMonitorSpecEndpointsMetricRelabelings `field:"optional" json:"metricRelabelings" yaml:"metricRelabelings"` + // `oauth2` configures the OAuth2 settings to use when scraping the target. + // + // It requires Prometheus >= 2.27.0. + // Cannot be set at the same time as `authorization`, or `basicAuth`. + Oauth2 *ServiceMonitorSpecEndpointsOauth2 `field:"optional" json:"oauth2" yaml:"oauth2"` + // params define optional HTTP URL parameters. + Params *map[string]*[]*string `field:"optional" json:"params" yaml:"params"` + // HTTP path from which to scrape for metrics. + // + // If empty, Prometheus uses the default value (e.g. `/metrics`). + Path *string `field:"optional" json:"path" yaml:"path"` + // Name of the Service port which this endpoint refers to. + // + // It takes precedence over `targetPort`. + Port *string `field:"optional" json:"port" yaml:"port"` + // `proxyURL` configures the HTTP Proxy URL (e.g. "http://proxyserver:2195") to go through when scraping the target. + ProxyUrl *string `field:"optional" json:"proxyUrl" yaml:"proxyUrl"` + // `relabelings` configures the relabeling rules to apply the target's metadata labels. + // + // The Operator automatically adds relabelings for a few standard Kubernetes fields. + // The original scrape job's name is available via the `__tmp_prometheus_job_name` label. + // More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + Relabelings *[]*ServiceMonitorSpecEndpointsRelabelings `field:"optional" json:"relabelings" yaml:"relabelings"` + // HTTP scheme to use for scraping. + // + // `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. + // If empty, Prometheus uses the default value `http`. + Scheme ServiceMonitorSpecEndpointsScheme `field:"optional" json:"scheme" yaml:"scheme"` + // Timeout after which Prometheus considers the scrape to be failed. + // + // If empty, Prometheus uses the global scrape timeout unless it is less than the target's scrape interval value in which the latter is used. + ScrapeTimeout *string `field:"optional" json:"scrapeTimeout" yaml:"scrapeTimeout"` + // Name or number of the target port of the `Pod` object behind the Service, the port must be specified with container port property. + // + // Deprecated: use `port` instead. + TargetPort ServiceMonitorSpecEndpointsTargetPort `field:"optional" json:"targetPort" yaml:"targetPort"` + // TLS configuration to use when scraping the target. + TlsConfig *ServiceMonitorSpecEndpointsTlsConfig `field:"optional" json:"tlsConfig" yaml:"tlsConfig"` + // `trackTimestampsStaleness` defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. + // + // Has no effect if `honorTimestamps` is false. + // It requires Prometheus >= v2.48.0. + TrackTimestampsStaleness *bool `field:"optional" json:"trackTimestampsStaleness" yaml:"trackTimestampsStaleness"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go new file mode 100644 index 000000000..1b792fee9 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// `authorization` configures the Authorization header credentials to use when scraping the target. +// +// Cannot be set at the same time as `basicAuth`, or `oauth2`. +type ServiceMonitorSpecEndpointsAuthorization struct { + // Selects a key of a Secret in the namespace that contains the credentials for authentication. + Credentials *ServiceMonitorSpecEndpointsAuthorizationCredentials `field:"optional" json:"credentials" yaml:"credentials"` + // Defines the authentication type. + // + // The value is case-insensitive. + // "Basic" is not a supported value. + // Default: "Bearer". + Type *string `field:"optional" json:"type" yaml:"type"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go new file mode 100644 index 000000000..f38c06b89 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// Selects a key of a Secret in the namespace that contains the credentials for authentication. +type ServiceMonitorSpecEndpointsAuthorizationCredentials struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go new file mode 100644 index 000000000..ca708ec57 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go @@ -0,0 +1,13 @@ +package monitoringcoreoscom + + +// `basicAuth` configures the Basic Authentication credentials to use when scraping the target. +// +// Cannot be set at the same time as `authorization`, or `oauth2`. +type ServiceMonitorSpecEndpointsBasicAuth struct { + // `password` specifies a key of a Secret containing the password for authentication. + Password *ServiceMonitorSpecEndpointsBasicAuthPassword `field:"optional" json:"password" yaml:"password"` + // `username` specifies a key of a Secret containing the username for authentication. + Username *ServiceMonitorSpecEndpointsBasicAuthUsername `field:"optional" json:"username" yaml:"username"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go new file mode 100644 index 000000000..216e35f22 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// `password` specifies a key of a Secret containing the password for authentication. +type ServiceMonitorSpecEndpointsBasicAuthPassword struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go new file mode 100644 index 000000000..26ebfe26c --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// `username` specifies a key of a Secret containing the username for authentication. +type ServiceMonitorSpecEndpointsBasicAuthUsername struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go new file mode 100644 index 000000000..63f3600bf --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go @@ -0,0 +1,20 @@ +package monitoringcoreoscom + + +// `bearerTokenSecret` specifies a key of a Secret containing the bearer token for scraping targets. +// +// The secret needs to be in the same namespace as the ServiceMonitor object and readable by the Prometheus Operator. +// Deprecated: use `authorization` instead. +type ServiceMonitorSpecEndpointsBearerTokenSecret struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go new file mode 100644 index 000000000..0f96f733d --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go @@ -0,0 +1,35 @@ +package monitoringcoreoscom + + +// RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. +// +// More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config +type ServiceMonitorSpecEndpointsMetricRelabelings struct { + // Action to perform based on the regex matching. + // + // `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. + // Default: "Replace". + Action ServiceMonitorSpecEndpointsMetricRelabelingsAction `field:"optional" json:"action" yaml:"action"` + // Modulus to take of the hash of the source label values. + // + // Only applicable when the action is `HashMod`. + Modulus *float64 `field:"optional" json:"modulus" yaml:"modulus"` + // Regular expression against which the extracted value is matched. + Regex *string `field:"optional" json:"regex" yaml:"regex"` + // Replacement value against which a Replace action is performed if the regular expression matches. + // + // Regex capture groups are available. + Replacement *string `field:"optional" json:"replacement" yaml:"replacement"` + // Separator is the string between concatenated SourceLabels. + Separator *string `field:"optional" json:"separator" yaml:"separator"` + // The source labels select values from existing labels. + // + // Their content is concatenated using the configured Separator and matched against the configured regular expression. + SourceLabels *[]*string `field:"optional" json:"sourceLabels" yaml:"sourceLabels"` + // Label to which the resulting string is written in a replacement. + // + // It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. + // Regex capture groups are available. + TargetLabel *string `field:"optional" json:"targetLabel" yaml:"targetLabel"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go new file mode 100644 index 000000000..6e0fada0d --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go @@ -0,0 +1,34 @@ +package monitoringcoreoscom + + +// Action to perform based on the regex matching. +// +// `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. +// Default: "Replace". +type ServiceMonitorSpecEndpointsMetricRelabelingsAction string + +const ( + // replace. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_REPLACE ServiceMonitorSpecEndpointsMetricRelabelingsAction = "REPLACE" + // keep. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_KEEP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "KEEP" + // drop. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_DROP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "DROP" + // hashmod. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_HASHMOD ServiceMonitorSpecEndpointsMetricRelabelingsAction = "HASHMOD" + // labelmap. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_LABELMAP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LABELMAP" + // labeldrop. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_LABELDROP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LABELDROP" + // labelkeep. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_LABELKEEP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LABELKEEP" + // lowercase. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_LOWERCASE ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LOWERCASE" + // uppercase. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_UPPERCASE ServiceMonitorSpecEndpointsMetricRelabelingsAction = "UPPERCASE" + // keepequal. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_KEEPEQUAL ServiceMonitorSpecEndpointsMetricRelabelingsAction = "KEEPEQUAL" + // dropequal. + ServiceMonitorSpecEndpointsMetricRelabelingsAction_DROPEQUAL ServiceMonitorSpecEndpointsMetricRelabelingsAction = "DROPEQUAL" +) + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go new file mode 100644 index 000000000..19c78d54a --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go @@ -0,0 +1,20 @@ +package monitoringcoreoscom + + +// `oauth2` configures the OAuth2 settings to use when scraping the target. +// +// It requires Prometheus >= 2.27.0. +// Cannot be set at the same time as `authorization`, or `basicAuth`. +type ServiceMonitorSpecEndpointsOauth2 struct { + // `clientId` specifies a key of a Secret or ConfigMap containing the OAuth2 client's ID. + ClientId *ServiceMonitorSpecEndpointsOauth2ClientId `field:"required" json:"clientId" yaml:"clientId"` + // `clientSecret` specifies a key of a Secret containing the OAuth2 client's secret. + ClientSecret *ServiceMonitorSpecEndpointsOauth2ClientSecret `field:"required" json:"clientSecret" yaml:"clientSecret"` + // `tokenURL` configures the URL to fetch the token from. + TokenUrl *string `field:"required" json:"tokenUrl" yaml:"tokenUrl"` + // `endpointParams` configures the HTTP parameters to append to the token URL. + EndpointParams *map[string]*string `field:"optional" json:"endpointParams" yaml:"endpointParams"` + // `scopes` defines the OAuth2 scopes used for the token request. + Scopes *[]*string `field:"optional" json:"scopes" yaml:"scopes"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go new file mode 100644 index 000000000..00b0c41a5 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go @@ -0,0 +1,11 @@ +package monitoringcoreoscom + + +// `clientId` specifies a key of a Secret or ConfigMap containing the OAuth2 client's ID. +type ServiceMonitorSpecEndpointsOauth2ClientId struct { + // ConfigMap containing data to use for the targets. + ConfigMap *ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap `field:"optional" json:"configMap" yaml:"configMap"` + // Secret containing data to use for the targets. + Secret *ServiceMonitorSpecEndpointsOauth2ClientIdSecret `field:"optional" json:"secret" yaml:"secret"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go new file mode 100644 index 000000000..0092f4555 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go @@ -0,0 +1,15 @@ +package monitoringcoreoscom + + +// ConfigMap containing data to use for the targets. +type ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap struct { + // The key to select. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the ConfigMap or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go new file mode 100644 index 000000000..3df7af985 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// Secret containing data to use for the targets. +type ServiceMonitorSpecEndpointsOauth2ClientIdSecret struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go new file mode 100644 index 000000000..00d8da3bd --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// `clientSecret` specifies a key of a Secret containing the OAuth2 client's secret. +type ServiceMonitorSpecEndpointsOauth2ClientSecret struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go new file mode 100644 index 000000000..5cfb6debe --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go @@ -0,0 +1,35 @@ +package monitoringcoreoscom + + +// RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. +// +// More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config +type ServiceMonitorSpecEndpointsRelabelings struct { + // Action to perform based on the regex matching. + // + // `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. + // Default: "Replace". + Action ServiceMonitorSpecEndpointsRelabelingsAction `field:"optional" json:"action" yaml:"action"` + // Modulus to take of the hash of the source label values. + // + // Only applicable when the action is `HashMod`. + Modulus *float64 `field:"optional" json:"modulus" yaml:"modulus"` + // Regular expression against which the extracted value is matched. + Regex *string `field:"optional" json:"regex" yaml:"regex"` + // Replacement value against which a Replace action is performed if the regular expression matches. + // + // Regex capture groups are available. + Replacement *string `field:"optional" json:"replacement" yaml:"replacement"` + // Separator is the string between concatenated SourceLabels. + Separator *string `field:"optional" json:"separator" yaml:"separator"` + // The source labels select values from existing labels. + // + // Their content is concatenated using the configured Separator and matched against the configured regular expression. + SourceLabels *[]*string `field:"optional" json:"sourceLabels" yaml:"sourceLabels"` + // Label to which the resulting string is written in a replacement. + // + // It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. + // Regex capture groups are available. + TargetLabel *string `field:"optional" json:"targetLabel" yaml:"targetLabel"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go new file mode 100644 index 000000000..d1c22c515 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go @@ -0,0 +1,34 @@ +package monitoringcoreoscom + + +// Action to perform based on the regex matching. +// +// `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. +// Default: "Replace". +type ServiceMonitorSpecEndpointsRelabelingsAction string + +const ( + // replace. + ServiceMonitorSpecEndpointsRelabelingsAction_REPLACE ServiceMonitorSpecEndpointsRelabelingsAction = "REPLACE" + // keep. + ServiceMonitorSpecEndpointsRelabelingsAction_KEEP ServiceMonitorSpecEndpointsRelabelingsAction = "KEEP" + // drop. + ServiceMonitorSpecEndpointsRelabelingsAction_DROP ServiceMonitorSpecEndpointsRelabelingsAction = "DROP" + // hashmod. + ServiceMonitorSpecEndpointsRelabelingsAction_HASHMOD ServiceMonitorSpecEndpointsRelabelingsAction = "HASHMOD" + // labelmap. + ServiceMonitorSpecEndpointsRelabelingsAction_LABELMAP ServiceMonitorSpecEndpointsRelabelingsAction = "LABELMAP" + // labeldrop. + ServiceMonitorSpecEndpointsRelabelingsAction_LABELDROP ServiceMonitorSpecEndpointsRelabelingsAction = "LABELDROP" + // labelkeep. + ServiceMonitorSpecEndpointsRelabelingsAction_LABELKEEP ServiceMonitorSpecEndpointsRelabelingsAction = "LABELKEEP" + // lowercase. + ServiceMonitorSpecEndpointsRelabelingsAction_LOWERCASE ServiceMonitorSpecEndpointsRelabelingsAction = "LOWERCASE" + // uppercase. + ServiceMonitorSpecEndpointsRelabelingsAction_UPPERCASE ServiceMonitorSpecEndpointsRelabelingsAction = "UPPERCASE" + // keepequal. + ServiceMonitorSpecEndpointsRelabelingsAction_KEEPEQUAL ServiceMonitorSpecEndpointsRelabelingsAction = "KEEPEQUAL" + // dropequal. + ServiceMonitorSpecEndpointsRelabelingsAction_DROPEQUAL ServiceMonitorSpecEndpointsRelabelingsAction = "DROPEQUAL" +) + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go new file mode 100644 index 000000000..7b96c8eb7 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go @@ -0,0 +1,16 @@ +package monitoringcoreoscom + + +// HTTP scheme to use for scraping. +// +// `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. +// If empty, Prometheus uses the default value `http`. +type ServiceMonitorSpecEndpointsScheme string + +const ( + // http. + ServiceMonitorSpecEndpointsScheme_HTTP ServiceMonitorSpecEndpointsScheme = "HTTP" + // https. + ServiceMonitorSpecEndpointsScheme_HTTPS ServiceMonitorSpecEndpointsScheme = "HTTPS" +) + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go new file mode 100644 index 000000000..461f4f7be --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go @@ -0,0 +1,66 @@ +package monitoringcoreoscom + +import ( + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _init_ "github.com/smartcontractkit/pods/imports/monitoringcoreoscom/jsii" +) + +// Name or number of the target port of the `Pod` object behind the Service, the port must be specified with container port property. +// +// Deprecated: use `port` instead. +type ServiceMonitorSpecEndpointsTargetPort interface { + Value() interface{} +} + +// The jsii proxy struct for ServiceMonitorSpecEndpointsTargetPort +type jsiiProxy_ServiceMonitorSpecEndpointsTargetPort struct { + _ byte // padding +} + +func (j *jsiiProxy_ServiceMonitorSpecEndpointsTargetPort) Value() interface{} { + var returns interface{} + _jsii_.Get( + j, + "value", + &returns, + ) + return returns +} + + +func ServiceMonitorSpecEndpointsTargetPort_FromNumber(value *float64) ServiceMonitorSpecEndpointsTargetPort { + _init_.Initialize() + + if err := validateServiceMonitorSpecEndpointsTargetPort_FromNumberParameters(value); err != nil { + panic(err) + } + var returns ServiceMonitorSpecEndpointsTargetPort + + _jsii_.StaticInvoke( + "monitoringcoreoscom.ServiceMonitorSpecEndpointsTargetPort", + "fromNumber", + []interface{}{value}, + &returns, + ) + + return returns +} + +func ServiceMonitorSpecEndpointsTargetPort_FromString(value *string) ServiceMonitorSpecEndpointsTargetPort { + _init_.Initialize() + + if err := validateServiceMonitorSpecEndpointsTargetPort_FromStringParameters(value); err != nil { + panic(err) + } + var returns ServiceMonitorSpecEndpointsTargetPort + + _jsii_.StaticInvoke( + "monitoringcoreoscom.ServiceMonitorSpecEndpointsTargetPort", + "fromString", + []interface{}{value}, + &returns, + ) + + return returns +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go new file mode 100644 index 000000000..eadc1c373 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go @@ -0,0 +1,24 @@ +//go:build !no_runtime_type_checking + +package monitoringcoreoscom + +import ( + "fmt" +) + +func validateServiceMonitorSpecEndpointsTargetPort_FromNumberParameters(value *float64) error { + if value == nil { + return fmt.Errorf("parameter value is required, but nil was provided") + } + + return nil +} + +func validateServiceMonitorSpecEndpointsTargetPort_FromStringParameters(value *string) error { + if value == nil { + return fmt.Errorf("parameter value is required, but nil was provided") + } + + return nil +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go new file mode 100644 index 000000000..ee135ae02 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go @@ -0,0 +1,14 @@ +//go:build no_runtime_type_checking + +package monitoringcoreoscom + +// Building without runtime type checking enabled, so all the below just return nil + +func validateServiceMonitorSpecEndpointsTargetPort_FromNumberParameters(value *float64) error { + return nil +} + +func validateServiceMonitorSpecEndpointsTargetPort_FromStringParameters(value *string) error { + return nil +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go new file mode 100644 index 000000000..8a476795e --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go @@ -0,0 +1,23 @@ +package monitoringcoreoscom + + +// TLS configuration to use when scraping the target. +type ServiceMonitorSpecEndpointsTlsConfig struct { + // Certificate authority used when verifying server certificates. + Ca *ServiceMonitorSpecEndpointsTlsConfigCa `field:"optional" json:"ca" yaml:"ca"` + // Path to the CA cert in the Prometheus container to use for the targets. + CaFile *string `field:"optional" json:"caFile" yaml:"caFile"` + // Client certificate to present when doing client-authentication. + Cert *ServiceMonitorSpecEndpointsTlsConfigCert `field:"optional" json:"cert" yaml:"cert"` + // Path to the client cert file in the Prometheus container for the targets. + CertFile *string `field:"optional" json:"certFile" yaml:"certFile"` + // Disable target certificate validation. + InsecureSkipVerify *bool `field:"optional" json:"insecureSkipVerify" yaml:"insecureSkipVerify"` + // Path to the client key file in the Prometheus container for the targets. + KeyFile *string `field:"optional" json:"keyFile" yaml:"keyFile"` + // Secret containing the client key file for the targets. + KeySecret *ServiceMonitorSpecEndpointsTlsConfigKeySecret `field:"optional" json:"keySecret" yaml:"keySecret"` + // Used to verify the hostname for the targets. + ServerName *string `field:"optional" json:"serverName" yaml:"serverName"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go new file mode 100644 index 000000000..206568e1b --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go @@ -0,0 +1,11 @@ +package monitoringcoreoscom + + +// Certificate authority used when verifying server certificates. +type ServiceMonitorSpecEndpointsTlsConfigCa struct { + // ConfigMap containing data to use for the targets. + ConfigMap *ServiceMonitorSpecEndpointsTlsConfigCaConfigMap `field:"optional" json:"configMap" yaml:"configMap"` + // Secret containing data to use for the targets. + Secret *ServiceMonitorSpecEndpointsTlsConfigCaSecret `field:"optional" json:"secret" yaml:"secret"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go new file mode 100644 index 000000000..8c27e83ad --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go @@ -0,0 +1,15 @@ +package monitoringcoreoscom + + +// ConfigMap containing data to use for the targets. +type ServiceMonitorSpecEndpointsTlsConfigCaConfigMap struct { + // The key to select. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the ConfigMap or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go new file mode 100644 index 000000000..bad02951a --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// Secret containing data to use for the targets. +type ServiceMonitorSpecEndpointsTlsConfigCaSecret struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go new file mode 100644 index 000000000..389c5c594 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go @@ -0,0 +1,11 @@ +package monitoringcoreoscom + + +// Client certificate to present when doing client-authentication. +type ServiceMonitorSpecEndpointsTlsConfigCert struct { + // ConfigMap containing data to use for the targets. + ConfigMap *ServiceMonitorSpecEndpointsTlsConfigCertConfigMap `field:"optional" json:"configMap" yaml:"configMap"` + // Secret containing data to use for the targets. + Secret *ServiceMonitorSpecEndpointsTlsConfigCertSecret `field:"optional" json:"secret" yaml:"secret"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go new file mode 100644 index 000000000..6c36ed7b3 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go @@ -0,0 +1,15 @@ +package monitoringcoreoscom + + +// ConfigMap containing data to use for the targets. +type ServiceMonitorSpecEndpointsTlsConfigCertConfigMap struct { + // The key to select. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the ConfigMap or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go new file mode 100644 index 000000000..e7a623ec6 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// Secret containing data to use for the targets. +type ServiceMonitorSpecEndpointsTlsConfigCertSecret struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go new file mode 100644 index 000000000..1e21cc02c --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// Secret containing the client key file for the targets. +type ServiceMonitorSpecEndpointsTlsConfigKeySecret struct { + // The key of the secret to select from. + // + // Must be a valid secret key. + Key *string `field:"required" json:"key" yaml:"key"` + // Name of the referent. + // + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + Name *string `field:"optional" json:"name" yaml:"name"` + // Specify whether the Secret or its key must be defined. + Optional *bool `field:"optional" json:"optional" yaml:"optional"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go new file mode 100644 index 000000000..215f9e4bd --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go @@ -0,0 +1,11 @@ +package monitoringcoreoscom + + +// Selector to select which namespaces the Kubernetes `Endpoints` objects are discovered from. +type ServiceMonitorSpecNamespaceSelector struct { + // Boolean describing whether all namespaces are selected in contrast to a list restricting them. + Any *bool `field:"optional" json:"any" yaml:"any"` + // List of namespace names to select from. + MatchNames *[]*string `field:"optional" json:"matchNames" yaml:"matchNames"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go new file mode 100644 index 000000000..11d4b6c80 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go @@ -0,0 +1,15 @@ +package monitoringcoreoscom + + +// Label selector to select the Kubernetes `Endpoints` objects. +type ServiceMonitorSpecSelector struct { + // matchExpressions is a list of label selector requirements. + // + // The requirements are ANDed. + MatchExpressions *[]*ServiceMonitorSpecSelectorMatchExpressions `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` + // matchLabels is a map of {key,value} pairs. + // + // A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + MatchLabels *map[string]*string `field:"optional" json:"matchLabels" yaml:"matchLabels"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go new file mode 100644 index 000000000..0b28f1403 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go @@ -0,0 +1,17 @@ +package monitoringcoreoscom + + +// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +type ServiceMonitorSpecSelectorMatchExpressions struct { + // key is the label key that the selector applies to. + Key *string `field:"required" json:"key" yaml:"key"` + // operator represents a key's relationship to a set of values. + // + // Valid operators are In, NotIn, Exists and DoesNotExist. + Operator *string `field:"required" json:"operator" yaml:"operator"` + // values is an array of string values. + // + // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + Values *[]*string `field:"optional" json:"values" yaml:"values"` +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go new file mode 100644 index 000000000..3725fefa2 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go @@ -0,0 +1,66 @@ +//go:build !no_runtime_type_checking + +package monitoringcoreoscom + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateServiceMonitor_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateServiceMonitor_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateServiceMonitor_ManifestParameters(props *ServiceMonitorProps) error { + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateServiceMonitor_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewServiceMonitorParameters(scope constructs.Construct, id *string, props *ServiceMonitorProps) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if props == nil { + return fmt.Errorf("parameter props is required, but nil was provided") + } + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go new file mode 100644 index 000000000..f3f17a77a --- /dev/null +++ b/pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package monitoringcoreoscom + +// Building without runtime type checking enabled, so all the below just return nil + +func validateServiceMonitor_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateServiceMonitor_IsConstructParameters(x interface{}) error { + return nil +} + +func validateServiceMonitor_ManifestParameters(props *ServiceMonitorProps) error { + return nil +} + +func validateServiceMonitor_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewServiceMonitorParameters(scope constructs.Construct, id *string, props *ServiceMonitorProps) error { + return nil +} + diff --git a/pods/imports/monitoringcoreoscom/internal/types.go b/pods/imports/monitoringcoreoscom/internal/types.go new file mode 100644 index 000000000..de3a04f73 --- /dev/null +++ b/pods/imports/monitoringcoreoscom/internal/types.go @@ -0,0 +1,5 @@ +package internal +import ( + "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" +) +type Type__cdk8sApiObject = cdk8s.ApiObject diff --git a/pods/imports/monitoringcoreoscom/jsii/jsii.go b/pods/imports/monitoringcoreoscom/jsii/jsii.go new file mode 100644 index 000000000..026932dcd --- /dev/null +++ b/pods/imports/monitoringcoreoscom/jsii/jsii.go @@ -0,0 +1,28 @@ +// Package jsii contains the functionaility needed for jsii packages to +// initialize their dependencies and themselves. Users should never need to use this package +// directly. If you find you need to - please report a bug at +// https://github.com/aws/jsii/issues/new/choose +package jsii + +import ( + _ "embed" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + constructs "github.com/aws/constructs-go/constructs/v10/jsii" + cdk8s "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2/jsii" +) + +//go:embed monitoringcoreoscom-0.0.0.tgz +var tarball []byte + +// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module. +// The implementation is idempotent (and hence safe to be called over and over). +func Initialize() { + // Ensure all dependencies are initialized + cdk8s.Initialize() + constructs.Initialize() + + // Load this library into the kernel + _jsii_.Load("monitoringcoreoscom", "0.0.0", tarball) +} diff --git a/pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz b/pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f66a7c732a1bb6560b83929a5e9492f89ca03a3d GIT binary patch literal 34234 zcmV)1K+V4&iwFP!00002|LlEfSK`>Z@cG=of@Oc`>U*m#2GOE>oqMk!AQqsE3a8I1 zLlPkph9-dGdHcV=&$EYQXCw?Nl+;;$gs`*6XP)+0lKWCu{c`+hXxcws=U+4$Jv}*z zcs-9M;>pv~XyhM>T znoWD7$Kgy$t`WtlM+3}+^mt0*-b9Lx=h=(zmY7de; zr4yE23&LqmMzb;feFO`V?F+JvY;Ax~YuhXh*9MOV)+{{V87}~KoXa>;G-Jv)&AkM+ zt6n|-B>w%|3$`|flZ@4yKcEPWHiZ=F$@pTe;1xi`dp&kIF-8y5CuyP{%N`30fSADd z!okjx7efG$&w&Y0_$P;Zm)ySaG$xxe)Cfcxz2s|=4ojmG|2I`pYLT@@9 z|NiBRNlj@BWW7ywVz8c)$I0XPN#s*!rs+x~p{hyg?BQ41RM%v6Xpp`de|h^;tJ(4!#SXsN<1= zKP{}OOc!Gg&YaNCCc5XAm;)JdPaWWL$U?qEkAWFP=@3qowWEj(r@aq4TxkB6(VG$m09M{yz9L~H%e-ek03_~4s z^hMBFkcJ(}ut?&)5z!n{*dOzG4I&y_UPd+KV)<6l=+GV-!)0sUet+`#LF&PBTV{& z%~Fc|=~%#@N0IZJLS#g?@z{Iy`bd_LG!%v#-wAq9E8P`Km3G@aSEDB`!&q4A%7VTX4w5LX3N5^VJ8%Cabn%s*_N9@od)1GFySMDPH0-YdT zIXMcW2d-(b^R?*kvB^LkqxmtN)z>T0)&7P@rblqv1RQZ2R$8d0gk9x$q748j=X8Ij zc=E5dIurZ}I7Y^k(bx#NAkucllUt6NH>6kp<(i-W?ZW=PHl&h@4#dyG@IYK!71KDL z#bU1E0l#{{FKh^A7dE_(1Nb4FMW3iMb;KT78b&&5WM-%eB9=D95hD}T7|kZK8W~7K z?LjrB2K-`Z3IHKM;)H>s5&5JZcaI~I5t*uku?`&5`1RO%M#Aw|QC*rK75g^ps1uNB zk?^u12%NjA+p)hyw}h;%L)fe>kDvLDYxc-y?v%KFh+o7Fr#>jNGSaxvW(nf>qt1rN zV@DtRw}0EVX`)VNlc5KMhN4r_a1oM70ZD^>lkH-ptxX85@ql5AA|u`i@O)LfF25Jh zCZkJ%b~?H;K(x30HkzxG31GJoB$>VXskxLK6JX5A`-xQu<0|NnY5+YXY@C6?=M|5f zESem-H0Ih-L>ej)WCE)bE^RQFO{ESweAjed6+mLir2vv|emn9dx`yA2MSBO*3n>4tz`=rH{^#@TyAW(cs*GelH@OMFjQ%?HL$J6%eB$c}|4GRr}@<~V}Cmx=&y z0vV=(ETk0keus9NS}q9l#n`0^VvdybH93bVfs{P9YMZP>5M#sh4+2)Z#6IkB?#Du2 zg~Y7ESZX4gzd2utMWZ1Zi+!HE!dGxsKhvWU<%T8vr6_e&J;Gl@t%ZIja;>1i+-HZ% zcm!u*+;c^LH)YwciRJ8sZ_>6|O3h>UcZ0PM;E<+MN$!=rnapQjlTcwAnW%rwfFu|K zqDTJcpOJa|IB|9y4YKas+XuZjB~(dKG|CDhoKrAUu10>OrYD3#PHFH7^{VV9>6V2FTYy9Zt7k1;o?LdLO2jS(5X5X)=+*S%cmiQXfYh!a74!(HwAB^;sH>bv2?r zMDBS9_ek$hI|pia|1cWe6BCk?`?48u-iz<(_%_hQCvDmzZ~h+XNR#`|`0h|7)IdzB znF`1J=buN=>d&Kl`aX^->3Rf?QZ=T~8@x2pWaIeHVc~(iG?(<5YU0y_rs@igt`5f2 zMFiHQ(Pp$aWuzLzU#757joI$;x2`sa8L=gNHmAa;Frq!Mk&!{5v)|z4pSZhN8xW{R zvW8B0&)o@RMAn8={%;8Let_KyGXURy%BY?+*g5Vekqpo>JwisFPX5u zA@Nz_RNNu#?yKtf0_6I!s?=E^M_4?M!f{JOBQhLCbX+cCQjh?3vP6KoQ769{@ zIG$~SCf(W{1x<3WMV#$+1o-$G@MpmunT=rwGD(&J%v6P2o(a#}QCM4U#uE1XW5F24 zmKD`uciMYrXw%6g1ZX1?!M=jr$yqp%b8i2~0=_0nox2HrR3P40@JlAcfuHLDJ`DVs z5%jfHZK*Z46_qLqW|u|?vuZ?|*lb>?o9remoyM2Kl6y1X(&kkTI?5dax$%g}u|&-Z zZ~VGV!j8kj8s6QcP`kG-Rr{%Sy1DV7XkVb8h(iTGf^Y z+x{3PGs+f2uyYZ@g_i{1L1esCE2h6Hj2Zi=D7y*3VIm@gz5FnodAb&joW2f$beaVB zj7X+J1ce?bsmQ+@qX1&xxf#dqQVgqrwn6 zj|uM*jWehBGc8!d()>bO!86iuIGU2<24W}CXikH;O|${3G?Dv`WN7j^^nU*t!#M6o zI8r<~gu*tN`-nUmK4{(9gsD^K;;)gODk&gx%D_`WwAUn^0N~6}fdwNGMlhuQX_fKZ z-6W+UtV#AWdP@VR2`A@%V6r>fjRn&t=xr08?XVdhrY$^h!gCsbAyAC~%);aM9-hyZ zYf;wuybCO+y})B9;aHU>>ZCsEtHT_eNN8xjP{$KhMvKz#1c01$RT~;ppq@csi{l~u zO`u(b&I7)}M2HJ=Z-DXZa&M$_lRrufnkSgmRG>fMo#Az)lH`@hP*oK!0%}8xewq$C z9>C~GC}q}7j7ddULoh+n5nBo(=Jgm$BaJ4^xh0Cd>l^nrLPu?j9QNO&It9R!fOh(T~BaHN;h={O$Vt}48A@2rTTXa>QA z%Xe68bBR1z~Z$%4}kXFDnQ0I8u0s%!VKw)4}Nq zur-G2lhag=BP9S281G^9djxCR8NYw|(lmx}qXbn2} zzu$E2L6sM>u71Ioh2O?K$xwF`%9pEc_GA8ta6Z!Y(Nk4bw23OOkaKnKc+s-B10^It zO$)RU_dMG4Nv$ZOH=5}fB8Tr1${9&KKf~{=m)(S;*m7UIa~nS(B=tta(PTx(yg)DS zh4=3xAU~oNlWF19dijfCdFxdozAhr@Q^x9JBmv5zie}T@1gH@CHsWr6RA8!WpqEUg z!FUC-+)P88V;a@9sPhnMcfc`DSW;r z2vj7;(dHrq`Jci|S08mGo%1-}d5}_DU~SNPNyS2;U)qmh%Y!rnkaimQzAgnmbLT&v z<%S+*)l9})ftI;mb(yDy9KXqoL^zHj(s-;dcu)h6eC((XRPe{RG}!drgrt*Xn2JJ< z?cB#~_);)X{1B0B779=o%ofsjSoY4J!!>5vwrpZo z&hQ$DI0Ft*Jz`X60e2JifmHq;?Iuix2=^eH`vGBUGJ0M#Ci)85mgJ3U(Ip)c!gGVa z5}r z3`~HSOPWr+*mF&yq3z$lPY2`gW0Na?hc~`sdsfj3`t|T3TJ23AqV?ztxd3GPg<}kX zOUF09XW!}LAoXmro8$i^Tu4*|-J$YL}D*ngU6Q%7`SVL+qu-Q%EM$Uq+rO|BqD!!E|?VAI;Mr&W<$7xR*+DW^^ z9mC+)x+9L{d{3tsbwkDrj6!6KibxOmg3D!tH^*q^r9XVKB);;2#PjSX)W>2Wpk6%F zk0-%dTH^W<-KbNAigl&B=0q&#XvKFCrIS6fRb=U?J&jd~wUt#RFOWP&G>@~8Sym#J zMajY-q!mkdTI?v8rb6a=-)up7U5`N5J;7ur0a`aQRI(1M>eh?3h)qV{ONYlve0lJe zwKwkrL|#X;lQ0Cs^{o(++EjvL0WKVxL|#gyCa(JMKr#_S86-ViBJn}GCWA0y1`g4Hq9G}-%X4f|&D>4QNG#Vc zeNTMPlExj0)obR9+Y>BzHhJ7957ejR#&*(#-y=nM(>(Qa&y?LaPg+kV6YC_c`^w#KVg>>GXB+kj?a^Y9p$M;V-&v>8e z4$3ihXe1l5ijkff6!3;@L;Ve4OdT48mx0Lg=MhO<{__ZbN3tqKjM*4sZ#E_MT2AS2;Vlk9xuBlHXKNj}rH?*$)#>&Bc zA%yG;Eg~POUte7R9ywQ($cR`QK(%?8>D);#TpRzH+!_BlGSig*4H=k3;*MawI|`Ox zW1(upe?0esFU*>YU+rq}g)QlpaaFvR4cIM`H0}+cmM>*j!DYG7XztIx+Mj}@r!|F0 zt60*`N{t@%oYuETg)H;+)+N3+6+Y9hl3QNJbxYodI0ZMRtWrL zZ>&^?h`+QqW~Wq`@N>3x?^_t|#^VHckkwlt2Q*}|TqYGkj=!-I$nlr<1>{bn%N?}l z*1a#tH9Su6)g%Q6$J|sjFwtfAMFcly`&g7-k0x)8mESmt<=Y#OVzJG5x_b$`&D;5W z4<@6a`{qLgSN*UiBR8lVY(?)4k0HXeKBle64Xhv8NEAyXetaX5k0i9I2xyA0yDtK| zC2cYp#l}Lc?`0EjF2tTDVr$8; z{wvr`8P+-9gA5zsJ4&2=U=h{@DF+euox$QIns8e3Ed~De!l_weaV6n2UKz!bc5nU}wS$ph>UA{_}Y24T0sPt>mZ92rPcxwor@u1-T-vdNC}T|%r}fORhK z!6n9SbQs{#&B7PNxE^A8$1&ECAVvp%u@Qr0%p$$Nl#CvLL}2l?5*?S^`XKd9X}Jfl znp)jxHjz0Ir^VxT6I4UofyuXdo5B$-zO;7`M~F{oA-bw|XSy`O(j^nsKpiY1bur0u zDwIc4pUI+l#xepSA#OV=PM?Li%#!ZXhf}+}z=g0otmPS+NL2}clcn)=20XPp8O_E9 zsYhv6j}0PCRck~BPj-ltBCLf#^B9{22-LXR?}A$jlE#jL6yX#dkE71$`6u0T;5qLn^UBiygJyVZWrV#_5oYmW{9^RpqG=qmL) zv*}bxi@H43-9bCwOx_@?LPf|DXaN;L+eaK?ECLpSCMm#sbQ5D)Y?Bx7 zCVnMiAxojsGu_j&IzFb;ZP|>^<@M|Ky{d)SY3%T^6Yq!dY;(ie*6qUQvUi0)6?FdB z4!w;>ldfeAR5UdN7KG$mYrg)yo9xY`{OULX3sDv2sTQ+;Mh0zoM z)DWXxRIj%&8XC$5BPGOum*=(1()Gm_#w6f5kix98c%IG{OXoM+8a3qRl3};B!(`l$ zAVkL95*+EAMur*p`Zin5oY%I2Ei+E5LyX(Fx!KydxWy_G^pL2Utu)SyTf*0{<042o z$8|{(>$uOHgnqlyh{&eblu6k2raSArc3!{gBZ<8A4ZW{_ zeZ%8gQM^kOSlNR*WyUNP^}nkj*=MN`_pR{l`5|2u3%w?; zzom*7L5&3X0I=Cj@c6piQ{dRSJ@yss+a2x?jBPnhJ449@(T1;mO*rnO{^gH`1d`fpf?8X}4hPSIy#8^_J~ux*4Z7@%H5` z;)&$?DzAI~JFNQh$^IO0h!EPOQ4-=gbM`&5@6CMs-K3W%ANi6QzjHoh+`l(e9`2Y~5oEWL zcyIB$eXAaI@)2&C2^3?tBFpW18L43D+4qLRb+nr8ig52;W+|3juUvfaD)vBlJ5*a* zN;{JuxoEs6v>fEW_Xf#B-S}1D^&{5}O@4&Z@&0np7R0`N68b`le6JSJwN0t;-DSe~ zS$tEOaPK6-gFLw0g%Y9?^M{ZJ57OX{0Az?VR|jeEAPdIgsrbi|1-Bpx?nU*@L*32S zue-Su6*s@ePu3Ah_ovq8p~~joRoVQSi0^cj&3&t{d8n+pUGO}K9x7{wfwe9OFv4D%-5=p zx!t;$HIxI?_ZKzTJeJBA=r3k+0dXDQ6B(NtdZ9nl&TB+wLmkxE$YL~Oj$PX9{`+?_ zA@%$Bd+s^VP?+Ys3gScIA)*e()5T{|z?d1Vz>Y$N3uXnRGxDpMNs30%@x*KvUKVp} z@&wzy_Yfjd(bte6a96`HJlNlDa99MTki*qBqzlfY+K3p4XtO2-s1p_JW;B_;KNS$> zvWya3sN;!>_Aljkf>!rqcYLnq*_D=X;+ z4ISOxI9zLr%QCR)#ahG`L;Gfx`>i>?TNG<5u~xApkD2de468ZMpJge0;X+)-gN8zN zgk2FaUC;`$1SIC_M0;2ej}(jylC5mLu$#`^)XDPFNw7ih5)*13QAXPF&;=2ga&Q=- z0qRBqMTk|$&YTl)LDwaI6$~qurnE;@3{%MvI`TAK>V7K}ykTm#9`UeKY_ zWGD#x=#)qs8mc^-sI|T}ZW1{rH2hp>21#UKRzi_Jk!D(Loz)!=IzohcMneb z>S9ykg1NXq25mVDRdwp4lNQ*5+NMRky})NLK;-Lb7!awwV>xg0puTyX(@sMcRkO=W zi(3ew)j(|>=n>V`X~x{hnBrON2SB9~A+iX}ZQ0Y9QHPOkQ)^^K+5>x}Xy))M=DrmJ z)Yhz%8R;D>KP6658yP6Y$?vv_G9!K1OI8vg671gjk`>{Y_T`2Z5wbqs^(u)_d3ZY@ zk7cAcyj#V^hBoK9dvL2tF!Ju&l`5XIeaCv-$*&u7;C;DF#cRqx;!P^a(+_-;isvC8 z3MaldNS+<8QCR_AKlmLg$+Hh|hl;<@vboH*>xHxfgyWsMI>kND_mk63qlpdWw7n>i z?V9hQLUsV9JdLIfqMijR2RZM(;W2i&E+s6me&qVtr}4yxlJK@r9@`$qwg;k}I$18( zZ7CRXdvcySc~2QHVa6G(DdVY={gLlrY9H4l7UF(@o$-jlLG7PU458}-dc{(yJ@Jac z`Mir?Or30z4eyn2%o~k&*E?pL?>pLEPQGr;llRX)XqGC-Kc>K94o*w#a8r_#p8GP|cJ0LE;l(9_b6a^`cX~gYqQOFe zHmi!AQLicgx!3Y;Qs2qhDh}F!iSLrA=bGlv(lEReHchb?XqzEVv<~V7oES>FE zA0#RhVCbiP5c*G2%YCWBj(mvgPPf9geYn_a%z9^ebZFL0uQD~<40<^~-jw&gKg&(V zk}I&>-R87*`j|DZg{asPWpD5Fimv4JTE2i?6waKpT`43TAwZ+RKw*x=rz4zDKNbTsX*||7qTKGLEjaoC zy;#2I&+$F9VA3R>PW~EY?1kayNO?5HKiOvxybVGqE=H;WPsx)Yu5Xf@iOLdI4N8=L zF(?7TiT1QHHKiFU5o#P%Xtw|?gjdSk_YVPO^t3|5SmD7Xh8BkCb7DZ|l0&%#E+<_%9lQIBw1 zoDz@4*Jxtinr3hGa#SBDbJ@Xjxl=Ab4~(yWoypQwZa!@#6Q!Gzw(-xSpZ@;Gmj8_< zxi59qFW!LlXl!GQXf%3yauV@+9zBW0V`uTmKN88)Xe@Sm8ijVz*h%y>3V;9c2LFI^ zNE4XK78VKrBIe&c`FDhQ5!B6f^v6$gX%hJ^eU5zZ{PEK@vDqHeD1jSxz4a&c8Lztr zE#&C?chz7d>vQBklnPR65&8SqKYn5jgCgjvDv?S7=8SVfIU@gzgm|r_;&j)1*}5n+ zTzh%}yKh_gVLk%!DrzlwI=V7O!|(QXxPJyT_WyB72RJFe_wlz7ub)q+lH7yclSocX zKxg)rA-XoVE2vkqQHTy*zLublU5!Hw5T@T1x--{yPOmk1kr+s>_{J(jr6og?@$FE< zn5|bDLIrJMQXlozA&VmlHI(zMRfcq7cc>v=)qH5S*2hZ=`AU8VC?SF+|B%uu3G zgP5&Xz!ayn69#jf@2rhUnTe`k`6Ed;R!1t~<+bqZMly`2(L`Ad&-hzw4cRc%3Axi} zr6KuSs{=nRM^#W(Kmz{Cx`VAiP~5Mrg&G-YHRQ-h>kXq$rYjBvZ>%+x88^7vc;;*C z1B#V9zBLo`3BN~E)h z$V&gK!FnQ}$?MEr^XZ5@BJcgzfBh8suZTl4po)_bu{3Lviewr@4cgo|hIjGx|D%RF zM>p`xm!D)Ec!{%r^?9le6@$<0_{Z?av8c(?5RGgzb_Ja_L@N_UNseX{Sv5N};1@$vRF>SpV{t#J$KB(IWJIRw zU`)JJzdA?xzp*rt29YsQmNb|Nuxu_$lZUL~7xEVr_bHn2*sz~Si(duf5&*(%GIUs* zj*lHG+;P77?X$Cqzn;d1vEKOmkDn~llCbF)?EEFy=0?tM3T#^(D>r0Nv#E22eA0$2 z>>0M3!V~-mC*k=rsG$;l?>96m(r8yR{mt{0kULFKU@}9A?h_f{GYs}Q;@WUyHdbvd z*4cW}tFXPl`s^Ft`0v({+f-Z>TeXA zpyk7CNKH}!ClAx%aHu^*@N49s|NLiUHe_iz9)!&NO~eQjfM@#D+(rEN%YfN$e)%2O ze$2mGkoJoKY!rU=WwAJ`V{F90lYu7i$p=lJV&WQ~5p#n4B+QoC4`B}{no1xYX87wd z=wdTj{q$)96yn#&KmRB4N&8pq-_EuFZ)6hrJ@V;4h(6HrU)sN-|Ni&y5z_SUUxBb7 zS@?VPW5!jz%_;N!d*wrxY^J)P!?YXq$kEzg7HH5fDi^L8@R;BK_jn+UKP~X!mP=-z z7Qc#}K8`vhl8W`ozX~n-sye=a{T-_cHPrI)-9HF#5rat){YR{|^}yK*O@&2u*q!!V z?HxZk-)tg)`@HJ>O?Y?cv`q#bk;{-tPRZ4UxToV0+YlO~#%ASsDjeEEeA$pd5>v(H z2v5XzA?9wIvf(k)se78!5OZX0ggFXNek8JF$IrJTQf|8N$|P$zQdD-7`0+ucIJv_emR|v<0gAGp9t+JCRArbtZl+t+MbDRN4h?Gs;Y`ML2aA2wm%ix z_eR6f#72yTC(d?t4LHygSc9#t^;Bq2fyPd zVg(F!qSRnWj*-4)%(<~d`ysPV~$N9`f&xarAG0;%|7+&QvY&ScS)72%?|Q+(8tDgd~#- z3D4GGMdI7rgO^`_NV(o7&%T3@?~RPfF^WiV~?=uoE5^y9};d% zb>$sk#-=L0GQ5mg(93E%91oRYk}>@vg2;>owyf4I4~HS$@-BW%y5!PA-viFPG~ri< zH%vO>7UG4&?8HDc?a0FEJ3d=X0hnB73@np^i8@ z*t$l-j7Oufsf5!nzW9a=&9a5@uRkQFy)UacFo_S&Bsfe_cZe@YF&MwB*KZ=!EG%B| zLu|kpGK6jJv2yc02}vR!jeC;+juA`h^OzQYWXZj=p{^Q6WHFk-qMs((ls3En{+*8T z{rf$uqA=H_h-K|2;}jlf?(yfy&15vdf|D}?XGDXeU?(JmKQa=VQ*hX)M-CdnJ5119 z+VYQ|KABkeX=&?Ut$0yV=b8u0Eq(D{M|c897*TeFFCP72>&IBJqng!|0bTw5>+-2b z{@?$Ld|D-mFH9Tc6lMS!t*kwX3}=H5#j|(W~A^scae_T(^&N-HX_Yg zCok|^b%PXZ)&KypP&hC10)voNtQN_FK-UFQV7wz-`JI6IJvO<=Fx#mrDJwvdmHp@& zSL~N9`5!Un7K>k&$(DQ~FzrE&hw4+fo>>nf(H2IjkyP+k8AXh0b@h*7w$w9(DW3Ru zSy-ljnrWzZfBf{l6Do+)=ly?u@2nQv>C;be$mg1Jh3O=F2dTp5pnGjOURup(n4xia zvMu&bmV|Hx`bGRzolI981m2*-z=vNQU5P`nuQqSKp~|y~TI*}$raI9c7N%d{`GYNr zZy|KczS)0YK`n7-Eq!9$x^)uFsZb|n%lKnG_z_)dPFK;}yVzXLs`oSb@xn2tVNZ3+ z()5Jc@AS(L>vdh~k$G?DmBTr7uoLfscZxe=-qTAZI)e^Su?tYa{b=tA6{0Wi02Oa) zXF2DG6#K{14h#iz4>9aXb8#q&&-T3uLwf(ZvRZZ_%uTQuFXNyit} zYt}LLBpRJ0qc<2SoAiBoUb`$^UocA)?N1niw8s+H8w^oAPiKpzbG8KDqjQi=H;Ig5 z?UdQ4bDT|2nT%r{wb`dQ4#)kC#<{-DRx{@{2CinG!Z68{ zrr43KG|r0_ijY1Xc(U<02m-=5W}iz9tbRq-LRwt?YqYKPlFcT&kr$b}P2bI%Ec$I< z+Zx5IaIE20HY<2g%Mt%(H@2+hTIMxaSfZd{!ucV?7DRvgI|JPzD(fIYzoi7dmh8N? z)Vw8m`PC%lSCElkM>>90x%jmu;@6jjUtbD-efjtGCEwSVdABL;t}W-TDB-@AY%4ev z-_ygIk#NwFSDniPeb!ziA3KRFy^|=- zTJhAhI2gYav?ooDr(*J;tTzU!xsoZI7PNv<7?$VC-PL3JuB2V-MsPpF>Ptb78ihf! z*ST%J6duQ&yV?`HlY5f$&^`fuXoa)u7vrqb$W5#LtkI4((~U+6zmIF#igBH-raO(R zi|c4Etu(H(#fx;l(nyi-D_^qy9$EVfGJcfx zN4`G~YYp3XYdq)odYg{N=SP2^+kYqHi|c*zZO`W87%#EpyJLP&QOEBu^gB7jzvO5& zTfEF=;PZ3k5!y7$i;DI(h!8Y{S*)4pQ`vn8$m#!|Jo+^FP4ff zF{a-ehGP!adsX({bqxBBx7ggDAK}>}-w*PPt{>0j5`Md6{gQPwGkhP+`Cru8GdzQ8 zqjGi~O~GH8{8ps-iLaSFBkN0CWqALk>=oH3zD79fbi?c$o+Wy=_0%->8^IU-q6Y9@iDoC2 zXz7eUt5Dd?G1#2LUQG}Ns&ozr*Km%d1k9-k-<$j#_*`(WDv2tL3x6AZzTP4B(T*0* zU_BQ~pTSd|(4lPY!Zv21c&Xz&lNI{?6vjfF7*;eFJmQ?@6!uC980QLc%(4IYZk^AQ z!D^MB3E6i8&OhB)SZ9rUX~A?U2IG*kHqVg467*5liaF@FX~H3cE8#rqq}>VZBkP0C zLv6r*-RT({e44OA_m0h>$mU?pFWR#2_e(Cr*TUfNLR=r)D>i=FTA%kb_O7sB3yznz zXCl6MKC|z?f4k++7_Qs)XtlYBc(=)VugRI1XACqw8?Q!@HYkKPU>m@zB)+3kUVfnh zjYJp&`1d^b4#UqY-ccZ!!w&nG{{zmuSIrDK9<4rP0@biJ&+HY$k*{b zuRVDteKjcG?tl!~L3knjlGE8T;{Amu-JmkVxS|Prl&I!~=U!v#@J#o{G26b2@aH~@ zcoO8%9Fb!@_YB%M3C%1eVIDT#AvKWK>E3I~L7&a6K(|XTAa^m|?lI?pa|^(C8}G-x zFN4g~f<9U`&po??XLr|8z|Tc0BjQ@s;!zZ*8wDzRIcP0=W|IxFE4o+=!u$*N)9M1I}WCI&-_=fYVO?`L|rTrET zlxJ0q(n*td^^td7`OtaWJgWrfYM?stUOY8Jm&JmnaP z@KsX|V|sFHIn5{X0lb%oHQjp49i$IBF9Y6NWeq*}t>?|xh>S(%c@2G8^Y>^==SJEp zSthS|uZifZR8Hu@nqnv?Onu~pz;y)Ri}M`Zct-hptZLdY==%!7+nwSKFCu?ras|i* zw)gGh+16sCZDDDVNXxz3*?2a^zh!ej@cU3>gp}Pv%L<4aYS!Si&kNoOzh`oLCIl}= z93DAkTMt>5ja^tuYgU!X%Y?qRgU*1AU23$rt;lO^%dVA3uR`bA@LSt^-8LPKz#`Kb zF6_GF(*oyE>U-;+Hd%_yubnGiq=9B-pL}Rm0%?{K1z9|bytX3RD)Z*M)TZ?eeK4H$ z$78z;<^RmmYa#gtX64|@-TovRdwQ-fbewo5~H!q1C z73~@->V7&^N(;HtvwtjnkG(XJ{yPP+zb=ncb^6xRqhtg8{uzXT=$j1Tl9pj(xB;PTfcEF#_ z@CSKzDQX;e_Kx!Ga&`rtok5#^c4EWVJDu|EM7!`FJliIJU!=1LSJli?dSc4ZOLYh2 z$MNyOKD?{^xSn2tAA9O1&(uC#n!k&E*sfOv+Pmzr0o-r5=KDm>)N=>8-c`ScezAg_ z>2dDaIEU+6<~{r#lz)2evDL1>O`8n04-^iv#*WGwoklaftdWmpNlc~4%j<0_Yb;Xl zB5Q=Ux7p`mgJ~ASM|}k*EPB}sSX>*4At;3RX)KH5pmuh|gM-iN`#7@&JFGGu)ggZ2uK#Z$8LGKb}l<(MJ1A+-`qqQkf{8 zJjg@`ndl%By@gEFC})e83bskm@6D46%k9B9vAPu}c18T@d6bu?EyU+~wnE})Z)>J+ zh{cVY@wG^!TgCh|OZ_A`hb(E+(x`u);AL!NbfQ(_*EjPpgg8Q6Pdz7Fak+UN`}>Q; z05P8wz+|q(^obVm!#==`5b$$>JfDF7bXG{NI(cQ)<|J z{N*@@xWQ7VUX9L@t89L&xv%*naOAJmxEXWO)LP z{k6}7=6}(6y#mE$PJ{9(#J#zXU&6+J@qH=VS{h?O?YGK-N9?ZNyo&wS=|3lN0u0w* zcG`X$K6l3!*Xb2YxruCrdQK->I_Nn&s^_$$P<#anaXFQi`~e7Xp@@D6z)_8ffM9$W3&8M`dzA$u{IrLa6l z0cDoNA(r9?ky#Et=YxH9=j9Hd(Pj=3ey`s3%sMPpT8D+%I;ee5idL~s53$uK{i`gs z9n$BZzq9!CW|sMd2+aZ-nZ!9^-Ws#TARNpp8n@@^q`pX}(X{gGXd8{^gke9o8NexO z8^rmisa>}~{X!JB`hbr)mft0`N%9;IIv?$6f&Iw#`C!cyvxY~F(d=@+i8kbnXlKIO z9&Mr*D^$)vdF7&=V>$2ExQTYg^luSZN1S%VHX1D`+e`TgVbW$4d~&zDJUmMZggRGoZ&8ivo8`_(0U z9{5yt37^l$Lh$+L=dgTUX@umpm(7s8_Bj@o&%eRg-h3XY9E=yOES{pc->47s^QC}7>p^}!$gjKSAG;*6JW0EMEXMp}<%56h;2+yN|Co&S zx4W{ zP41AG+@T)ij)UB>e{zS1ohv&r?b8Rj;~;muv)m!x%_T?6^UkoUcK~wnKCa^8YquS5 z&f0fZJtg1l7xGuhLcZLWUV1Ng`Q*5Bm!8YRN>^Q^({f(FX${7DD^W2D+1!)VNNLib z`KV-Lx{}ZJTX)r7F_XTO2QXHyt;@smxD!tnrQ2k`a2f5khgb7X?R?mZS0~q(rQvn# zc_!V)o;r!EXyMZ6R^q9doTx68+j7+2-g+)C!0kvoF%72y1BH_2?S%WutXhektV4{>rfa zv69E}nkTTov-V}FTe(Y*>+!3<+GL$m?5E4uQpmu#xhq|{Y%V&(Qdi0M^g`#h}AzwDNPF{b6^+w^W#;rwq(Z0>~VUC7cOJ6qo z#%Up|EINtiQ*+Q<$Z>t%>CR!cd`-^wELBFY&;s9W+mWr2Z zvccb#;`*$80q?}zdvvvUCi8q~KF?_TuYY|r*O0EYVcmE?9iCk+(bV8G?0r?27wIYN z$+!(?tz^=JPNLAg%Uro(LVwbVyg#eohLqQ#&vLJ$rL}e~9Rs)kc&*M0d41Nwd*^Df zPj~DdyP7Z-oF%~ai*#FsGfG9Jd=t)@;RO8lE#H{67jRy8c#h4foPS0fd-+yNl65jT zgTJG01SGqmvD)Ao7vkPYhG?9%3a4?eK z`~vzLw=*!G%km@arCz*!p10yTqmait3>y?bp$`~uPHAU#t7k6KMmUQRTMytd(s`hl zLx9E16RfXtig-`&U3}`Yy+8G$RqTAm0zAAZcWGVLdTj4Ve}?rt{&zAf>h8XZedV^s z@Y-xQq-zq+eSA&Vl_Ip=gC2GUfafMXWH^>dM>~sj5%xlt2T2`qtB@Vn>(P^$-+pnp z{FdpT0$rV{B3&bUS?S7v+nxAxynRdP9$R}d+KGQj?mGMdTpCFPWt-=bMj+Yj8#k*Eo+I5&262 zzK*=B1@w^9JSrnqlSn78{OS3S@Jxz-IG-oPBjDLY)&RVra75<&^)HZzUXZscnOI-C zEB9K1XC3*Lnu)$LYC9zB(zDj=7fp3~>hd zl>RN#TY#Q0{#H9r-Du|{scAgl;pckPeg?JkFNMoO_Zr%$3qmXLy$-a0x@$&(e(Rl5 zGunNq^^q5)2wfh=obUy_BL{MC1870+1o*Sw(SZNmHRnpcF=c#^!lgr}z&(*}5uO+? zMmzu-3UcoPd4sv9NH?Kh4v&oI18-M!;86(Q07odl_q#3l4`C9|4QN|TUJ!oA$2^dY-h>#QPO#EWWqk{K+O$gKSy__$iO-CLHCuBAN$TOL=MRRNE1jx;g z5}YH-V{Lqg@?#=b2{ey9r?jy8QnbdtQizI=Bg)HIKx|+|Sex?%|?pO<+4Y3svoe=tqr@AOR zB3$D-9J;8rkGJOn4@DjG8TcIT3$8 zOfC$rdZ^C|>qOk^b@C{iCx@u};W$WVfOkDIIz!}|+HH%<(U8GT=sH8`t_^h7I>TZ{nE&A1ga?#0X}{*# z5Z$YF2R!4lM07FwJJqMG_PH0}`9Pm@WSs$LuqF<{Jo|L50W`yclZ&sGe)ZxbPXZq; z0xtla5A{#bM`B~3fhbo}92tVFJ0LcMfyqB$588xBr4dIo6>Sl>bY6JQxZkb2iii)B z_FWp`ZH9Xaa{fZCopeh`yKi$d*qa%^2^(90i94eAJS(@r+mII7c+~lSgB}zwX(!S0 z;^fK0hO(S*Ey|PjZS$$h*OKGwEAu(bsqTNJ1H8joJcFz})nP4Jq66id{boM5XagR~ zFR<77WUPbq;&J7@o+-C6fRzG)B?^bnFCO~{ya3j6NobR)AGOe4nQsX6L#OiET@!VJ z7bouCJc3N~SeTU_;v<~*6SW@`dW!atUgr+_sjUoSiw$6m(!wmxvst2R=!M<4YdBlIjyyV1 z9o6&tRJyC6&dA}#oA2e&HV}JhC4e3iK1bf`q8!*^eNo;|aTf58%Fcub<^Xn-G1BbT z0BGZF`4Mp!>6vAtrhI92xv8*$+(hTv9OMjT^?kf0>uZ3VJy4=j_Icd7)uSk1aQfyW zC)Jq@O>}3VQB0<`cs|JSu+H)m%DJ2$I_bVBt5|YF6<`-=M@^8$2Lx6DSEFn05rHw# zn{tosW*K-U=sf_30lZ>{@CCX#(3PgO*2f?j(|Zh`{p-TIO&VEeI177V`9UaerZ|GU zmF+9Y9%$!WfNuNJM!UYXH{p0Kj4R4$um)2P2$n@wqk~@S3)t_cPQ2P+dPj+^8S(iA zH2IQC-UmA^jIu-4(H%S7#PQ?}{Eq8too z$@O56XMi_eUiCV|@&I6%*a$Y&cU}vZl<;^IT@Qzte3$jcA(2lq`JTccwXrgOO8ju9 z92_KftSK*;Yg@+Kto`zl3x+YL{pbS5Li-2m!01~P&J=W*OC4y(`OptWuNH&{errTi z*F?U=|3I&Yc@SGv(X_Rr%^zftIPCMVG9`AG+be_kDet;dltDoE0+}lnZP#K?)Suw= zTeoAK0kd6$j$0d+=N&!e2Ri|_RPuZGA(M`wzlPw;ZDo8-e7EJfJg9s{UlqbJ%n9(M z|KCo#E4O!|zDaG9UUtFsnc#O3$2udvL(T5XQEs23g^Q@*%T(O9o|=5ReC_45`#oas zow@C3SkGDepm#ZwRx+Mq&fimpDGp*iInzr5OauP(ML4tbc55FT z&#m(iczP&*fxtTn9ViZkH48B4{7a~774+x)(H4?Fhlxf##EZ1rQ}&m82aO_bTMK^`3e%^Oi$ zWv<`Ovp5(k-`RC1i!U?3-s<-Ja6V-py4zgS58`3B_m06*Kz2B>?7o*6W6?02_MOfh zi8&gz?%F!HKO@|Oyz>Ne0XkEDVZNgo|Ghp)p$~aunYiNSIgcIeJIEi7zoTCx4{~W7 z=+W)TtH>`NbK6b-un$ZS`W>J{c&u+99A4?|%jRRd)*Z>(Q&*}{I{%INZoT~E zH;eS5a53tByEI5F8NPQLhxWOc0((m7?qzfgdwKRy>z~nB28SGcn+yvxwipOYuBzB* zCalwv;W8K}gLEo6bkPG-FC+3h+L0|?#wYe;1v)6|)E@Dt@I2pKvOVC-ANbb53~ktA7$j57zcpyY%i3C0=^T!adXD) zBHV}3HucPkU|TQuIsl^zwa1g#Bx0i{zN<2`Me9?v)uSD%HOK+21zrI>r z8RL9O8^li`mgy1sIDM8g7`(>hcmwT%=(}TZOX967&fHX_;2#%6y{F9Qz&o`SIhX51aM z6-n`ClKM~xo+8{vX{=PW2kRy={nUm8dv!-_NKw+KM*Vhjyu84eb=r>WxF_8vr6Y9Q zOd9xCvoFx?F}LTU-L`GB-#1uHcTe|@vozyVdl)-Ui%2xjYZDQ`^_@=pm2$=p%qrF^s>aJTN_PJN-C$!Y@Hr zNzTX`Gd;aHkYRtCV|)j21K~Q~y46V>3gSm2(L_6{PW3&K8=`-!QG2!!d(cT_s9pT*O+who~3}ShmkOAZAa(zlkf+7qb+0*gFl0@UJTR3167J2)as& z`LLQaf62j@JoYXs_Cw$fWg4P`lzEJjx4gLN{^%%6f?kWUdVz66J@}gfexhT%Koo7C zG-hZCjm=X1Ng;MI;-97VFz237dBTiA5Olr)+PwVbIgBlA!rZG#pow<-81gRDx2PDP zpJTkO8CSw=Tk+QI(-!!Ywax&1#I|@gy)dzDEgruY!(nGe3R;k z`P`G7hcmS7j@)+rf;=8&XCj*c?~xOh-DtD@@Sc0X-Z1)6u8Hd)Fct=$qu%2M#MaJ< z%y)6+qlc%6t^+a-z)&?x=CYnXx7>z%;f!U&yph}t@GVMZurkU7=%*EBXF@Ybj4s-z z9r~@MtHb=_`eTL2x7*OyneML#*h87#8CF)Uv-Uo;mgWTBm8|^1eCo-xwKHDZY+jWL zEccJZ&~uf-hgO`SokmpW?AbB2VM|F+PyRH}Dt; z61T-^7L8%^in$I;2hsMJLpvg~JvOYI+DwY$AkdipR`w6Z^yevbz0395tRqfY%n<`x zK;jqJUP(*_=5&F`Ul@NyaMvC;3Aj3GGky%T1?@IysGuEi8#WX&*IW=R z!S7-C0?A+PB@yO*cmai{9Bo&~HEZ?EIXq7ei&|PP42Uj;@;~~#PSiWHpSt`wT9oSj z*j=VDrhG#o`~qtav`KzINSe34OhV_=Y%V%M`vm%vdZ{<%!BZHUh>b6z?25V#=uJa~ z(ql?f;dh#wK-L9vFO4a~_WL3dW;gVZP4tztjK@b}Q$UG#U9CIfyKc<}r zJh`;6Y#9t=f0SS(4@J%fWyj|&__#W`KuEzAP*xp7v_(Q zqt427dVt?7qY>$cyF_&==Lme5bmR`>_w^Kc-^!7&#s=7Dazq>RFGi?`%P*rj=!`b| zymb3@4rd9noxT5JoaXW?nUnz2EH)=@@n~lIofi`3zCG|W-JE8HmRA;Q$thvw6UNsV z{^)|O-)VoF39wG~yv1x}tvup6(MxC?9XZ?PiA-V(1mFDveNq7L0MqJiDn|TJAWJCu zh5!$g*0r0d2O&R(z>FPt>^U(k-^JzQRqm{KV>34;W5#h)8^t!{6?5JJ^n~qkSb3$v z+WYWwq7!x!#BM*Jd7j=n5AiF;by|Oe%jJyEqrDC7|G=xq9WfRUq;H&ikk*ksR+VWW(wmIe(r1@P4tIk+$ zpa~;dpNIVJ%GY8t%Tysbj6}Z2wT>}Qtc|kF9p*Qfws^EJvU)zm#|ktCWIPKVvh6#h zMP*WJ2H}|`( zu9vMZqeMHGn0jWHLV26W(AGQ*y?&+ zx#Am6LdAsIe0fgaq{ic;ozI0h&$wXs$%Kl-_VdZpnACyTpKTnQpRzj8L6xO`E zcSpSSO0Ze>v=c9S$!}tuGq+P}E5rT`wF|RY>;dn`7GF;7f_Qcrh95)ztnU|pXQMq> zf5j_C+R@i*)pv2ly9=>@V(j}9(5#UaBTnpfwm5sB_2yYqxmJjSx9l`l8|#_Sk6kCW z#?!&h9#rQ45q~XZ217e@{L8G0FQHzQp_f!)!{GZwWIEMhSXPFKM|f#*Fc>R~vzX-pG zn(;}u>*c3=?^WRu>z4)9KH_?%H0XlwORqIDhu z{j_2`)M0oWzG=(ca^8c_zVEO;6Og|akpJMb&b`R}gt1NDhWH@xO&h#eax3~l$|JgF zzx=yH{u!m?tUlDG1xwT)z`kcztJ|?EkJtiVSjGz&j5JS3Y*d2OIDet`AClMp!t5Q~ z@9-k@XWD`QzR=DwE96)_jQu%{<;>=;tLx^r$AtZlQ~0gIKFGxGremGSfcPn|_N5@( zsI_N(&#`>#1axk5Q8-f`&qi$UEdq1rgx;#42dlMbR&O$jF$`mjmndYhHV(jh9BAX^ zbke@-8%$P9Q5!#v^P^{F)@mUAlG!_{gcE$G5|XNXxjHz%%Kj2SK2<<4?Xcku&)q! z%Bj@$PV!=%`QJEX*iKt zSk9H1V;1t#u-%nKLip}Z z*QE)2U<+{MK(B1OcEMvMf&Mare}HGqM>4R}4qKfZ0#}yZ8s*!AJ;7GbM#$6d`S5be zKN(M_`)t$YH&40W9*pd};+u-G*uiX2N02%9lCKOmxwJXMd1@LuKe--xi z3F{wXex_MZ+0Cmqj)AENx&I_5B2iA@9Ueh-Ld|(ygyq%Z8CYZZ<=>I`(E+h3ZnA$E zFS+Q@xW6~rKg`9rA~yYi{j=s(UuXZUF}8j$O(3lA2~QTzW0_6f_Z;`&ZX1inR925U z64u(V`my2@7=GILu8EV4jmB$Q{jl*Ycs|^xW0SADK6NEFp^0H?tC)4_n63SV)t3OB zv#Gb)9TTkqy8}?DEo9S4t@}m1?i#h?sYxs~(Lb2|;ws7Bv&VjBQ&05H)zqTMYft5g zU+|IC2fi2)zTurOiMhGxPtNr>vJLpx`Pi_oR5{}v$L1+tklZ7)#>=JsjBN1;tX@0t zpRyT`p3f5fQzG@Xd2JYkpN(w*K5HmX+IM>3ofT@`@-zF$1lKgL$y_h+Q&LwE@ax1s zHz{t5xe#-c5I0EuaQIAe0^#g+WsyRG@6jQC4#Xq-eY6IcOlI=GNwaes#^(FPffnLczHq==fyS~sxh`J6mSc!oJ^K-_9Ta=} zxKXX5eXw<)kJO5(1-KUC9tiFTbs>@eiSel>Oj>QMX9s(Qc<-ti2g+j_$=zd}1m?Oq;LL+7}flJQYFSCUx7hc;8aaF!OA)q~?1L`sm@^b}e>it-P>eQ2g$& zDqm!6bw8>+7ZzmIyUbM$`ZZ8i-h!Rq=N!s>AA;&`Qa$@|vsx?_wl6+11oT&p0WD+p z#A;89i+9uY;4HgBKBjqhyqSwk^*ymB2F=52p21(mTfi6EVvGRjdF^;^Ozi`<++5)KB<5T6 zGm-T(T-rjet}mWc%QYf~CW%wfxSPiZUy*2=TsqDIyPx-`HU+8D6b6v$X0ud&#n)?K?Nk$n*E9NRWr zCG7hVShs-f1&NCbbH`%5Now%WI-I(htIp$&T4-B|H!<&)=uF7RfG0=keZDE+SpX~B zs_W*ves~va@tAj}`{jjOYYCy(G-$mgx(4BXBI_PC7XQKT_M-Q8R>{7YH9<%}z+dS8 zL}@G>@f8EUlf3O2yT2$#;_tZMS*TM2zX9HnydYXj1Z^TLMhy44b*uD9z0!>5yNGu& zn9qXLe=uV#H@9tj%MF;TZ$I~-`=vTq(<9zo=`JLGe-^pRl;2;=~+u#hWg@f5MG zgRTkf?X=O6*O>Ib^XJKxKWMvu>JYEU;uX#N2|R0k)oEV)g49(+n;+7()ngb|t?Rh@ z-3#uTRwjZylc0<_1Ssf z+wkvs?ics-Y%VwOeEG6-&H?%^+h0EKHTRFhjc>hg>)i^iDO&c4ePXrOXl+ldwYLyz z0qQizJJ5xO3!l`rCPSMMXqv9Z?@a?(!PhSnV8 zca*bQOVn>n? zy}b6A>%I<$?WJsBp7!c}nY`gi0o|C`$P$EyK2mu%cFlCq5rb8r?a5dN@2=ANr|XY* zF48bqha3vVn_{iyOpo0$)Tgk@@;v0rriQvcyQ_KJV)u?Vm>%$r(Evf;9Itb)iDkdH zY^s2Bi8c0w@9mh{a+%NIGQGeWd zd#Dp#gWdIuHLy^oMV~#*_FmZgt(y7gmkQGpEAgz4U4`CNY5Kvl zm;|lCS7U$Fq!WqQZuyBzz^DeEs!pPcDJ|KL)Mr_UFcAoiKHrC0- zn*L?9-GWRHG_P5nNO$R5MuP&@r=u?Oh_-`9d^(nMm@lml)Ov_}z5UM{b0SGi29j^h z&e3sColQn!zB7R@RA08dH<({e&N0AFVYUgA@62;lEw~l!bJUk@)v|ro-vXvF)`$Dg zm#mY|KlI&f0GG7c3ze4C)mBVeNrbVpq`!B?rrPZ ziSxapF=pQy(bP4uMRHzZqZefUcD)(zfe7jUw&bHW=(1%~Ufbkuk=0>H-itbRt=cB{ zt|%9+8jo$sig(RCwi<*NTJ`do>>;*6*jhQp#?7mFOb>n@JNtLs)g?T$>`}CiWf|k) z>QY>PYBGGba@Ku#h}Z|vCC6AMtrg}Z(xsK-nM6FQ33TwAH6HJKY`5=SAs%1ba`lHc zdT_9{iLr#W5Hcmfu z^-A+G9c9VFWtyDJruTe!*TXN{YRh@clcySFPj?krLuTa{mmB>oy`{$&+DlY1WF%$kWJsl|%*0p%(6 zImWEJz2X!`i;FV9H?UEUR&QYL>2|&Xe3{ke!#L<+(?DGYWSPFaI6+x*jQSmoVFXct;B*?>rQat*`Y48SeN;&>-(=MM`VOL0u^(tZQp?))bsbO z4M1y1o3a@#kp}VyU!X9vcfCN3V!>(#E+Br@!z=M zjp5_4FWxoHW4^4~6L}r&Qxq;O8P%jQ+q@S-sImWO@%-mN+Yzr7i!xDbkeY*B-RnHQ zdQ7!9&Dg`cADs6Zg!E(itbZS3tDJ{a*%NAunWYGWX>fXxoUsz4Ny*c*PM2_i3~KND|ZzLIMNjE*x9SQ3cS~FxU1l` z?<(-w_aE)90?+%JcK@yd&wG0I<*owHJzw_@C}I7Fy9y5e1jd7NmRu_2jTgv$#8@XQ zHM3|w$=_tT;}Z37#HcP-N>+h>ovmx1oYI@{=5v*k0HdGRLS z&t2sj+2?d6+Msz&Rvw`vw+Z*xvK7>#&0GWRa)p0x*bYWYPU>qo1m< zJg7dx-Cc(J{b-&Qz{3dhA%)zjbR*g;*P|7lZ-qI@!27F?dC@gvEg|b&SWmxMsyA|c zOqR12>pADi@`1^mobOk2S2ui(Vmrs&S>N{ksb_PUYU8{bWDq zY_r;IhhiFDu5ld%z*DNBZhEH4hlruNsTaI)ZEO`Ci!3M4GX3jJSKvHX6iZ z#x0z**96>B{YAigM~w7~JwEy%&pUYO8`WOktd6&{7V2|CXJKdO2E`Lg4+bD#?jqJXD4lIu$0mc?hJokjV@SwpUdwk3}mav|)6 z(NgW?Nw`BjsFv)SwQ0O-ylz&9$h%KbPO)nIHB6q<=r=3%Z0>^Fd1S$EDcXsMto{ye4!c;jR*#*FHXLXDBW9zkSoWiAu3pQ=ZmQf?n9sdPSnJi>4u>_xoHn#_ zrOC&%Y<=D~IGmH~ebM$Pv`c&15gq$esx+>0_3SiPbsUR_k0$1U-bGF;ygmzxG+dRcN``M>+4VX-wou$~0 zuEQ&q_f_i6tXoS;%q{M1L$7eunenN)W9h*{t_4{q*3oFyh)xm1Gk^6u60q)qsQU-j zSh424UfrGCg=GUg_lslm)-~V8Zt2K%FTX6k=ZEWo>(!p=+3)vx#n^YpxcgU^!K^*7 z);{mY-6s})ZCEFvC(;;Z3lr?`=k|I5Tc}R}xXpE}5wABu@wk7Gxo!B&>*(0|7?Z)7 zJ>2Ah{SK{>&FpoR>6T;VZTN+;G~4HaP3+^$v*wrukMH7xanJJ=eN?VGCe^*-g{0nD zg3TuvSaY86v-RWytnv0{{wde`_K_#zyjO|!^1#g>-8bdhueaxo0$ej+nC!R{?2u!2 zvh5mlThIwHCrYGw8^&+=^_|(P7;?Y5d0VNeQ>QWYR-XN!IcQ@IreS3kaBtW|!8*)? zB;IRkyEhEs2+rgQPu!`~R3! zf1SG>NA5T8J(Md%yk4^&qOFfZEcqe!#FF1Pk4;>Uw=anke2uu0+O18`TUK92j3s%6 z7(?4!4*dF+`Sr5>e}h;N8|=M9yoe(XaM$a@1k;B-;p1UqF}D&|eW(p{(A$^j?V;_s z+sm`qqP`vwU%c0GqT)IZbzfe&?n}_#|5$pvhrF||@uC(T+1s3z>N@&+z&;$}Mh`x0 zOWxi*erdg&5dV0h^p@{SQ!ZK!o2??)MsKSFyX80}+dK}r9j~0*5w!QOU$4b(AA9|p zEdg;u`($r-#1`&Hp2xD7t;daHEDv_~gWcV%3BO@1(NyDkw~86r_(63gAd7* zB>a7g4VW2IX#!K(!Xn{c#QeJ_|Niq+Byu#A2I|r8k)y$As7*%`ZP=AZ6Ln~0X=2CP zt|U($a&pWT&=fHO0R#<7=AHQ8Q&qj7u@V3m(f5!KTF_fnbyan34W1m!ri90lz`;{! zMa&_;@yMG5{9F+iRv1lg5t%(PW=ZNsVVW>Ez4z0-IP%1vKaQhBVX0i>GFTdw|p{lotEe|%Ha|8IVH{br;8SMiZb$NAkkjQxw--?*FZWPhIV zlzA*=JI-H|XcGS_Pl1nq=s91VVG@m<=OpFNe|l!-InpX2>td7y^xOOHyJyaK&NWXS zK#!kEu5&y-^g}M3j0>G1JZ6sIsS^$17j+lAFcydZMYtnAW`${>W$zjPLV$SO4Oqe* z_$fqjIsPRDWhOF2l|Ccj@bjH>#nVX=3MUrkxZRMv`su*CvU%*zW z?>Y%*UK9pX=dZthJSdUzr}DC(WD^0Hf1KR%B;+Ylg@yi*i?njlT{TqCa5M6Sv%4 zW(gZRaT3KiiJ$r`@c$1m1{%@BDq84eUr>*O!meE6!Q5=8PFGy<(E2m2l}AC7w!L@o;)G?9q@IAP_Gmb5U^5G5~Y zfrCtBc3|BDpcV?ij?+M;TE5AkLo_WO`rGxz`ECx7H2NFZ`Y$xazphL){V?UpkO3c7 zpjMW|>It{UN;ljMZhqyFi0whx!P@j8ckW}c?C_M zBQGEWz#=gy0UoA=>TZ?798N-ss^pK)74yA-H7ohj`L{C(CBt~YS63WN3GaV2KLeZn z+3t}Y1`DQt10P-!*=O@2_A9gEfTbyON1BlaMmU(~`3N5<3e9;++4$5b)i4UDh8mwp z4?;7H^C5-(`PT$67ZyIwpMQ29_IH2yBlumdSPMbl&I4M_X!$;Gt9b4(*QF#lr{E9a zeu46dBOs-4Kov?}M9rF?uLJaEzG}ctb0y3ty7eFbECD?DExJ8rw>%gqo{}0fz(>+r zq4Qpd$o0`nv^D5JEj7?0CpY-f4+3-6GC3bEGtjf5vJ8kX65q{s`xml97#y&0G!1RY zfO4o?fnf&2C>oH>fwMNj0%K@7fZ-AROd5IM+_Ge_gJVORp@1JVFn`{HPFosSSQB9d zafM?V<|+dHVMqfXSTNycn}>owUjEP`s~2$*K2HHzUzsr2cIQ6;R0@rq z64fF(gIXWuj7U;G z?}lH%!#j||3_oJnr$iD%NT&qVEOZM!=R{npil@Zcy`0xL?!hfx0YGCy6=^ zaHB;G28Af;Y;!OTjHiVLmt_&)3Df~SvzCUY8nsfl%474q*sFYa#*vbC(t{#1e~hvh ziVBEVnt-|*@Q3A?r}jzJ#%2+#D0n=GiW=HnOE|tzyP{9!!_RfJJ+15looQBpa_M5?T+S-_x=d9Hm@hI?I4|f%pTcEd!(^WaESf9M*WCA$Vl4&uo<9M9Q%UerHVHP=MnhyJ#~XL!7UTMiwlA;4Tt3*LeTa*IF<&@?Hp1y zQ5m~SbATg9gz}-0!Cj=@J8U5uBDqxDZAsM2@8jGQG)Prb&onnv?w#&dqS`Nhz!80% z5%2=RM)T;N%g|#JEsjw|xM*1%5b=r}?1x}SFs~QV1jh}6f$-I!p6^s2rWjZ~uQ_Zx zsB9rauw+%-^C_xG1PL3Fc~a(w8tn$6sME~3K`xMkL(V;|R{SvI595^Rm{}q1pj0)+ zz7Rup3)=$f2zy#;>mtT#jx4sgqD_#5nYj(J+YC-Db}w%i4-xzKX&UbjikUsIC5SZd zZ*DI4XUc0AbgfnEqOhieeehNp57KHtc(BmLGSN|aB$JSMOJ*IpPpL>?m0y^T;Y{F# z>j~Jb94#nJB=VQiZB`*PZ<6GZ%@PB4*m4qrhLSK0{Q!<69E34T!oo0wa~37YsKe;M z!IB|yu(x+_{DfUU+Vdh;?14z26)pB2qvSq_m?vZj5Bzu)_(Sea-GJ|*8~Q39F~NJ# zUqX2$iBr7;xh@TRFc?Nb5ItUT4~$DUwfrVv7$UdKl9C^bHYlZr#VDEt7^K0m#9+=3 zU%o)Qnxzj@6#%J0E8nRda}7pO7$w>-Bx5akP{*A#Zk~(GMdYN3rl8t_0Q27zGtXGa zbnSzq1xPi1R)?ldqi#2Fi~`e-V?l>_nnXdiYnCF+Bb=I15?3_EgtX`8Qwjx`8t}_H zHQ@LGZNmrfn3xWqStv<<6uCTrapMbTF9!8RnNY+ia#$RrmmTTjlOjpCd?7Tm2J%wy`VlNB2wXr z(A6watl|%(t3O?x%62%ol3t2T&R!EcrM9&nq%;?9|h|C3~Z?v^K&abscRU>8CF=1$na3!c*2KN zxf9vEoU(gPTHQsb42GjYqvL>=FjX%$L>TH~;Yr${w&EoEG6jw*i7V~mCAJd7Nvi8& zYZ^tzQgX2W`p5s?dWjo+hiWW|CU>KS+N%=8q((LC)&?AteoEOk8cg6XZ#|Gdq+Jzs z@S`!-!?6I}eN4t%ORJ>VkUyfa8+t6s1*$36o}U;r)tw(^=i6`5?Q@lI#K_|Vn9<}S zJorq;;y!;)$MNUbh|p&k@frK8`2SaiNds%y_T2ztVm!&fJXF6hGUVIA%qM~C~H%dvS6oL0?J+B{eaS=s} zIvQJDW}PyLU0#wo!F1fHN4fOsEg$)+peR>;Ljx$9kEW3d2dQcz6#;@ps23Kd@+6(s zM_sVnT)~#?plixFUCL9dVWJz;ugs38*G^71wY4=n;Sq=cgJ%>wH5m$hx(s*1{hfwAh2=y6SSz_jOT7h-p%is-D+xx(0|`D9F1B0gp@;{E$QpYD(y_!WG9KLKnH z9RV8-4wc=eQd{;kI0O3mK$izRPo&;}^E4nT;p{~$c0d(Hf>Q?0R8?=me_PTaX- zR#?6r1r-ip1f{CC=A{`zS!0Gni{2CE1v2*Ss{#H$7I1Yb-fFF4$~9YERZVe*vdTeX zDUzod-3tD<eMSF zrHpC_B(J7VbA?ih56}$*ErdI-!{$m*7Xh$N=GW8=sMbXWC`&LbO;HvXnyoNPLfB7n zs)V16rDM1+dK8W~1s0$;wO~dL)nH^_Uq&M+d+PwW=-|sI_`7(sOKQ4tl!ARlsXf&| zs%<5y)V5mjtX%ceQ7e{aC~L(-%?@}S1PD0B+H9=n43)OI<6mTuAeT)26hn9PT2w~$ zGW zZ3#n7sMnoc^DD)~Afm2##Kl0p80;E6H!Lua=x znp7~N<2ZN^bHOrwlFVhgj3vA^(InYef1~k=-%UUfVYW&|(;Rk(VSv=i-tsT>#y#!h zA`ZlXy)wCF42Y-eY7(HS{+LnxMR7q1S{`_&dsx(0VuiU0eSnupAhF9f^@^mRhL7P5uPWc!#7DKwsc}=W*+P7-A zjDygt*WF%K&Gqo#6eLV&gHQ!)sqT&5ih)?Ek|7-BCuFiyhE?RzoCs~j8`s~n2!;Ai zakSx}LgzAvJN6;7W1m1f`LhGh68mhCXUVE%%epf>^HT8wgJ~r|mSr857Mf`t zmW`2~ZuP=Sl3SG{FQyc^t<86#Dv&!GdU9Arn9U7**zpfD!fXJpG`7!JTns}fvdW2` z3+Kae5BZSrZEI+1g7B)fMTzy1>iSa+!ac$*MLeb7KQFFLSJ3Ppt#PiueI`3!QpI<5 z0dQ7lt_ov$Xl}d9Fw>{2)BYIeL1=y_*k#MY^t!V20lky4@M;OI0jNpdz0>cplIW>R zQ~gntQ`eOPVq5e3ArOkH`fM!9hK(5VR2`)%>es0xqzJ5Bt*+Esw=VANk;^XYz>%}h zJY|$7+yoxx2t3Raa@YhLI?;FTFvGVVVEC3p3!9*V__o6dn?OPzLTy3_%a)`k3LdN= zY|tfOFn_3E_T8{m-3#k^C#HTQ$JO_UWR&kpWMRb83H)>;1CR zr7CN(Yg$83CRgk>S)BL}K-Jv$B)qg#P@ijCt+yh(t<}*xF(b>q$q}%Oe7il@FZW8P zGKfGRgF^L(Q#zUGsMdzf z#meYJB+}e>`78n8u*3}_!mT)jvb7dz<)`^1qw7xp0+pD5AhWHcc9)Q&Z6w!O0e1=3K`!p_d)YXsKzyZ< zJ6Zs#B}~(7 z+Gwjr>a6=kpc24Oa1p2o!_sd|>V?|hoHRn%Qxz@Y#%yO*^vPV5?W>CP3~Q!}G*}x| z)JUCgMHLxfgO++)T)`*GbNj>7zk>zY^pZxEq!&6OiYAw(`Hv*A1BTTDR zDzL0;3f*p99GTk*y>4IV;T5UnDxm2F)C)_y=0VtY^@=rVKHdDb!(9u5MT^wbQjrr4 zNh#4HBbA>{=cE=>{jO(SZWX*^_~P%>^byRSZw4t(u^wi48Lo{T-b|h~ zH^eI-UcDt=24WSOsO9@XDnxN(jBoY2m($-2-x%N<1H5E_&s+T1xpMP}^{?GLVozdX zTk9{#zP4t3I^)_#YhKIRnrl&JwKe6^3#g7*`x2_7zF+w~cWG;PS>s7MhqUn|ePVe7 z2o^4JFy}hR9HO>3se{=TFLy9_`H}~VbdWt{$-b33{i-ZM|%oQp9>5b+VSx8V%M)@ibEBTZz>efS**~tSC~W7wV#E*57uqQxEgyWmaat z*lTSR$!rpROEydn@Tb%&HXtj>IQ6k)a#FXhwv5RG&Zl11)1EPaZ4}WA`g}7sO$PE4 m>z`HGHD;-9nx~&_^Ix0K=Ck>1KAX=s`}q&T+%D|^hy(y 0 { + k8s.NewKubeConfigMap(n.chart, S(fmt.Sprintf("%s-configmap", podName)), &k8s.KubeConfigMapProps{ + Metadata: &k8s.ObjectMeta{ + Name: S(fmt.Sprintf("%s-configmap", podName)), + Namespace: namespace, + }, + Data: &podConfig.ConfigMap, + }) + } + + // Create Secrets if provided + if len(podConfig.Secrets) > 0 { + k8s.NewKubeSecret(n.chart, S(fmt.Sprintf("%s-secret", podName)), &k8s.KubeSecretProps{ + Metadata: &k8s.ObjectMeta{ + Name: S(fmt.Sprintf("%s-secret", podName)), + Namespace: namespace, + }, + StringData: &podConfig.Secrets, + }) + } + + // Define volumes and volume mounts + var volumes []*k8s.Volume + var volumeMounts []*k8s.VolumeMount + + // Prepare ConfigMap volumes + idx := 0 + for _, fileName := range SortedKeys(podConfig.ConfigMapMountPath) { + mountPath := podConfig.ConfigMapMountPath[fileName] + volumes = append(volumes, &k8s.Volume{ + Name: S(fmt.Sprintf("%s-configmap-volume-%d", podName, idx)), + ConfigMap: &k8s.ConfigMapVolumeSource{ + Name: S(fmt.Sprintf("%s-configmap", podName)), + Items: &[]*k8s.KeyToPath{ + { + Key: S(fileName), + Path: S(fileName), + }, + }, + }, + }) + volumeMounts = append(volumeMounts, &k8s.VolumeMount{ + Name: S(fmt.Sprintf("%s-configmap-volume-%d", podName, idx)), + MountPath: mountPath, + SubPath: S(fileName), + }) + idx++ + } + + // Prepare secrets volumes + idx = 0 + for _, fileName := range SortedKeys(podConfig.SecretsMountPath) { + mountPath := podConfig.SecretsMountPath[fileName] + volumes = append(volumes, &k8s.Volume{ + Name: S(fmt.Sprintf("%s-secret-volume-%d", podName, idx)), + Secret: &k8s.SecretVolumeSource{ + SecretName: S(fmt.Sprintf("%s-secret", podName)), + Items: &[]*k8s.KeyToPath{ + { + Key: S(fileName), + Path: S(fileName), + }, + }, + }, + }) + volumeMounts = append(volumeMounts, &k8s.VolumeMount{ + Name: S(fmt.Sprintf("%s-secret-volume-%d", podName, idx)), + MountPath: mountPath, + SubPath: S(fileName), + }) + idx++ + } + + // Parse port mappings for the container + var containerPorts []*k8s.ContainerPort + for i, portMapping := range podConfig.Ports { + parts := strings.Split(portMapping, ":") + if len(parts) != 2 { + return fmt.Errorf("invalid port mapping: %s, should be \"$svc_port:$container_port\"", portMapping) + } + + containerPort, err := strconv.ParseFloat(parts[1], 64) + if err != nil { + return fmt.Errorf("invalid container port number: %s", parts[1]) + } + + containerPorts = append(containerPorts, &k8s.ContainerPort{ + Name: S(fmt.Sprintf("port-%d", i)), + // Use HostPort here to enable node exposed port + ContainerPort: &containerPort, + }) + } + + container := &k8s.Container{ + Name: S(fmt.Sprintf("%s-container", podName)), + Image: podConfig.Image, + Env: podConfig.Env, + Ports: &containerPorts, + Resources: &k8s.ResourceRequirements{Limits: &podConfig.Limits, Requests: &podConfig.Requests}, + VolumeMounts: &volumeMounts, + SecurityContext: podConfig.ContainerSecurityContext, + ReadinessProbe: podConfig.ReadinessProbe, + } + + // Transform container command + if podConfig.Command != nil { + cmds := strings.Split(*podConfig.Command, " ") + L.Info().Msg(fmt.Sprintf("commands: %s", strings.Join(cmds, " "))) + command := make([]*string, 0) + for _, cmd := range cmds { + command = append(command, S(cmd)) + } + container.Command = &command + L.Debug().Str("Cmd", *podConfig.Command).Msg("Container command") + } + + // Override replicas + replicas := I(1) + if podConfig.Replicas != nil { + replicas = podConfig.Replicas + } + + // Create Deployment or StatefulSet if any volume claim is present + if len(podConfig.VolumeClaimTemplates) > 0 || podConfig.StatefulSet { + k8s.NewKubeStatefulSet(n.chart, S(fmt.Sprintf("%s-statefulset", podName)), &k8s.KubeStatefulSetProps{ + Metadata: &k8s.ObjectMeta{ + Name: S(fmt.Sprintf("%s-statefulset", podName)), + Namespace: namespace, + }, + Spec: &k8s.StatefulSetSpec{ + ServiceName: S(fmt.Sprintf("%s-svc", podName)), + Replicas: replicas, + Selector: &k8s.LabelSelector{ + MatchLabels: &labels, + }, + Template: &k8s.PodTemplateSpec{ + Metadata: &k8s.ObjectMeta{ + Name: S(fmt.Sprintf("%s-pp", podName)), + Labels: &labels, + Annotations: &annotations, + Namespace: namespace, + }, + Spec: &k8s.PodSpec{ + SecurityContext: podConfig.PodSecurityContext, + Containers: &[]*k8s.Container{container}, + Volumes: &volumes, + }, + }, + VolumeClaimTemplates: &podConfig.VolumeClaimTemplates, + }, + }) + } else { + k8s.NewKubeDeployment(n.chart, S(fmt.Sprintf("%s-deployment", podName)), &k8s.KubeDeploymentProps{ + Metadata: &k8s.ObjectMeta{ + Name: S(fmt.Sprintf("%s-deployment", podName)), + Namespace: namespace, + }, + Spec: &k8s.DeploymentSpec{ + Replicas: podConfig.Replicas, + Selector: &k8s.LabelSelector{ + MatchLabels: &labels, + }, + Template: &k8s.PodTemplateSpec{ + Metadata: &k8s.ObjectMeta{ + Labels: &labels, + Annotations: &annotations, + Namespace: namespace, + }, + Spec: &k8s.PodSpec{ + SecurityContext: podConfig.PodSecurityContext, + Containers: &[]*k8s.Container{container}, + Volumes: &volumes, + }, + }, + }, + }) + } + + // Parse port mappings for the service + var servicePorts []*k8s.ServicePort + for i, portMapping := range podConfig.Ports { + parts := strings.Split(portMapping, ":") + if len(parts) != 2 { + log.Fatalf("Invalid port mapping: %s", portMapping) + } + + port, err := strconv.ParseFloat(parts[0], 64) + if err != nil { + log.Fatalf("Invalid port number: %s", parts[0]) + } + + containerPort, err := strconv.ParseFloat(parts[1], 64) + if err != nil { + log.Fatalf("Invalid container port number: %s", parts[1]) + } + + servicePorts = append(servicePorts, &k8s.ServicePort{ + Name: S(fmt.Sprintf("port-%d", i)), + Port: &port, + TargetPort: k8s.IntOrString_FromNumber(&containerPort), + }) + } + + if len(servicePorts) > 0 { + // Create the KubeService with the parsed ports + k8s.NewKubeService(n.chart, S(fmt.Sprintf("%s-svc", podName)), &k8s.KubeServiceProps{ + Metadata: &k8s.ObjectMeta{ + Name: S(fmt.Sprintf("%s-svc", podName)), + Namespace: namespace, + }, + Spec: &k8s.ServiceSpec{ + Type: S("LoadBalancer"), + Ports: &servicePorts, + Selector: &labels, + }, + }) + } + } + yaml := n.app.SynthYaml() + L.Info().Msg(*yaml) + n.manifest = yaml + return nil +} + +func (n *Pods) apply() error { + if n.manifest == nil { + return fmt.Errorf("manifest is not generated. Call Generate() first") + } + tmpFile := "pods.tmp.yml" + err := os.WriteFile(tmpFile, []byte(*n.manifest), 0600) + if err != nil { + return fmt.Errorf("failed to write manifest to file: %v", err) + } + cmd := exec.Command("kubectl", "apply", "-f", tmpFile, "--wait=true") + output, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("failed to apply manifest: %v\nOutput: %s", err, string(output)) + } + L.Info().Msg("Manifest applied successfully:") + L.Info().Msg(string(output)) + return nil +} + +// Apply runs "kubectl apply" with custom readiness assertions +func (n *Pods) Apply() error { + if err := n.Generate(); err != nil { + return err + } + if err := n.apply(); err != nil { + return err + } + _, err := n.WaitForAllPodsReady(context.Background(), 3*time.Minute) + return err +} + +func (n *Pods) ResetPodsConfig() { + n.cfg.Pods = make([]*PodConfig, 0) +} + +// Manifest returns current generated YAML manifest +func (n *Pods) Manifest() *string { + return n.manifest +} + +func ApplyFlag() bool { return os.Getenv("APPLY") == "true" } diff --git a/pods/pods_test.go b/pods/pods_test.go new file mode 100644 index 000000000..f48538f0e --- /dev/null +++ b/pods/pods_test.go @@ -0,0 +1,268 @@ +package pods_test + +import ( + "context" + "os" + "testing" + + "github.com/gkampitakis/go-snaps/snaps" + p "github.com/smartcontractkit/pods" + "github.com/stretchr/testify/require" +) + +func Apply() bool { return os.Getenv("APPLY") == "true" } + +func defaultNoErr(t *testing.T, _ *p.Pods, err error) { require.NoError(t, err) } + +func onePod(t *testing.T, p *p.Pods, err error) { + require.NoError(t, err) + pods, err := p.GetPods(context.Background()) + require.NoError(t, err) + require.Len(t, pods.Items, 1) +} + +func TestPods(t *testing.T) { + tests := []struct { + name string + props *p.Config + skipCI bool + validateManifest func(t *testing.T, p *p.Pods, err error) + validateDeployment func(t *testing.T, p *p.Pods, err error) + }{ + { + name: "test-single-pod", + props: &p.Config{ + Namespace: p.S("test-single-pod"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: onePod, + }, + { + name: "test-command", + props: &p.Config{ + Namespace: p.S("test-command"), + Pods: []*p.PodConfig{ + { + Name: p.S("anvil"), + Labels: map[string]string{"chain.link/component": "cl"}, + Annotations: map[string]string{"custom-annotation": "custom"}, + Image: p.S("ghcr.io/foundry-rs/foundry"), + Ports: []string{"8545:8545"}, + Command: p.S("anvil --host=0.0.0.0 -b=1"), + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: onePod, + }, + { + name: "test-instances", + props: &p.Config{ + Namespace: p.S("test-instances"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + Replicas: p.I(2), + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: func(t *testing.T, p *p.Pods, err error) { + require.NoError(t, err) + pods, err := p.GetPods(context.Background()) + require.NoError(t, err) + require.Len(t, pods.Items, 2) + }, + }, + { + name: "test-multiple-pods", + props: &p.Config{ + Namespace: p.S("test-multiple-pods"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + }, + { + Name: p.S("test-pod-2"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: func(t *testing.T, p *p.Pods, err error) { + require.NoError(t, err) + pods, err := p.GetPods(context.Background()) + require.NoError(t, err) + require.Len(t, pods.Items, 2) + }, + }, + { + name: "test-custom-resources", + props: &p.Config{ + Namespace: p.S("test-custom-resources"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + Requests: p.Resources("250m", "1Gi"), + Limits: p.Resources("500m", "2Gi"), + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: onePod, + }, + { + name: "test-invalid-ports", + props: &p.Config{ + Namespace: p.S("test-invalid-ports"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80"}, + }, + }, + }, + validateManifest: func(t *testing.T, p *p.Pods, err error) { + require.Contains(t, err.Error(), "invalid port mapping") + }, + }, + { + name: "test-configmaps", + props: &p.Config{ + Namespace: p.S("test-configmaps"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + ConfigMap: map[string]*string{ + "config.toml": p.S(`test`), + "config2.toml": p.S(`test`), + }, + ConfigMapMountPath: map[string]*string{ + "config.toml": p.S("/config.toml"), + "config2.toml": p.S("/config2.toml"), + }, + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: func(t *testing.T, p *p.Pods, err error) { + onePod(t, p, err) + cms, err := p.GetConfigMaps(context.Background()) + require.NoError(t, err) + require.Equal(t, 2, len(cms)) + require.Equal(t, `test`, cms["test-pod-1-configmap"]["config.toml"]) + require.Equal(t, `test`, cms["test-pod-1-configmap"]["config2.toml"]) + }, + }, + { + name: "test-secrets", + props: &p.Config{ + Namespace: p.S("test-secrets"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + Secrets: map[string]*string{ + "secret.toml": p.S(`test`), + "secret2.toml": p.S(`test`), + }, + SecretsMountPath: map[string]*string{ + "secret.toml": p.S("/secret.toml"), + "secret2.toml": p.S("/secret2.toml"), + }, + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: func(t *testing.T, p *p.Pods, err error) { + onePod(t, p, err) + secrets, err := p.GetSecrets(context.Background()) + require.NoError(t, err) + require.Equal(t, 1, len(secrets)) + require.Equal(t, []byte(`test`), secrets["test-pod-1-secret"]["secret.toml"]) + require.Equal(t, []byte(`test`), secrets["test-pod-1-secret"]["secret2.toml"]) + }, + }, + { + name: "test-volumes", + skipCI: true, + props: &p.Config{ + Namespace: p.S("test-volumes"), + Pods: []*p.PodConfig{p.PostgreSQL("pg-x", "postgres:15", p.ResourcesSmall(), p.ResourcesSmall(), p.S("1Gi"))}, + }, + validateManifest: defaultNoErr, + validateDeployment: func(t *testing.T, p *p.Pods, err error) { + onePod(t, p, err) + volumes, err := p.GetPersistentVolumes(context.Background()) + require.NoError(t, err) + require.Len(t, volumes, 1) + }, + }, + { + name: "test-services", + props: &p.Config{ + Namespace: p.S("test-services"), + Pods: []*p.PodConfig{ + { + Name: p.S("test-pod-1"), + Image: p.S("nginx:latest"), + Ports: []string{"80:80"}, + }, + }, + }, + validateManifest: defaultNoErr, + validateDeployment: func(t *testing.T, p *p.Pods, err error) { + require.NoError(t, err) + svcs, err := p.GetServices(context.Background()) + require.NoError(t, err) + require.Len(t, svcs, 1) + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if os.Getenv("CI") == "true" && tt.skipCI { + t.Skip("this test can't be run in CI because of GHA limitations") + } + p := p.New(tt.props) + err := p.Generate() + if tt.validateManifest != nil { + tt.validateManifest(t, p, err) + } + if Apply() { + err := p.CreateNamespace(*tt.props.Namespace) + require.NoError(t, err) + t.Cleanup(func() { + _ = p.RemoveNamespace(*tt.props.Namespace) + }) + err = p.Apply() + if tt.validateDeployment != nil { + tt.validateDeployment(t, p, err) + } + return + } + if err == nil { + snaps.MatchSnapshot(t, *p.Manifest()) + } + }) + } +} diff --git a/pods/sync.go b/pods/sync.go new file mode 100644 index 000000000..d0ced11e1 --- /dev/null +++ b/pods/sync.go @@ -0,0 +1,129 @@ +package pods + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "strings" +) + +var ( + DefaultDstDir = filepath.Join("/", "go", "local") +) + +type TestRunner struct { + namespace string + srcDir string + podLabel string + dstDir string + container string + podName string +} + +// NewTestRunner creates a new TestRunner instance +func NewTestRunner(namespace, srcDir string) (*TestRunner, error) { + t := &TestRunner{ + namespace: namespace, + srcDir: srcDir, + podLabel: "app=ubuntu", + dstDir: DefaultDstDir, + container: "ubuntu-container", + } + + // Get pod name + getPodCmd := exec.Command("kubectl", "get", "pod", "-n", t.namespace, "-l", t.podLabel, "-o", "jsonpath={.items[0].metadata.name}") //nolint + podNameBytes, err := getPodCmd.Output() + if err != nil { + return nil, fmt.Errorf("failed to get pod name: %v", err) + } + t.podName = string(podNameBytes) + if t.podName == "" { + L.Error().Str("namespace", t.namespace).Str("label", t.podLabel).Msg("No pod found with specified label") + return nil, fmt.Errorf("no pod found with label %s in namespace %s", t.podLabel, t.namespace) + } + + if err = t.Run(srcDir, "go", "install", "github.com/go-delve/delve/cmd/dlv@latest"); err != nil { + return nil, err + } + + L.Info().Str("pod", t.podName).Str("namespace", t.namespace).Msg("Found target pod") + return t, t.copyTests() +} + +// CopyTests copies local directory to the pod +func (t *TestRunner) copyTests() error { + if _, err := os.Stat(t.srcDir); os.IsNotExist(err) { + L.Error().Str("directory", t.srcDir).Msg("Local directory does not exist") + return fmt.Errorf("local directory %s does not exist", t.srcDir) + } + + dest := fmt.Sprintf("%s:%s", t.podName, t.dstDir) + args := []string{"cp", t.srcDir, dest, "-n", t.namespace, "--container", t.container} + L.Debug().Str("command", "kubectl").Strs("args", args).Msg("Copy arguments") + + cmd := exec.Command("kubectl", args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if err := cmd.Run(); err != nil { + L.Error().Err(err).Str("source", t.srcDir).Str("destination", dest).Msg("Copy failed") + return fmt.Errorf("copy failed: %v", err) + } + + L.Info().Str("source", t.srcDir).Str("destination", dest).Msg("Copy completed successfully") + return nil +} + +func TestPodConfig() *PodConfig { + config := &PodConfig{ + Name: S("ubuntu"), + Image: S("golang:1.24.3-alpine"), + Limits: ResourcesMedium(), + Ports: []string{"40000:40000"}, + Command: S("sleep 999999999"), + StatefulSet: true, + } + L.Debug().Interface("config", config).Msg("Created pod configuration") + return config +} + +// Run executes a command in the container at specified working directory +func (t *TestRunner) Run(fromDir string, command string, args ...string) error { + if t.podName == "" { + L.Error().Msg("Pod name not initialized - call Initialize() first") + return fmt.Errorf("pod name not initialized - call Initialize() first") + } + + targetDir := filepath.Join(DefaultDstDir, fromDir) + execArgs := []string{ + "exec", t.podName, + "-n", t.namespace, + "--container", t.container, + "--", + "sh", "-ClientSet", + fmt.Sprintf("cd %s && %s %s", targetDir, command, strings.Join(args, " ")), + } + + L.Info(). + Str("pod", t.podName). + Str("command", command). + Strs("args", args). + Str("directory", targetDir). + Msg("Executing command in pod") + + cmd := exec.Command("kubectl", execArgs...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if err := cmd.Run(); err != nil { + L.Error(). + Err(err). + Str("pod", t.podName). + Str("command", command). + Msg("Command execution failed") + return fmt.Errorf("command execution failed: %v", err) + } + + return nil +} From cdba38278f06c30f5ad54fdc7c85bc1547a37a78 Mon Sep 17 00:00:00 2001 From: skudasov Date: Mon, 9 Feb 2026 22:29:56 +0100 Subject: [PATCH 02/16] simplify --- framework/components/blockchain/anvil.go | 50 ++- framework/components/clnode/clnode.go | 348 +++++++++++------- framework/components/common.go | 5 + framework/components/postgres/postgres.go | 273 +++++++++----- .../components/simple_node_set/node_set.go | 7 + framework/examples/.gitignore | 1 + framework/examples/myproject/go.mod | 21 +- framework/examples/myproject/go.sum | 56 ++- framework/examples/myproject/smoke.toml | 7 +- framework/examples/myproject/smoke_test.go | 8 +- framework/go.mod | 34 +- framework/go.sum | 65 +++- pods/__snapshots__/pods_test.snap | 1 + pods/client.go | 11 +- pods/defaults.go | 3 +- pods/environment/environment.go | 3 +- pods/go.mod | 1 + pods/pods.go | 77 ++-- pods/pods_test.go | 93 +---- 19 files changed, 645 insertions(+), 419 deletions(-) create mode 100644 framework/components/common.go diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index a91ec3e4a..1529bece1 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -2,9 +2,15 @@ package blockchain import ( "context" + "fmt" + "os" "strings" + "github.com/smartcontractkit/pods" + "github.com/smartcontractkit/pods/imports/k8s" + "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components" ) const ( @@ -30,6 +36,9 @@ func defaultAnvil(in *Input) { if in.Port == "" { in.Port = "8545" } + if in.ContainerName == "" { + in.ContainerName = "anvil" + } } func newAnvil(ctx context.Context, in *Input) (*Output, error) { @@ -50,5 +59,44 @@ func newAnvil(ctx context.Context, in *Input) (*Output, error) { framework.L.Info().Any("Cmd", strings.Join(entryPoint, " ")).Msg("Creating anvil with command") - return createGenericEvmContainer(ctx, in, req, false) + ns := os.Getenv(components.K8sNamespaceEnvVar) + + if ns != "" { + _, err := pods.Run(&pods.Config{ + Namespace: pods.S(ns), + Pods: []*pods.PodConfig{ + { + Name: pods.S(in.ContainerName), + Image: &in.Image, + Ports: []string{fmt.Sprintf("%s:%s", in.Port, in.Port)}, + Command: pods.S(strings.Join(entryPoint, " ")), + Limits: pods.ResourcesSmall(), + ContainerSecurityContext: &k8s.SecurityContext{ + RunAsUser: pods.I(999), + RunAsGroup: pods.I(999), + }, + }, + }, + }) + if err != nil { + return nil, err + } + return &Output{ + UseCache: true, + Type: in.Type, + Family: FamilyEVM, + ChainID: in.ChainID, + ContainerName: in.ContainerName, + Nodes: []*Node{ + { + ExternalWSUrl: fmt.Sprintf("ws://%s:%s", fmt.Sprintf("%s-svc", in.ContainerName), in.Port), + ExternalHTTPUrl: fmt.Sprintf("http://%s:%s", fmt.Sprintf("%s-svc", in.ContainerName), in.Port), + InternalWSUrl: fmt.Sprintf("ws://%s:%s", fmt.Sprintf("%s-svc", in.ContainerName), in.Port), + InternalHTTPUrl: fmt.Sprintf("http://%s:%s", fmt.Sprintf("%s-svc", in.ContainerName), in.Port), + }, + }, + }, nil + } else { + return createGenericEvmContainer(ctx, in, req, false) + } } diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 2b299bec2..43a92f020 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -13,12 +13,17 @@ import ( "text/template" "time" + "github.com/aws/jsii-runtime-go" + "github.com/smartcontractkit/pods" + "github.com/smartcontractkit/pods/imports/k8s" + "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" tc "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/postgres" ) @@ -170,7 +175,7 @@ func generateEntryPoint() []string { "/bin/sh", "-c", } if os.Getenv("CTF_CLNODE_DLV") == "true" { - entrypoint = append(entrypoint, "dlv exec /usr/local/bin/chainlink --continue --listen=0.0.0.0:40000 --headless=true --api-version=2 --accept-multiclient -- -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials") + entrypoint = append(entrypoint, "dlv exec /usr/local/bin/chainlink --continue --listen=0.0.0.0:40000 --headless=true --api-version=2 --accept-multiclient -- -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials") } else { entrypoint = append(entrypoint, "chainlink -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials") } @@ -242,11 +247,20 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, if err != nil { return nil, err } - cfgPath, err := writeDefaultConfig() + cfg, err := generateDefaultConfig() + if err != nil { + return nil, err + } + cfgPath, err := WriteTmpFile(cfg, "config.toml") if err != nil { return nil, err } - secretsPath, err := writeDefaultSecrets(pgOut) + + secretsData, err := generateSecretsConfig(pgOut.InternalURL, DefaultTestKeystorePassword) + if err != nil { + return nil, err + } + secretsPath, err := WriteTmpFile(secretsData, "secrets.toml") if err != nil { return nil, err } @@ -278,139 +292,205 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, if err != nil { return nil, err } - req := tc.ContainerRequest{ - AlwaysPullImage: in.Node.PullImage, - Image: in.Node.Image, - Name: containerName, - Labels: framework.DefaultTCLabels(), - Networks: []string{framework.DefaultNetworkName}, - NetworkAliases: map[string][]string{ - framework.DefaultNetworkName: {containerName}, - }, - Env: in.Node.EnvVars, - ExposedPorts: exposedPorts, - Entrypoint: generateEntryPoint(), - WaitingFor: wait.ForHTTP("/"). - WithPort(DefaultHTTPPort). - WithStartupTimeout(3 * time.Minute). - WithPollInterval(200 * time.Millisecond), - Mounts: tc.ContainerMounts{ - { - // various configuration files - Source: tc.GenericVolumeMountSource{ - Name: ConfigVolumeName + "-" + in.Node.Name, + + ns := os.Getenv(components.K8sNamespaceEnvVar) + // k8s deployment + if ns != "" { + pods.Lock() + defer pods.Unlock() + _, err := pods.Run(&pods.Config{ + Namespace: pods.S(ns), + Pods: []*pods.PodConfig{ + { + Name: pods.S(containerName), + Image: pods.S(in.Node.Image), + Env: &[]*k8s.EnvVar{}, + Limits: pods.ResourcesSmall(), + Ports: []string{"6688:6688", "6690:6690"}, + ContainerSecurityContext: &k8s.SecurityContext{ + RunAsNonRoot: jsii.Bool(true), + RunAsUser: pods.I(14933), + RunAsGroup: pods.I(999), + }, + ConfigMap: map[string]*string{ + "config.toml": pods.S(cfg), + "overrides.toml": pods.S(in.Node.TestConfigOverrides), + "user-overrides.toml": pods.S(in.Node.UserConfigOverrides), + "node_password": pods.S(DefaultPasswordTxt), + "apicredentials": pods.S(fmt.Sprintf(`%s + %s`, DefaultAPIUser, DefaultAPIPassword)), + }, + ConfigMapMountPath: map[string]*string{ + "config.toml": pods.S("/config/config"), + "overrides.toml": pods.S("/config/overrides"), + "user-overrides.toml": pods.S("/config/user-overrides"), + "node_password": pods.S("/config/node_password"), + "apicredentials": pods.S("/config/apicredentials"), + }, + Secrets: map[string]*string{ + "secrets.toml": pods.S(secretsData), + "secrets-overrides.toml": pods.S(in.Node.TestSecretsOverrides), + "secrets-user-overrides.toml": pods.S(in.Node.UserSecretsOverrides), + }, + SecretsMountPath: map[string]*string{ + "secrets.toml": pods.S("/config/secrets"), + "secrets-overrides.toml": pods.S("/config/secrets-overrides"), + "secrets-user-overrides.toml": pods.S("/config/user-secrets-overrides"), + }, + // Command: pods.S("chainlink -c /config/config -s /config/secrets node start -d -a /config/apicredentials"), + Command: pods.S("chainlink -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials"), + // TODO: override the same way as in Docker + // Command: pods.S(strings.Join(generateEntryPoint(), " ")), }, - Target: "/config", }, - { - // kv store of the OCR jobs and other state files are stored - // in the user's home instead of the DB - Source: tc.GenericVolumeMountSource{ - Name: HomeVolumeName + "-" + in.Node.Name, + }) + if err != nil { + return nil, err + } + return &NodeOut{ + APIAuthUser: DefaultAPIUser, + APIAuthPassword: DefaultAPIPassword, + ContainerName: containerName, + ExternalURL: fmt.Sprintf("http://%s:%s", fmt.Sprintf("%s-svc", containerName), DefaultHTTPPort), + InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), + InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), + }, nil + } else { + // local deployment + req := tc.ContainerRequest{ + AlwaysPullImage: in.Node.PullImage, + Image: in.Node.Image, + Name: containerName, + Labels: framework.DefaultTCLabels(), + Networks: []string{framework.DefaultNetworkName}, + NetworkAliases: map[string][]string{ + framework.DefaultNetworkName: {containerName}, + }, + Env: in.Node.EnvVars, + ExposedPorts: exposedPorts, + Entrypoint: generateEntryPoint(), + WaitingFor: wait.ForHTTP("/"). + WithPort(DefaultHTTPPort). + WithStartupTimeout(3 * time.Minute). + WithPollInterval(200 * time.Millisecond), + Mounts: tc.ContainerMounts{ + { + // various configuration files + Source: tc.GenericVolumeMountSource{ + Name: ConfigVolumeName + "-" + in.Node.Name, + }, + Target: "/config", + }, + { + // kv store of the OCR jobs and other state files are stored + // in the user's home instead of the DB + Source: tc.GenericVolumeMountSource{ + Name: HomeVolumeName + "-" + in.Node.Name, + }, + Target: "/home/chainlink", }, - Target: "/home/chainlink", }, - }, - } - if in.Node.HTTPPort != 0 && in.Node.P2PPort != 0 { - req.HostConfigModifier = func(h *container.HostConfig) { - framework.NoDNS(in.NoDNS, h) - h.PortBindings = portBindings - framework.ResourceLimitsFunc(h, in.Node.ContainerResources) } - } - files := []tc.ContainerFile{ - { - HostFilePath: cfgPath.Name(), - ContainerFilePath: "/config/config", - FileMode: 0o644, - }, - { - HostFilePath: secretsPath.Name(), - ContainerFilePath: "/config/secrets", - FileMode: 0o644, - }, - { - HostFilePath: overridesFile.Name(), - ContainerFilePath: "/config/overrides", - FileMode: 0o644, - }, - { - HostFilePath: userOverridesFile.Name(), - ContainerFilePath: "/config/user-overrides", - FileMode: 0o644, - }, - { - HostFilePath: secretsOverridesFile.Name(), - ContainerFilePath: "/config/secrets-overrides", - FileMode: 0o644, - }, - { - HostFilePath: userSecretsOverridesFile.Name(), - ContainerFilePath: "/config/user-secrets-overrides", - FileMode: 0o644, - }, - { - HostFilePath: passwordPath.Name(), - ContainerFilePath: "/config/node_password", - FileMode: 0o644, - }, - { - HostFilePath: apiCredentialsPath.Name(), - ContainerFilePath: "/config/apicredentials", - FileMode: 0o644, - }, - } - if in.Node.CapabilityContainerDir == "" { - in.Node.CapabilityContainerDir = DefaultCapabilitiesDir - } - for _, cp := range in.Node.CapabilitiesBinaryPaths { - cpPath := filepath.Base(cp) - framework.L.Info().Any("Path", cpPath).Str("Binary", cpPath).Msg("Copying capability binary") - files = append(files, tc.ContainerFile{ - HostFilePath: cp, - ContainerFilePath: filepath.Join(in.Node.CapabilityContainerDir, cpPath), - FileMode: 0o777, + if in.Node.HTTPPort != 0 && in.Node.P2PPort != 0 { + req.HostConfigModifier = func(h *container.HostConfig) { + framework.NoDNS(in.NoDNS, h) + h.PortBindings = portBindings + framework.ResourceLimitsFunc(h, in.Node.ContainerResources) + } + } + files := []tc.ContainerFile{ + { + HostFilePath: cfgPath.Name(), + ContainerFilePath: "/config/config", + FileMode: 0o644, + }, + { + HostFilePath: secretsPath.Name(), + ContainerFilePath: "/config/secrets", + FileMode: 0o644, + }, + { + HostFilePath: overridesFile.Name(), + ContainerFilePath: "/config/overrides", + FileMode: 0o644, + }, + { + HostFilePath: userOverridesFile.Name(), + ContainerFilePath: "/config/user-overrides", + FileMode: 0o644, + }, + { + HostFilePath: secretsOverridesFile.Name(), + ContainerFilePath: "/config/secrets-overrides", + FileMode: 0o644, + }, + { + HostFilePath: userSecretsOverridesFile.Name(), + ContainerFilePath: "/config/user-secrets-overrides", + FileMode: 0o644, + }, + { + HostFilePath: passwordPath.Name(), + ContainerFilePath: "/config/node_password", + FileMode: 0o644, + }, + { + HostFilePath: apiCredentialsPath.Name(), + ContainerFilePath: "/config/apicredentials", + FileMode: 0o644, + }, + } + if in.Node.CapabilityContainerDir == "" { + in.Node.CapabilityContainerDir = DefaultCapabilitiesDir + } + for _, cp := range in.Node.CapabilitiesBinaryPaths { + cpPath := filepath.Base(cp) + framework.L.Info().Any("Path", cpPath).Str("Binary", cpPath).Msg("Copying capability binary") + files = append(files, tc.ContainerFile{ + HostFilePath: cp, + ContainerFilePath: filepath.Join(in.Node.CapabilityContainerDir, cpPath), + FileMode: 0o777, + }) + } + req.Files = append(req.Files, files...) + if req.Image != "" && (in.Node.DockerFilePath != "" || in.Node.DockerContext != "") { + return nil, errors.New("you provided both 'image' and one of 'docker_file', 'docker_ctx' fields. Please provide either 'image' or params to build a local one") + } + if req.Image == "" { + req.Image = TmpImageName + if err := framework.BuildImageOnce(once, in.Node.DockerContext, in.Node.DockerFilePath, req.Image, in.Node.DockerBuildArgs); err != nil { + return nil, err + } + req.KeepImage = false + } + c, err := tc.GenericContainer(ctx, tc.GenericContainerRequest{ + ContainerRequest: req, + Started: true, }) - } - req.Files = append(req.Files, files...) - if req.Image != "" && (in.Node.DockerFilePath != "" || in.Node.DockerContext != "") { - return nil, errors.New("you provided both 'image' and one of 'docker_file', 'docker_ctx' fields. Please provide either 'image' or params to build a local one") - } - if req.Image == "" { - req.Image = TmpImageName - if err := framework.BuildImageOnce(once, in.Node.DockerContext, in.Node.DockerFilePath, req.Image, in.Node.DockerBuildArgs); err != nil { + if err != nil { + return nil, err + } + ip, err := c.ContainerIP(ctx) + if err != nil { + return nil, err + } + host, err := framework.GetHostWithContext(ctx, c) + if err != nil { return nil, err } - req.KeepImage = false - } - c, err := tc.GenericContainer(ctx, tc.GenericContainerRequest{ - ContainerRequest: req, - Started: true, - }) - if err != nil { - return nil, err - } - ip, err := c.ContainerIP(ctx) - if err != nil { - return nil, err - } - host, err := framework.GetHostWithContext(ctx, c) - if err != nil { - return nil, err - } - mp := nat.Port(fmt.Sprintf("%d/tcp", in.Node.HTTPPort)) + mp := nat.Port(fmt.Sprintf("%d/tcp", in.Node.HTTPPort)) - return &NodeOut{ - APIAuthUser: DefaultAPIUser, - APIAuthPassword: DefaultAPIPassword, - ContainerName: containerName, - ExternalURL: fmt.Sprintf("http://%s:%s", host, mp.Port()), - InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), - InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), - InternalIP: ip, - }, nil + return &NodeOut{ + APIAuthUser: DefaultAPIUser, + APIAuthPassword: DefaultAPIPassword, + ContainerName: containerName, + ExternalURL: fmt.Sprintf("http://%s:%s", host, mp.Port()), + InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), + InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), + InternalIP: ip, + }, nil + } } type DefaultCLNodeConfig struct { @@ -458,22 +538,6 @@ func generateSecretsConfig(connString, password string) (string, error) { return output.String(), nil } -func writeDefaultSecrets(pgOut *postgres.Output) (*os.File, error) { - secretsOverrides, err := generateSecretsConfig(pgOut.InternalURL, DefaultTestKeystorePassword) - if err != nil { - return nil, err - } - return WriteTmpFile(secretsOverrides, "secrets.toml") -} - -func writeDefaultConfig() (*os.File, error) { - cfg, err := generateDefaultConfig() - if err != nil { - return nil, err - } - return WriteTmpFile(cfg, "config.toml") -} - // WriteTmpFile writes the provided data string to a specified filepath and returns the file and any error encountered. func WriteTmpFile(data, filePath string) (*os.File, error) { file, err := os.CreateTemp("", filePath) diff --git a/framework/components/common.go b/framework/components/common.go new file mode 100644 index 000000000..64dc0cab8 --- /dev/null +++ b/framework/components/common.go @@ -0,0 +1,5 @@ +package components + +const ( + K8sNamespaceEnvVar = "KUBERNETES_NAMESPACE" +) diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index 6b60523d8..7ea9158bb 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -8,12 +8,16 @@ import ( "strings" "time" + "github.com/smartcontractkit/pods" + "github.com/smartcontractkit/pods/imports/k8s" + "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" "github.com/testcontainers/testcontainers-go" tcwait "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components" ) const ( @@ -50,7 +54,7 @@ type Input struct { } type Output struct { - // URL PostgreSQL connection URL + // Url PostgreSQL connection Url Url string `toml:"url" comment:"PostgreSQL connection URL"` // ContainerName PostgreSQL Docker container name ContainerName string `toml:"container_name" comment:"Docker container name"` @@ -112,114 +116,185 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { return nil, err } - req := testcontainers.ContainerRequest{ - AlwaysPullImage: in.PullImage, - Image: in.Image, - Name: containerName, - Labels: framework.DefaultTCLabels(), - ExposedPorts: []string{bindPort}, - Networks: []string{framework.DefaultNetworkName}, - NetworkAliases: map[string][]string{ - framework.DefaultNetworkName: {containerName}, - }, - Env: map[string]string{ - "POSTGRES_USER": User, - "POSTGRES_PASSWORD": Password, - "POSTGRES_DB": Database, - }, - Cmd: []string{ - "postgres", "-c", - fmt.Sprintf("port=%s", Port), - "-c", "shared_preload_libraries=pg_stat_statements", - "-c", "pg_stat_statements.track=all", - }, - Files: []testcontainers.ContainerFile{ - { - HostFilePath: initFile.Name(), - ContainerFilePath: "/docker-entrypoint-initdb.d/init.sql", - FileMode: 0o644, - }, - }, - Mounts: testcontainers.ContainerMounts{ - { - Source: testcontainers.GenericVolumeMountSource{ - Name: fmt.Sprintf("%s%s", DBVolumeName, in.VolumeName), - }, - Target: "/var/lib/postgresql/data", - }, - }, - WaitingFor: tcwait.ForExec([]string{ - "psql", "-h", "127.0.0.1", - "-U", User, "-p", Port, "-c", "select", "1", "-d", Database, - }). - WithStartupTimeout(3 * time.Minute). - WithPollInterval(200 * time.Millisecond), - } var portToExpose int if in.Port != 0 { portToExpose = in.Port } else { portToExpose = ExposedStaticPort } - req.HostConfigModifier = func(h *container.HostConfig) { - h.PortBindings = nat.PortMap{ - nat.Port(bindPort): []nat.PortBinding{ + + var o *Output + + ns := os.Getenv(components.K8sNamespaceEnvVar) + // k8s deployment + if ns != "" { + _, err := pods.Run(&pods.Config{ + Namespace: pods.S(ns), + Pods: []*pods.PodConfig{ { - HostIP: "0.0.0.0", - HostPort: strconv.Itoa(portToExpose), + Name: pods.S(in.Name), + Image: pods.S(in.Image), + Ports: []string{fmt.Sprintf("%d:%s", portToExpose, Port)}, + Env: &[]*k8s.EnvVar{ + { + Name: pods.S("POSTGRES_USER"), + Value: pods.S("chainlink"), + }, + { + Name: pods.S("POSTGRES_PASSWORD"), + Value: pods.S("thispasswordislongenough"), + }, + { + Name: pods.S("POSTGRES_DB"), + Value: pods.S("chainlink"), + }, + }, + Limits: pods.ResourcesMedium(), + ContainerSecurityContext: &k8s.SecurityContext{ + RunAsUser: pods.I(999), + RunAsGroup: pods.I(999), + }, + PodSecurityContext: &k8s.PodSecurityContext{ + FsGroup: pods.I(999), + }, + ConfigMap: map[string]*string{ + "init.sql": pods.S(initSQL), + }, + ConfigMapMountPath: map[string]*string{ + "init.sql": pods.S("/docker-entrypoint-initdb.d/init.sql"), + }, + VolumeClaimTemplates: pods.SizedVolumeClaim(pods.S("4Gi")), }, }, + }) + if err != nil { + return nil, err + } + o = &Output{ + ContainerName: containerName, + InternalURL: fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + fmt.Sprintf("%s-svc", in.Name), + // use svc internally too + portToExpose, + Database, + ), + Url: fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + fmt.Sprintf("%s-svc", in.Name), + portToExpose, + Database, + ), + } + } else { + // local deployment + req := testcontainers.ContainerRequest{ + AlwaysPullImage: in.PullImage, + Image: in.Image, + Name: containerName, + Labels: framework.DefaultTCLabels(), + ExposedPorts: []string{bindPort}, + Networks: []string{framework.DefaultNetworkName}, + NetworkAliases: map[string][]string{ + framework.DefaultNetworkName: {containerName}, + }, + Env: map[string]string{ + "POSTGRES_USER": User, + "POSTGRES_PASSWORD": Password, + "POSTGRES_DB": Database, + }, + Cmd: []string{ + "postgres", "-c", + fmt.Sprintf("port=%s", Port), + "-c", "shared_preload_libraries=pg_stat_statements", + "-c", "pg_stat_statements.track=all", + }, + Files: []testcontainers.ContainerFile{ + { + HostFilePath: initFile.Name(), + ContainerFilePath: "/docker-entrypoint-initdb.d/init.sql", + FileMode: 0o644, + }, + }, + Mounts: testcontainers.ContainerMounts{ + { + Source: testcontainers.GenericVolumeMountSource{ + Name: fmt.Sprintf("%s%s", DBVolumeName, in.VolumeName), + }, + Target: "/var/lib/postgresql/data", + }, + }, + WaitingFor: tcwait.ForExec([]string{ + "psql", "-h", "127.0.0.1", + "-U", User, "-p", Port, "-c", "select", "1", "-d", Database, + }). + WithStartupTimeout(3 * time.Minute). + WithPollInterval(200 * time.Millisecond), + } + req.HostConfigModifier = func(h *container.HostConfig) { + h.PortBindings = nat.PortMap{ + nat.Port(bindPort): []nat.PortBinding{ + { + HostIP: "0.0.0.0", + HostPort: strconv.Itoa(portToExpose), + }, + }, + } + framework.ResourceLimitsFunc(h, in.ContainerResources) + } + c, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ + ContainerRequest: req, + Started: true, + Reuse: true, + }) + if err != nil { + return nil, err + } + host, err := framework.GetHostWithContext(ctx, c) + if err != nil { + return nil, err + } + o = &Output{ + ContainerName: containerName, + InternalURL: fmt.Sprintf( + "postgresql://%s:%s@%s:%s/%s?sslmode=disable", + User, + Password, + containerName, + Port, + Database, + ), + Url: fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + host, + portToExpose, + Database, + ), + } + if in.JDDatabase { + o.JDInternalURL = fmt.Sprintf( + "postgresql://%s:%s@%s:%s/%s?sslmode=disable", + User, + Password, + containerName, + Port, + JDDatabase, + ) + o.JDUrl = fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + host, + portToExpose, + JDDatabase, + ) } - framework.ResourceLimitsFunc(h, in.ContainerResources) - } - c, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ - ContainerRequest: req, - Started: true, - Reuse: true, - }) - if err != nil { - return nil, err - } - host, err := framework.GetHostWithContext(ctx, c) - if err != nil { - return nil, err - } - o := &Output{ - ContainerName: containerName, - InternalURL: fmt.Sprintf( - "postgresql://%s:%s@%s:%s/%s?sslmode=disable", - User, - Password, - containerName, - Port, - Database, - ), - Url: fmt.Sprintf( - "postgresql://%s:%s@%s:%d/%s?sslmode=disable", - User, - Password, - host, - portToExpose, - Database, - ), - } - if in.JDDatabase { - o.JDInternalURL = fmt.Sprintf( - "postgresql://%s:%s@%s:%s/%s?sslmode=disable", - User, - Password, - containerName, - Port, - JDDatabase, - ) - o.JDUrl = fmt.Sprintf( - "postgresql://%s:%s@%s:%d/%s?sslmode=disable", - User, - Password, - host, - portToExpose, - JDDatabase, - ) } return o, nil } diff --git a/framework/components/simple_node_set/node_set.go b/framework/components/simple_node_set/node_set.go index 4eacc4980..49399eb64 100644 --- a/framework/components/simple_node_set/node_set.go +++ b/framework/components/simple_node_set/node_set.go @@ -7,13 +7,16 @@ import ( "slices" "strings" "sync" + "time" "golang.org/x/sync/errgroup" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/clnode" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/postgres" + "github.com/smartcontractkit/pods" ) const ( @@ -200,6 +203,10 @@ func sharedDBSetup(ctx context.Context, in *Input, bcOut *blockchain.Output) (*O return nil, err } sortNodeOutsByHostPort(nodeOuts) + // wait for all K8s services at once + if os.Getenv(components.K8sNamespaceEnvVar) != "" { + pods.WaitReady(3 * time.Minute) + } return &Output{ UseCache: true, DBOut: dbOut, diff --git a/framework/examples/.gitignore b/framework/examples/.gitignore index ea2f8193b..c3ff58d5c 100644 --- a/framework/examples/.gitignore +++ b/framework/examples/.gitignore @@ -35,3 +35,4 @@ promtail-config.yml **/*cache.toml **/postgresql_data **/postgresql_data/* +**/pods.tmp.yml diff --git a/framework/examples/myproject/go.mod b/framework/examples/myproject/go.mod index bad9a266a..6b7f1c9a8 100644 --- a/framework/examples/myproject/go.mod +++ b/framework/examples/myproject/go.mod @@ -6,6 +6,7 @@ replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../../components/fake github.com/smartcontractkit/chainlink-testing-framework/wasp => ../../../wasp + github.com/smartcontractkit/pods => ../../../pods ) require ( @@ -25,8 +26,11 @@ require ( ) require ( + github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect + github.com/aws/jsii-runtime-go v1.108.0 // indirect github.com/bufbuild/protocompile v0.14.1 // indirect github.com/buger/goterm v1.0.4 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -43,18 +47,23 @@ require ( github.com/minio/md5-simd v1.1.2 // indirect github.com/minio/minio-go/v7 v7.0.86 // indirect github.com/moby/go-archive v0.1.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20220328075252-7dd334e3daae // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/rs/xid v1.6.0 // indirect github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 // indirect + github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/tjhop/slog-gokit v0.1.3 // indirect github.com/urfave/cli v1.22.16 // indirect + github.com/yuin/goldmark v1.4.13 // indirect github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.31.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.31.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.31.0 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect ) require ( @@ -151,7 +160,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.9 // indirect @@ -258,7 +267,7 @@ require ( github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/supranational/blst v0.3.13 // indirect - github.com/tidwall/gjson v1.17.0 // indirect + github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect @@ -317,12 +326,12 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.2 // indirect + k8s.io/api v0.32.3 // indirect k8s.io/apiextensions-apiserver v0.31.0 // indirect - k8s.io/apimachinery v0.32.2 // indirect - k8s.io/client-go v0.32.2 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/controller-runtime v0.19.0 // indirect diff --git a/framework/examples/myproject/go.sum b/framework/examples/myproject/go.sum index 6315f0ca2..3cdc2b954 100644 --- a/framework/examples/myproject/go.sum +++ b/framework/examples/myproject/go.sum @@ -105,6 +105,8 @@ github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJ github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/atombender/go-jsonschema v0.16.1-0.20240916205339-a74cd4e2851c h1:cxQVoh6kY+c4b0HUchHjGWBI8288VhH50qxKG3hdEg0= @@ -117,6 +119,10 @@ github.com/awalterschulze/gographviz v2.0.3+incompatible h1:9sVEXJBJLwGX7EQVhLm2 github.com/awalterschulze/gographviz v2.0.3+incompatible/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59 h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= @@ -166,6 +172,8 @@ github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -371,6 +379,12 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= +github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= +github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= @@ -453,8 +467,8 @@ github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.12.0 h1:/1WHjnMsI1dlIBQutrvSMGZRQufVO3asrHfTwfACoPM= -github.com/goccy/go-yaml v1.12.0/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= +github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= +github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -498,8 +512,8 @@ github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -769,6 +783,8 @@ github.com/manyminds/api2go v0.0.0-20171030193247-e7b693844a6f h1:tVvGiZQFjOXP+9 github.com/manyminds/api2go v0.0.0-20171030193247-e7b693844a6f/go.mod h1:Z60vy0EZVSu0bOugCHdcN5ZxFMKSpjRgsnh0XKPFqqk= github.com/marcboeker/go-duckdb v1.8.3 h1:ZkYwiIZhbYsT6MmJsZ3UPTHrTZccDdM4ztoqSlEMXiQ= github.com/marcboeker/go-duckdb v1.8.3/go.mod h1:C9bYRE1dPYb1hhfu/SSomm78B0FXmNgRvv6YBW/Hooc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -831,6 +847,8 @@ github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -863,6 +881,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/oasisprotocol/curve25519-voi v0.0.0-20220328075252-7dd334e3daae h1:7smdlrfdcZic4VfsGKD2ulWL804a4GVphr4s7WZxGiY= github.com/oasisprotocol/curve25519-voi v0.0.0-20220328075252-7dd334e3daae/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= @@ -1129,13 +1149,15 @@ github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrj github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= -github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tjhop/slog-gokit v0.1.3 h1:6SdexP3UIeg93KLFeiM1Wp1caRwdTLgsD/THxBUy1+o= github.com/tjhop/slog-gokit v0.1.3/go.mod h1:Bbu5v2748qpAWH7k6gse/kw3076IJf6owJmh7yArmJs= github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= @@ -1173,6 +1195,8 @@ github.com/xssnick/tonutils-go v1.12.0 h1:Qn1yf/S6OEFD4a1sdpq8qHMzqJFjHaOWxmuXiD github.com/xssnick/tonutils-go v1.12.0/go.mod h1:Wj8TFiUUc7IGdLn2X/ZDzmMs/1b4fsF3iJzH/l+PXTI= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= @@ -1306,6 +1330,9 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbD golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= @@ -1399,6 +1426,7 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= @@ -1475,18 +1503,18 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.32.2 h1:bZrMLEkgizC24G9eViHGOPbW+aRo9duEISRIJKfdJuw= -k8s.io/api v0.32.2/go.mod h1:hKlhk4x1sJyYnHENsrdCWw31FEmCijNGPJO5WzHiJ6Y= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= -k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ= -k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.2 h1:4dYCD4Nz+9RApM2b/3BtVvBHw54QjMFUl1OLcJG5yOA= -k8s.io/client-go v0.32.2/go.mod h1:fpZ4oJXclZ3r2nDOv+Ux3XcJutfrwjKTCHz2H3sww94= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= diff --git a/framework/examples/myproject/smoke.toml b/framework/examples/myproject/smoke.toml index 13333fcdf..f90f64a12 100644 --- a/framework/examples/myproject/smoke.toml +++ b/framework/examples/myproject/smoke.toml @@ -3,16 +3,13 @@ docker_cmd_params = ["-b", "1"] type = "anvil" -[data_provider] - port = 9111 - [[nodesets]] name = "don" - nodes = 5 + nodes = 4 override_mode = "all" [nodesets.db] - image = "postgres:12.0" + image = "postgres:15" [[nodesets.node_specs]] diff --git a/framework/examples/myproject/smoke_test.go b/framework/examples/myproject/smoke_test.go index 31f82f3ba..401ad3540 100644 --- a/framework/examples/myproject/smoke_test.go +++ b/framework/examples/myproject/smoke_test.go @@ -7,14 +7,12 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake" ns "github.com/smartcontractkit/chainlink-testing-framework/framework/components/simple_node_set" ) type Cfg struct { - BlockchainA *blockchain.Input `toml:"blockchain_a" validate:"required"` - MockedDataProvider *fake.Input `toml:"data_provider" validate:"required"` - NodeSets []*ns.Input `toml:"nodesets" validate:"required"` + BlockchainA *blockchain.Input `toml:"blockchain_a" validate:"required"` + NodeSets []*ns.Input `toml:"nodesets" validate:"required"` } func TestSmoke(t *testing.T) { @@ -23,8 +21,6 @@ func TestSmoke(t *testing.T) { bc, err := blockchain.NewBlockchainNetwork(in.BlockchainA) require.NoError(t, err) - _, err = fake.NewFakeDataProvider(in.MockedDataProvider) - require.NoError(t, err) out, err := ns.NewSharedDBNodeSet(in.NodeSets[0], bc) require.NoError(t, err) diff --git a/framework/go.mod b/framework/go.mod index 76de86935..760a8969f 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -2,9 +2,11 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework go 1.24.2 -replace github.com/smartcontractkit/chainlink-testing-framework/wasp => ../wasp - -replace github.com/smartcontractkit/chainlink-testing-framework/wasp-tests => ../wasp/examples +replace ( + github.com/smartcontractkit/chainlink-testing-framework/wasp => ../wasp + github.com/smartcontractkit/chainlink-testing-framework/wasp-tests => ../wasp/examples + github.com/smartcontractkit/pods => ../pods +) require ( dario.cat/mergo v1.0.1 @@ -29,6 +31,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.33.0 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.2 + github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 github.com/urfave/cli/v2 v2.27.7 @@ -58,6 +61,8 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.55.6 // indirect + github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect + github.com/aws/jsii-runtime-go v1.108.0 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -65,6 +70,7 @@ require ( github.com/bytedance/sonic v1.11.6 // indirect github.com/bytedance/sonic/loader v0.1.1 // indirect github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect @@ -126,7 +132,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect @@ -183,6 +189,7 @@ require ( github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/user v0.4.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect @@ -192,6 +199,7 @@ require ( github.com/morikuni/aec v1.0.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.116.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0 // indirect @@ -228,9 +236,9 @@ require ( github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/supranational/blst v0.3.13 // indirect - github.com/tidwall/gjson v1.14.4 // indirect + github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tjhop/slog-gokit v0.1.3 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect @@ -240,6 +248,7 @@ require ( github.com/ugorji/go/codec v1.2.12 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect + github.com/yuin/goldmark v1.4.13 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/etcd/api/v3 v3.5.14 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.14 // indirect @@ -264,14 +273,15 @@ require ( golang.org/x/arch v0.8.0 // indirect golang.org/x/crypto v0.37.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.22.0 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mod v0.23.0 // indirect golang.org/x/net v0.38.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sys v0.32.0 // indirect golang.org/x/term v0.31.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.29.0 // indirect + golang.org/x/tools v0.30.0 // indirect google.golang.org/api v0.221.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250124145028-65684f501c47 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250207221924-e9438ea467c6 // indirect @@ -280,11 +290,11 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.2 // indirect - k8s.io/apimachinery v0.32.2 // indirect - k8s.io/client-go v0.32.2 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/framework/go.sum b/framework/go.sum index cf6c8c0e1..fab4c863a 100644 --- a/framework/go.sum +++ b/framework/go.sum @@ -68,12 +68,18 @@ github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJ github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= @@ -97,6 +103,8 @@ github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3z github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -225,6 +233,12 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= +github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= +github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -291,6 +305,8 @@ github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= +github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -326,8 +342,8 @@ github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs0 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -514,6 +530,8 @@ github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8S github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -568,6 +586,8 @@ github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -592,6 +612,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -762,12 +784,15 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tjhop/slog-gokit v0.1.3 h1:6SdexP3UIeg93KLFeiM1Wp1caRwdTLgsD/THxBUy1+o= github.com/tjhop/slog-gokit v0.1.3/go.mod h1:Bbu5v2748qpAWH7k6gse/kw3076IJf6owJmh7yArmJs= github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= @@ -793,6 +818,8 @@ github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGC github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= @@ -887,10 +914,13 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbD golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -979,10 +1009,11 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1047,16 +1078,16 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.32.2 h1:bZrMLEkgizC24G9eViHGOPbW+aRo9duEISRIJKfdJuw= -k8s.io/api v0.32.2/go.mod h1:hKlhk4x1sJyYnHENsrdCWw31FEmCijNGPJO5WzHiJ6Y= -k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ= -k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.2 h1:4dYCD4Nz+9RApM2b/3BtVvBHw54QjMFUl1OLcJG5yOA= -k8s.io/client-go v0.32.2/go.mod h1:fpZ4oJXclZ3r2nDOv+Ux3XcJutfrwjKTCHz2H3sww94= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= diff --git a/pods/__snapshots__/pods_test.snap b/pods/__snapshots__/pods_test.snap index 4bbc0f7c1..7d6c051ae 100755 --- a/pods/__snapshots__/pods_test.snap +++ b/pods/__snapshots__/pods_test.snap @@ -492,6 +492,7 @@ spec: resources: requests: storage: 1Gi + storageClassName: gp3 /-/-/-/ apiVersion: v1 kind: Service diff --git a/pods/client.go b/pods/client.go index 2b7257ff7..a1bf62afc 100644 --- a/pods/client.go +++ b/pods/client.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "os/exec" + "strings" "time" "github.com/aws/jsii-runtime-go" @@ -150,6 +151,10 @@ func (k *API) CreateNamespace(name string) error { } _, err := k.ClientSet.CoreV1().Namespaces().Create(context.Background(), namespace, metav1.CreateOptions{}) if err != nil { // coverage-ignore + if strings.Contains(err.Error(), "already exists") { + L.Info().Str("Namespace", name).Msg("Namespace already exists, proceeding..") + return nil + } return fmt.Errorf("failed to create namespace: %v", err) } return nil @@ -185,13 +190,13 @@ func (k *API) Apply(manifest string) error { if err != nil { return fmt.Errorf("kubectl apply failed: %w\nOutput: %s", err, string(output)) } - _, err = k.WaitForAllPodsReady(context.Background(), 3*time.Minute) + _, err = k.waitAllPodsReady(context.Background(), 3*time.Minute) return err } -// WaitForAllPodsReady waits until all Pods in the namespace are ready or the timeout is reached. +// waitAllPodsReady waits until all Pods in the namespace are ready or the timeout is reached. // It retries the check periodically until the condition is met or the timeout occurs. -func (k *API) WaitForAllPodsReady(ctx context.Context, timeout time.Duration) (bool, error) { +func (k *API) waitAllPodsReady(ctx context.Context, timeout time.Duration) (bool, error) { L.Info().Str("Namespace", k.namespace).Msg("Waiting for all pods to be ready") ctx, cancel := context.WithTimeout(ctx, timeout) defer cancel() diff --git a/pods/defaults.go b/pods/defaults.go index 87a1051ed..3413d2f75 100644 --- a/pods/defaults.go +++ b/pods/defaults.go @@ -113,7 +113,8 @@ func SizedVolumeClaim(size *string) []*k8s.KubePersistentVolumeClaimProps { // c Name: S("data"), }, Spec: &k8s.PersistentVolumeClaimSpec{ - AccessModes: &[]*string{S("ReadWriteOnce")}, + AccessModes: &[]*string{S("ReadWriteOnce")}, + StorageClassName: S("gp3"), Resources: &k8s.VolumeResourceRequirements{ Requests: &map[string]k8s.Quantity{ "storage": k8s.Quantity_FromString(size), diff --git a/pods/environment/environment.go b/pods/environment/environment.go index 2a0e75f73..4654432e6 100644 --- a/pods/environment/environment.go +++ b/pods/environment/environment.go @@ -52,8 +52,7 @@ func NewEnvironment() error { }, } - k8sDeployment := p.New(cfg) - err := k8sDeployment.CreateNamespace(ns) + k8sDeployment, err := p.New(cfg) if err != nil { return err } diff --git a/pods/go.mod b/pods/go.mod index 6f22356c7..99daed915 100644 --- a/pods/go.mod +++ b/pods/go.mod @@ -2,6 +2,7 @@ module github.com/smartcontractkit/pods go 1.24.0 + require ( github.com/aws/constructs-go/constructs/v10 v10.4.2 github.com/aws/jsii-runtime-go v1.108.0 diff --git a/pods/pods.go b/pods/pods.go index 58c7e6306..26eefdd65 100644 --- a/pods/pods.go +++ b/pods/pods.go @@ -8,12 +8,21 @@ import ( "os/exec" "strconv" "strings" + "sync" "time" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" + "github.com/google/uuid" "github.com/smartcontractkit/pods/imports/k8s" ) +// JSIIGlobalMu is a global mutex for cdk8s JSII runtime +// allows to generate manifests in a goroutine-safe way +var ( + Client *API + JSIIGlobalMu = &sync.Mutex{} +) + // Config describes Pods library configuration type Config struct { Namespace *string @@ -65,29 +74,47 @@ type PodConfig struct { VolumeClaimTemplates []*k8s.KubePersistentVolumeClaimProps } -type Pods struct { - *API +// App is an application context with cdk8s app, chart and generated manifest +type App struct { cfg *Config app cdk8s.App chart cdk8s.Chart manifest *string } -// New creates and generates a new K8s YAML manifest -func New(cfg *Config) *Pods { - api, err := NewAPI(*cfg.Namespace) +// Run creates and generates a new K8s YAML manifest +func Run(cfg *Config) (string, error) { + var err error + Client, err = NewAPI(*cfg.Namespace) if err != nil { - return nil + return "", fmt.Errorf("failed to create K8s client: %w", err) + } + if Client != nil { + if err := Client.CreateNamespace(*cfg.Namespace); err != nil { + return "", fmt.Errorf("failed to create namespace: %s, %w", *cfg.Namespace, err) + } } - p := &Pods{ + p := &App{ cfg: cfg, - API: api, } - return p + if err := p.generate(); err != nil { + return "", err + } + return *p.Manifest(), p.apply() +} + +// Lock locks all interactions with JSII runtime, only single thread at a time +func Lock() { + JSIIGlobalMu.Lock() } -// Generate provides a simplified Docker Compose like API for K8s and generates YAML a manifest to deploy -func (n *Pods) Generate() error { +// Unlock unlocks all interactions with JSII runtime +func Unlock() { + JSIIGlobalMu.Unlock() +} + +// generate provides a simplified Docker Compose like API for K8s and generates YAML a manifest to deploy +func (n *App) generate() error { n.app = cdk8s.NewApp(nil) n.chart = cdk8s.NewChart(n.app, S("pods-chart"), nil) for _, podConfig := range n.cfg.Pods { @@ -339,12 +366,15 @@ func (n *Pods) Generate() error { return nil } -func (n *Pods) apply() error { +func (n *App) apply() error { + if os.Getenv("SNAPSHOT_TESTS") == "true" { // coverage-ignore + return nil + } if n.manifest == nil { return fmt.Errorf("manifest is not generated. Call Generate() first") } - tmpFile := "pods.tmp.yml" - err := os.WriteFile(tmpFile, []byte(*n.manifest), 0600) + tmpFile := fmt.Sprintf("pods-%s.tmp.yml", uuid.NewString()[0:5]) + err := os.WriteFile(tmpFile, []byte(*n.manifest), 0o600) if err != nil { return fmt.Errorf("failed to write manifest to file: %v", err) } @@ -358,25 +388,12 @@ func (n *Pods) apply() error { return nil } -// Apply runs "kubectl apply" with custom readiness assertions -func (n *Pods) Apply() error { - if err := n.Generate(); err != nil { - return err - } - if err := n.apply(); err != nil { - return err - } - _, err := n.WaitForAllPodsReady(context.Background(), 3*time.Minute) +func WaitReady(t time.Duration) error { + _, err := Client.waitAllPodsReady(context.Background(), t) return err } -func (n *Pods) ResetPodsConfig() { - n.cfg.Pods = make([]*PodConfig, 0) -} - // Manifest returns current generated YAML manifest -func (n *Pods) Manifest() *string { +func (n *App) Manifest() *string { return n.manifest } - -func ApplyFlag() bool { return os.Getenv("APPLY") == "true" } diff --git a/pods/pods_test.go b/pods/pods_test.go index f48538f0e..d3e26be6c 100644 --- a/pods/pods_test.go +++ b/pods/pods_test.go @@ -1,7 +1,6 @@ package pods_test import ( - "context" "os" "testing" @@ -10,24 +9,14 @@ import ( "github.com/stretchr/testify/require" ) -func Apply() bool { return os.Getenv("APPLY") == "true" } - -func defaultNoErr(t *testing.T, _ *p.Pods, err error) { require.NoError(t, err) } - -func onePod(t *testing.T, p *p.Pods, err error) { - require.NoError(t, err) - pods, err := p.GetPods(context.Background()) - require.NoError(t, err) - require.Len(t, pods.Items, 1) -} +func defaultNoErr(t *testing.T, err error) { require.NoError(t, err) } func TestPods(t *testing.T) { tests := []struct { - name string - props *p.Config - skipCI bool - validateManifest func(t *testing.T, p *p.Pods, err error) - validateDeployment func(t *testing.T, p *p.Pods, err error) + name string + props *p.Config + skipCI bool + validateManifest func(t *testing.T, err error) }{ { name: "test-single-pod", @@ -41,8 +30,7 @@ func TestPods(t *testing.T) { }, }, }, - validateManifest: defaultNoErr, - validateDeployment: onePod, + validateManifest: defaultNoErr, }, { name: "test-command", @@ -59,8 +47,7 @@ func TestPods(t *testing.T) { }, }, }, - validateManifest: defaultNoErr, - validateDeployment: onePod, + validateManifest: defaultNoErr, }, { name: "test-instances", @@ -76,12 +63,6 @@ func TestPods(t *testing.T) { }, }, validateManifest: defaultNoErr, - validateDeployment: func(t *testing.T, p *p.Pods, err error) { - require.NoError(t, err) - pods, err := p.GetPods(context.Background()) - require.NoError(t, err) - require.Len(t, pods.Items, 2) - }, }, { name: "test-multiple-pods", @@ -101,12 +82,6 @@ func TestPods(t *testing.T) { }, }, validateManifest: defaultNoErr, - validateDeployment: func(t *testing.T, p *p.Pods, err error) { - require.NoError(t, err) - pods, err := p.GetPods(context.Background()) - require.NoError(t, err) - require.Len(t, pods.Items, 2) - }, }, { name: "test-custom-resources", @@ -122,8 +97,7 @@ func TestPods(t *testing.T) { }, }, }, - validateManifest: defaultNoErr, - validateDeployment: onePod, + validateManifest: defaultNoErr, }, { name: "test-invalid-ports", @@ -137,7 +111,7 @@ func TestPods(t *testing.T) { }, }, }, - validateManifest: func(t *testing.T, p *p.Pods, err error) { + validateManifest: func(t *testing.T, err error) { require.Contains(t, err.Error(), "invalid port mapping") }, }, @@ -162,14 +136,6 @@ func TestPods(t *testing.T) { }, }, validateManifest: defaultNoErr, - validateDeployment: func(t *testing.T, p *p.Pods, err error) { - onePod(t, p, err) - cms, err := p.GetConfigMaps(context.Background()) - require.NoError(t, err) - require.Equal(t, 2, len(cms)) - require.Equal(t, `test`, cms["test-pod-1-configmap"]["config.toml"]) - require.Equal(t, `test`, cms["test-pod-1-configmap"]["config2.toml"]) - }, }, { name: "test-secrets", @@ -192,14 +158,6 @@ func TestPods(t *testing.T) { }, }, validateManifest: defaultNoErr, - validateDeployment: func(t *testing.T, p *p.Pods, err error) { - onePod(t, p, err) - secrets, err := p.GetSecrets(context.Background()) - require.NoError(t, err) - require.Equal(t, 1, len(secrets)) - require.Equal(t, []byte(`test`), secrets["test-pod-1-secret"]["secret.toml"]) - require.Equal(t, []byte(`test`), secrets["test-pod-1-secret"]["secret2.toml"]) - }, }, { name: "test-volumes", @@ -209,12 +167,6 @@ func TestPods(t *testing.T) { Pods: []*p.PodConfig{p.PostgreSQL("pg-x", "postgres:15", p.ResourcesSmall(), p.ResourcesSmall(), p.S("1Gi"))}, }, validateManifest: defaultNoErr, - validateDeployment: func(t *testing.T, p *p.Pods, err error) { - onePod(t, p, err) - volumes, err := p.GetPersistentVolumes(context.Background()) - require.NoError(t, err) - require.Len(t, volumes, 1) - }, }, { name: "test-services", @@ -229,12 +181,6 @@ func TestPods(t *testing.T) { }, }, validateManifest: defaultNoErr, - validateDeployment: func(t *testing.T, p *p.Pods, err error) { - require.NoError(t, err) - svcs, err := p.GetServices(context.Background()) - require.NoError(t, err) - require.Len(t, svcs, 1) - }, }, } @@ -243,25 +189,10 @@ func TestPods(t *testing.T) { if os.Getenv("CI") == "true" && tt.skipCI { t.Skip("this test can't be run in CI because of GHA limitations") } - p := p.New(tt.props) - err := p.Generate() - if tt.validateManifest != nil { - tt.validateManifest(t, p, err) - } - if Apply() { - err := p.CreateNamespace(*tt.props.Namespace) - require.NoError(t, err) - t.Cleanup(func() { - _ = p.RemoveNamespace(*tt.props.Namespace) - }) - err = p.Apply() - if tt.validateDeployment != nil { - tt.validateDeployment(t, p, err) - } - return - } + manifest, err := p.Run(tt.props) + tt.validateManifest(t, err) if err == nil { - snaps.MatchSnapshot(t, *p.Manifest()) + snaps.MatchSnapshot(t, manifest) } }) } From 3deab4784088abe91f0bb6c404c726493021acaf Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 01:33:25 +0100 Subject: [PATCH 03/16] tidy --- framework/examples/.gitignore | 2 +- framework/go.mod | 2 +- pods/client.go | 2 +- pods/go.mod | 3 +-- pods/pods.go | 36 +++++++++++++++++++++++------------ 5 files changed, 28 insertions(+), 17 deletions(-) diff --git a/framework/examples/.gitignore b/framework/examples/.gitignore index c3ff58d5c..3f6b1d2ec 100644 --- a/framework/examples/.gitignore +++ b/framework/examples/.gitignore @@ -35,4 +35,4 @@ promtail-config.yml **/*cache.toml **/postgresql_data **/postgresql_data/* -**/pods.tmp.yml +**/pods-out diff --git a/framework/go.mod b/framework/go.mod index 760a8969f..90b97eede 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -12,6 +12,7 @@ require ( dario.cat/mergo v1.0.1 github.com/Masterminds/semver/v3 v3.4.0 github.com/avast/retry-go/v4 v4.6.1 + github.com/aws/jsii-runtime-go v1.108.0 github.com/block-vision/sui-go-sdk v1.0.6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/docker/docker v28.3.3+incompatible @@ -62,7 +63,6 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.55.6 // indirect github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.108.0 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/pods/client.go b/pods/client.go index a1bf62afc..bac353f49 100644 --- a/pods/client.go +++ b/pods/client.go @@ -152,7 +152,7 @@ func (k *API) CreateNamespace(name string) error { _, err := k.ClientSet.CoreV1().Namespaces().Create(context.Background(), namespace, metav1.CreateOptions{}) if err != nil { // coverage-ignore if strings.Contains(err.Error(), "already exists") { - L.Info().Str("Namespace", name).Msg("Namespace already exists, proceeding..") + L.Debug().Str("Namespace", name).Msg("Namespace already exists, proceeding..") return nil } return fmt.Errorf("failed to create namespace: %v", err) diff --git a/pods/go.mod b/pods/go.mod index 99daed915..85b485460 100644 --- a/pods/go.mod +++ b/pods/go.mod @@ -2,12 +2,12 @@ module github.com/smartcontractkit/pods go 1.24.0 - require ( github.com/aws/constructs-go/constructs/v10 v10.4.2 github.com/aws/jsii-runtime-go v1.108.0 github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 github.com/gkampitakis/go-snaps v0.5.11 + github.com/google/uuid v1.6.0 github.com/rs/zerolog v1.33.0 github.com/stretchr/testify v1.10.0 k8s.io/api v0.32.3 @@ -33,7 +33,6 @@ require ( github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect diff --git a/pods/pods.go b/pods/pods.go index 26eefdd65..4c969a7b9 100644 --- a/pods/pods.go +++ b/pods/pods.go @@ -6,6 +6,7 @@ import ( "log" "os" "os/exec" + "path/filepath" "strconv" "strings" "sync" @@ -16,10 +17,16 @@ import ( "github.com/smartcontractkit/pods/imports/k8s" ) -// JSIIGlobalMu is a global mutex for cdk8s JSII runtime -// allows to generate manifests in a goroutine-safe way +const ( + ManifestsDir = "pods-out" +) + var ( - Client *API + Client *API + // JSIIGlobalMu is a global mutex for cdk8s JSII runtime + // allows to generate manifests in a goroutine-safe way + // since some calls to "k8s" package simplify the deployment + // this client should be used on the client side to lock JSIIGlobalMu = &sync.Mutex{} ) @@ -82,7 +89,7 @@ type App struct { manifest *string } -// Run creates and generates a new K8s YAML manifest +// Run generates and applies a new K8s YAML manifest func Run(cfg *Config) (string, error) { var err error Client, err = NewAPI(*cfg.Namespace) @@ -130,7 +137,7 @@ func (n *App) generate() error { } // Define labels - labels := map[string]*string{"app": S(podName), "generated-by": S("cdk8s")} + labels := map[string]*string{"app": S(podName), "generated-by": S("pods")} for k, v := range podConfig.Labels { labels[k] = S(v) } @@ -230,7 +237,7 @@ func (n *App) generate() error { containerPorts = append(containerPorts, &k8s.ContainerPort{ Name: S(fmt.Sprintf("port-%d", i)), - // Use HostPort here to enable node exposed port + // Use HostPort field here to enable node exposed port ContainerPort: &containerPort, }) } @@ -361,7 +368,7 @@ func (n *App) generate() error { } } yaml := n.app.SynthYaml() - L.Info().Msg(*yaml) + L.Debug().Msg(*yaml) n.manifest = yaml return nil } @@ -371,19 +378,24 @@ func (n *App) apply() error { return nil } if n.manifest == nil { - return fmt.Errorf("manifest is not generated. Call Generate() first") + return fmt.Errorf("manifest is empty, nothing to generate") } - tmpFile := fmt.Sprintf("pods-%s.tmp.yml", uuid.NewString()[0:5]) - err := os.WriteFile(tmpFile, []byte(*n.manifest), 0o600) + // re-create deployments dir + _ = os.RemoveAll(ManifestsDir) + _ = os.Mkdir(ManifestsDir, os.ModePerm) + // write generate manifest + manifestFile := filepath.Join(ManifestsDir, fmt.Sprintf("pods-%s.tmp.yml", uuid.NewString()[0:5])) + err := os.WriteFile(manifestFile, []byte(*n.manifest), 0o600) if err != nil { return fmt.Errorf("failed to write manifest to file: %v", err) } - cmd := exec.Command("kubectl", "apply", "-f", tmpFile, "--wait=true") + // apply the manifest + cmd := exec.Command("kubectl", "apply", "-f", manifestFile, "--wait=true") output, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("failed to apply manifest: %v\nOutput: %s", err, string(output)) } - L.Info().Msg("Manifest applied successfully:") + L.Info().Str("Path", manifestFile).Msg("Manifest applied successfully:") L.Info().Msg(string(output)) return nil } From 16067698676bd2a71f1b70a78ce42a96c40f6501 Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 01:46:33 +0100 Subject: [PATCH 04/16] replace until merged and pinned --- book/go.mod | 43 ++- book/go.sum | 99 ++++++- framework/components/blockchain/anvil.go | 3 +- framework/components/blockchain/blockchain.go | 2 +- framework/components/blockchain/sui.go | 4 +- framework/components/clnode/clnode.go | 255 +++++++++--------- framework/components/dockercompose/go.mod | 16 +- framework/components/dockercompose/go.sum | 50 ++-- framework/components/fake/go.mod | 5 +- framework/components/fake/go.sum | 80 +++++- .../components/simple_node_set/node_set.go | 7 +- framework/examples/chip_ingress/go.mod | 10 +- framework/examples/chip_ingress/go.sum | 46 +++- framework/examples/myproject/go.mod | 7 +- framework/examples/myproject/go.sum | 16 +- framework/examples/myproject_cll/go.mod | 45 +++- framework/examples/myproject_cll/go.sum | 98 ++++++- pods/environment/environment.go | 12 +- 18 files changed, 586 insertions(+), 212 deletions(-) diff --git a/book/go.mod b/book/go.mod index 2112a9460..31b32f396 100644 --- a/book/go.mod +++ b/book/go.mod @@ -5,6 +5,7 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../framework github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../framework/components/fake + github.com/smartcontractkit/pods => ../pods ) require ( @@ -14,25 +15,65 @@ require ( require ( github.com/DataDog/zstd v1.5.2 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect + github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect + github.com/aws/jsii-runtime-go v1.108.0 // indirect github.com/block-vision/sui-go-sdk v1.0.6 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect github.com/cespare/cp v1.1.1 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect github.com/creack/pty v1.1.24 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/ethereum/c-kzg-4844/v2 v2.1.5 // indirect github.com/ethereum/go-ethereum v1.16.8 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/go-resty/resty/v2 v2.16.5 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.9 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/moby/go-archive v0.1.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/cors v1.11.1 // indirect + github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/testify v1.10.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/testcontainers/testcontainers-go v0.37.0 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/yuin/goldmark v1.4.13 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/term v0.32.0 // indirect + golang.org/x/time v0.10.0 // indirect + golang.org/x/tools v0.33.0 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect + k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) require ( @@ -105,7 +146,7 @@ require ( github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe // indirect - github.com/tidwall/gjson v1.17.0 // indirect + github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect diff --git a/book/go.sum b/book/go.sum index 4070bfc8f..319969ad4 100644 --- a/book/go.sum +++ b/book/go.sum @@ -8,14 +8,22 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg6 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0= github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= @@ -27,6 +35,8 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -102,6 +112,8 @@ github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -114,6 +126,8 @@ github.com/ethereum/go-ethereum v1.16.8 h1:LLLfkZWijhR5m6yrAXbdlTeXoqontH+Ga2f9i github.com/ethereum/go-ethereum v1.16.8/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= @@ -123,6 +137,8 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= @@ -133,6 +149,12 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= +github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= +github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -141,6 +163,12 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -151,9 +179,14 @@ github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27 github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= +github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -175,14 +208,19 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= @@ -190,6 +228,8 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= @@ -218,6 +258,8 @@ github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7 github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -242,6 +284,10 @@ github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a h1:3Bm7EwfUQUvhNe github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -262,6 +308,8 @@ github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -281,6 +329,8 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -288,12 +338,17 @@ github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -351,6 +406,8 @@ github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0Zqm github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -371,13 +428,15 @@ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDd github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= -github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= -github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= @@ -388,10 +447,14 @@ github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65E github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -427,8 +490,13 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbD golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -446,6 +514,8 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -499,9 +569,12 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -536,9 +609,13 @@ google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/guregu/null.v4 v4.0.0 h1:1Wm3S1WEA2I26Kq+6vcW+w0gcDo44YKYD7YIEJNHDjg= gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -554,4 +631,22 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= +k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 1529bece1..36232acd7 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -96,7 +96,6 @@ func newAnvil(ctx context.Context, in *Input) (*Output, error) { }, }, }, nil - } else { - return createGenericEvmContainer(ctx, in, req, false) } + return createGenericEvmContainer(ctx, in, req, false) } diff --git a/framework/components/blockchain/blockchain.go b/framework/components/blockchain/blockchain.go index 790282439..710f31b92 100644 --- a/framework/components/blockchain/blockchain.go +++ b/framework/components/blockchain/blockchain.go @@ -68,7 +68,7 @@ type Input struct { NumberOfCantonValidators int `toml:"number_of_canton_validators" comment:"Number of Canton network validators"` // GAPv2 specific params - HostNetworkMode bool `toml:"host_network_mode" comment:"GAPv2 specific paramter: host netowork mode, if 'true' will run environment in host network mode"` + HostNetworkMode bool `toml:"host_network_mode" comment:"GAPv2 specific parameter: host netowork mode, if 'true' will run environment in host network mode"` CertificatesPath string `toml:"certificates_path" comment:"GAPv2 specific parameter: path to default Ubuntu's certificates"` // Optional params diff --git a/framework/components/blockchain/sui.go b/framework/components/blockchain/sui.go index 0bd8ca199..34945ffe5 100644 --- a/framework/components/blockchain/sui.go +++ b/framework/components/blockchain/sui.go @@ -27,10 +27,10 @@ const ( // SuiWalletInfo info about Sui account/wallet type SuiWalletInfo struct { Alias *string `toml:"alias" json:"alias" comment:"Alias key name, usually null"` // Alias key name, usually "null" - Flag int `toml:"flag" json:"flag" comment:"-"` // Flag is an integer + Flag int `toml:"flag" json:"flag" comment:"-"` // Flag is an integer KeyScheme string `toml:"key_scheme" json:"keyScheme" comment:"Sui key scheme"` // Key scheme is a string Mnemonic string `toml:"mnemonic" json:"mnemonic" comment:"Sui key mnemonic"` // Mnemonic is a string - PeerId string `toml:"peer_id" json:"peerId" comment:"Sui key peer ID"` // Peer ID is a string + PeerId string `toml:"peer_id" json:"peerId" comment:"Sui key peer ID"` // Peer ID is a string PublicBase64Key string `toml:"public_base64_key" json:"publicBase64Key" comment:"Sui key in base64 format"` // Public key in Base64 format SuiAddress string `toml:"sui_address" json:"suiAddress" comment:"Sui key address"` // Sui address is a 0x prefixed hex string } diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 43a92f020..402b8e55d 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -308,6 +308,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, Limits: pods.ResourcesSmall(), Ports: []string{"6688:6688", "6690:6690"}, ContainerSecurityContext: &k8s.SecurityContext{ + // these are specific things we need to staging cluster RunAsNonRoot: jsii.Bool(true), RunAsUser: pods.I(14933), RunAsGroup: pods.I(999), @@ -337,10 +338,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, "secrets-overrides.toml": pods.S("/config/secrets-overrides"), "secrets-user-overrides.toml": pods.S("/config/user-secrets-overrides"), }, - // Command: pods.S("chainlink -c /config/config -s /config/secrets node start -d -a /config/apicredentials"), Command: pods.S("chainlink -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials"), - // TODO: override the same way as in Docker - // Command: pods.S(strings.Join(generateEntryPoint(), " ")), }, }, }) @@ -355,142 +353,141 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), }, nil - } else { - // local deployment - req := tc.ContainerRequest{ - AlwaysPullImage: in.Node.PullImage, - Image: in.Node.Image, - Name: containerName, - Labels: framework.DefaultTCLabels(), - Networks: []string{framework.DefaultNetworkName}, - NetworkAliases: map[string][]string{ - framework.DefaultNetworkName: {containerName}, - }, - Env: in.Node.EnvVars, - ExposedPorts: exposedPorts, - Entrypoint: generateEntryPoint(), - WaitingFor: wait.ForHTTP("/"). - WithPort(DefaultHTTPPort). - WithStartupTimeout(3 * time.Minute). - WithPollInterval(200 * time.Millisecond), - Mounts: tc.ContainerMounts{ - { - // various configuration files - Source: tc.GenericVolumeMountSource{ - Name: ConfigVolumeName + "-" + in.Node.Name, - }, - Target: "/config", - }, - { - // kv store of the OCR jobs and other state files are stored - // in the user's home instead of the DB - Source: tc.GenericVolumeMountSource{ - Name: HomeVolumeName + "-" + in.Node.Name, - }, - Target: "/home/chainlink", - }, - }, - } - if in.Node.HTTPPort != 0 && in.Node.P2PPort != 0 { - req.HostConfigModifier = func(h *container.HostConfig) { - framework.NoDNS(in.NoDNS, h) - h.PortBindings = portBindings - framework.ResourceLimitsFunc(h, in.Node.ContainerResources) - } - } - files := []tc.ContainerFile{ - { - HostFilePath: cfgPath.Name(), - ContainerFilePath: "/config/config", - FileMode: 0o644, - }, - { - HostFilePath: secretsPath.Name(), - ContainerFilePath: "/config/secrets", - FileMode: 0o644, - }, - { - HostFilePath: overridesFile.Name(), - ContainerFilePath: "/config/overrides", - FileMode: 0o644, - }, - { - HostFilePath: userOverridesFile.Name(), - ContainerFilePath: "/config/user-overrides", - FileMode: 0o644, - }, - { - HostFilePath: secretsOverridesFile.Name(), - ContainerFilePath: "/config/secrets-overrides", - FileMode: 0o644, - }, - { - HostFilePath: userSecretsOverridesFile.Name(), - ContainerFilePath: "/config/user-secrets-overrides", - FileMode: 0o644, - }, + } + // local deployment + req := tc.ContainerRequest{ + AlwaysPullImage: in.Node.PullImage, + Image: in.Node.Image, + Name: containerName, + Labels: framework.DefaultTCLabels(), + Networks: []string{framework.DefaultNetworkName}, + NetworkAliases: map[string][]string{ + framework.DefaultNetworkName: {containerName}, + }, + Env: in.Node.EnvVars, + ExposedPorts: exposedPorts, + Entrypoint: generateEntryPoint(), + WaitingFor: wait.ForHTTP("/"). + WithPort(DefaultHTTPPort). + WithStartupTimeout(3 * time.Minute). + WithPollInterval(200 * time.Millisecond), + Mounts: tc.ContainerMounts{ { - HostFilePath: passwordPath.Name(), - ContainerFilePath: "/config/node_password", - FileMode: 0o644, + // various configuration files + Source: tc.GenericVolumeMountSource{ + Name: ConfigVolumeName + "-" + in.Node.Name, + }, + Target: "/config", }, { - HostFilePath: apiCredentialsPath.Name(), - ContainerFilePath: "/config/apicredentials", - FileMode: 0o644, + // kv store of the OCR jobs and other state files are stored + // in the user's home instead of the DB + Source: tc.GenericVolumeMountSource{ + Name: HomeVolumeName + "-" + in.Node.Name, + }, + Target: "/home/chainlink", }, + }, + } + if in.Node.HTTPPort != 0 && in.Node.P2PPort != 0 { + req.HostConfigModifier = func(h *container.HostConfig) { + framework.NoDNS(in.NoDNS, h) + h.PortBindings = portBindings + framework.ResourceLimitsFunc(h, in.Node.ContainerResources) } - if in.Node.CapabilityContainerDir == "" { - in.Node.CapabilityContainerDir = DefaultCapabilitiesDir - } - for _, cp := range in.Node.CapabilitiesBinaryPaths { - cpPath := filepath.Base(cp) - framework.L.Info().Any("Path", cpPath).Str("Binary", cpPath).Msg("Copying capability binary") - files = append(files, tc.ContainerFile{ - HostFilePath: cp, - ContainerFilePath: filepath.Join(in.Node.CapabilityContainerDir, cpPath), - FileMode: 0o777, - }) - } - req.Files = append(req.Files, files...) - if req.Image != "" && (in.Node.DockerFilePath != "" || in.Node.DockerContext != "") { - return nil, errors.New("you provided both 'image' and one of 'docker_file', 'docker_ctx' fields. Please provide either 'image' or params to build a local one") - } - if req.Image == "" { - req.Image = TmpImageName - if err := framework.BuildImageOnce(once, in.Node.DockerContext, in.Node.DockerFilePath, req.Image, in.Node.DockerBuildArgs); err != nil { - return nil, err - } - req.KeepImage = false - } - c, err := tc.GenericContainer(ctx, tc.GenericContainerRequest{ - ContainerRequest: req, - Started: true, + } + files := []tc.ContainerFile{ + { + HostFilePath: cfgPath.Name(), + ContainerFilePath: "/config/config", + FileMode: 0o644, + }, + { + HostFilePath: secretsPath.Name(), + ContainerFilePath: "/config/secrets", + FileMode: 0o644, + }, + { + HostFilePath: overridesFile.Name(), + ContainerFilePath: "/config/overrides", + FileMode: 0o644, + }, + { + HostFilePath: userOverridesFile.Name(), + ContainerFilePath: "/config/user-overrides", + FileMode: 0o644, + }, + { + HostFilePath: secretsOverridesFile.Name(), + ContainerFilePath: "/config/secrets-overrides", + FileMode: 0o644, + }, + { + HostFilePath: userSecretsOverridesFile.Name(), + ContainerFilePath: "/config/user-secrets-overrides", + FileMode: 0o644, + }, + { + HostFilePath: passwordPath.Name(), + ContainerFilePath: "/config/node_password", + FileMode: 0o644, + }, + { + HostFilePath: apiCredentialsPath.Name(), + ContainerFilePath: "/config/apicredentials", + FileMode: 0o644, + }, + } + if in.Node.CapabilityContainerDir == "" { + in.Node.CapabilityContainerDir = DefaultCapabilitiesDir + } + for _, cp := range in.Node.CapabilitiesBinaryPaths { + cpPath := filepath.Base(cp) + framework.L.Info().Any("Path", cpPath).Str("Binary", cpPath).Msg("Copying capability binary") + files = append(files, tc.ContainerFile{ + HostFilePath: cp, + ContainerFilePath: filepath.Join(in.Node.CapabilityContainerDir, cpPath), + FileMode: 0o777, }) - if err != nil { - return nil, err - } - ip, err := c.ContainerIP(ctx) - if err != nil { - return nil, err - } - host, err := framework.GetHostWithContext(ctx, c) - if err != nil { + } + req.Files = append(req.Files, files...) + if req.Image != "" && (in.Node.DockerFilePath != "" || in.Node.DockerContext != "") { + return nil, errors.New("you provided both 'image' and one of 'docker_file', 'docker_ctx' fields. Please provide either 'image' or params to build a local one") + } + if req.Image == "" { + req.Image = TmpImageName + if err := framework.BuildImageOnce(once, in.Node.DockerContext, in.Node.DockerFilePath, req.Image, in.Node.DockerBuildArgs); err != nil { return nil, err } + req.KeepImage = false + } + c, err := tc.GenericContainer(ctx, tc.GenericContainerRequest{ + ContainerRequest: req, + Started: true, + }) + if err != nil { + return nil, err + } + ip, err := c.ContainerIP(ctx) + if err != nil { + return nil, err + } + host, err := framework.GetHostWithContext(ctx, c) + if err != nil { + return nil, err + } - mp := nat.Port(fmt.Sprintf("%d/tcp", in.Node.HTTPPort)) + mp := nat.Port(fmt.Sprintf("%d/tcp", in.Node.HTTPPort)) - return &NodeOut{ - APIAuthUser: DefaultAPIUser, - APIAuthPassword: DefaultAPIPassword, - ContainerName: containerName, - ExternalURL: fmt.Sprintf("http://%s:%s", host, mp.Port()), - InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), - InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), - InternalIP: ip, - }, nil - } + return &NodeOut{ + APIAuthUser: DefaultAPIUser, + APIAuthPassword: DefaultAPIPassword, + ContainerName: containerName, + ExternalURL: fmt.Sprintf("http://%s:%s", host, mp.Port()), + InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), + InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), + InternalIP: ip, + }, nil } type DefaultCLNodeConfig struct { diff --git a/framework/components/dockercompose/go.mod b/framework/components/dockercompose/go.mod index 60fd6eb5f..32d443273 100644 --- a/framework/components/dockercompose/go.mod +++ b/framework/components/dockercompose/go.mod @@ -2,7 +2,10 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework/compone go 1.25.3 -replace github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework +replace ( + github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework + github.com/smartcontractkit/pods => ../../../pods +) // make vulnerability scanner happy replace github.com/containerd/containerd/v2 => github.com/containerd/containerd/v2 v2.1.5 @@ -99,7 +102,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -206,12 +209,15 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.43.0 // indirect golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect + golang.org/x/mod v0.33.0 // indirect golang.org/x/net v0.45.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect golang.org/x/term v0.36.0 // indirect golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.12.0 // indirect + golang.org/x/tools/cmd/godoc v0.1.0-deprecated // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/grpc v1.75.0 // indirect @@ -223,7 +229,7 @@ require ( k8s.io/apimachinery v0.32.3 // indirect k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect diff --git a/framework/components/dockercompose/go.sum b/framework/components/dockercompose/go.sum index 7d5a51e22..314cebc72 100644 --- a/framework/components/dockercompose/go.sum +++ b/framework/components/dockercompose/go.sum @@ -63,6 +63,10 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 h1:S7EPdMVZod8BGKQQPTBK+FcX github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -85,6 +89,8 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -222,6 +228,8 @@ github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv0 github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20= @@ -308,8 +316,8 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93 h1:jc2UWq7CbdszqeH6qu1ougXMIUBfSy8Pbh/anURYbGI= github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -637,12 +645,12 @@ github.com/testcontainers/testcontainers-go/modules/compose v0.40.0 h1:Bj8W7GieY github.com/testcontainers/testcontainers-go/modules/compose v0.40.0/go.mod h1:fEEGqtsoH1KS+sUi1WG4+vH3fqdCyip1U9Hd8P3SRMA= github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375/go.mod h1:xRroudyp5iVtxKqZCrA6n2TLFRBf8bmnjr1UD4x+z7g= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= @@ -669,6 +677,8 @@ github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8 github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= +github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= @@ -731,10 +741,12 @@ golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= -golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= +golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -765,8 +777,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -793,8 +805,10 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= @@ -816,8 +830,12 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= -golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= +golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= +golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools/cmd/godoc v0.1.0-deprecated h1:sEGTwp9aZNTHsdf/2BGaRqE4ZLndRVH17rbQ2OVun9Q= +golang.org/x/tools/cmd/godoc v0.1.0-deprecated/go.mod h1:J6VY4iFch6TIm456U3fnw1EJZaIqcYlhHu6GpHQ9HJk= +golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= +golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -917,8 +935,8 @@ k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= diff --git a/framework/components/fake/go.mod b/framework/components/fake/go.mod index 7e890ab3b..dc755f609 100644 --- a/framework/components/fake/go.mod +++ b/framework/components/fake/go.mod @@ -2,7 +2,10 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework/compone go 1.24.4 -replace github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework +replace ( + github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework + github.com/smartcontractkit/pods => ../../../pods +) require ( github.com/docker/docker v28.3.3+incompatible diff --git a/framework/components/fake/go.sum b/framework/components/fake/go.sum index 90892b59e..e2c38fb96 100644 --- a/framework/components/fake/go.sum +++ b/framework/components/fake/go.sum @@ -4,12 +4,18 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8af github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/block-vision/sui-go-sdk v1.0.6 h1:FysCc4TJC8v4BEBbCjJPDR4iR5eKqJT1dxGwsT67etg= @@ -19,6 +25,8 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= @@ -64,16 +72,22 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv09/1ME4= github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= @@ -88,6 +102,12 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -105,10 +125,16 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= @@ -117,6 +143,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5uk github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -137,6 +165,8 @@ github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a h1:3Bm7EwfUQUvhNe github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -151,6 +181,8 @@ github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -168,6 +200,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -192,6 +228,8 @@ github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0Zqm github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -208,12 +246,12 @@ github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKt github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= @@ -222,8 +260,12 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -255,14 +297,20 @@ golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -293,6 +341,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -308,13 +358,35 @@ google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/guregu/null.v4 v4.0.0 h1:1Wm3S1WEA2I26Kq+6vcW+w0gcDo44YKYD7YIEJNHDjg= gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= +k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/framework/components/simple_node_set/node_set.go b/framework/components/simple_node_set/node_set.go index 49399eb64..d6b26613e 100644 --- a/framework/components/simple_node_set/node_set.go +++ b/framework/components/simple_node_set/node_set.go @@ -11,12 +11,13 @@ import ( "golang.org/x/sync/errgroup" + "github.com/smartcontractkit/pods" + "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/clnode" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/postgres" - "github.com/smartcontractkit/pods" ) const ( @@ -205,7 +206,9 @@ func sharedDBSetup(ctx context.Context, in *Input, bcOut *blockchain.Output) (*O sortNodeOutsByHostPort(nodeOuts) // wait for all K8s services at once if os.Getenv(components.K8sNamespaceEnvVar) != "" { - pods.WaitReady(3 * time.Minute) + if err := pods.WaitReady(3 * time.Minute); err != nil { + return nil, err + } } return &Output{ UseCache: true, diff --git a/framework/examples/chip_ingress/go.mod b/framework/examples/chip_ingress/go.mod index 1b51acf39..fb4fc4a29 100644 --- a/framework/examples/chip_ingress/go.mod +++ b/framework/examples/chip_ingress/go.mod @@ -5,6 +5,7 @@ go 1.25.3 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/dockercompose => ../../components/dockercompose + github.com/smartcontractkit/pods => ../../../pods ) // make vulnerability scanner happy @@ -94,7 +95,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-github/v72 v72.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -206,11 +207,12 @@ require ( golang.org/x/crypto v0.43.0 // indirect golang.org/x/net v0.45.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.41.0 // indirect golang.org/x/term v0.36.0 // indirect golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.12.0 // indirect + golang.org/x/tools/godoc v0.1.0-deprecated // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/grpc v1.75.0 // indirect @@ -223,7 +225,7 @@ require ( k8s.io/apimachinery v0.32.3 // indirect k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect diff --git a/framework/examples/chip_ingress/go.sum b/framework/examples/chip_ingress/go.sum index 8440202d0..598413b85 100644 --- a/framework/examples/chip_ingress/go.sum +++ b/framework/examples/chip_ingress/go.sum @@ -63,6 +63,10 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 h1:S7EPdMVZod8BGKQQPTBK+FcX github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -85,6 +89,8 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -222,6 +228,8 @@ github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv0 github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20= @@ -311,8 +319,8 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93 h1:jc2UWq7CbdszqeH6qu1ougXMIUBfSy8Pbh/anURYbGI= github.com/google/certificate-transparency-go v1.0.10-0.20180222191210-5ab67e519c93/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -636,12 +644,12 @@ github.com/testcontainers/testcontainers-go/modules/compose v0.40.0 h1:Bj8W7GieY github.com/testcontainers/testcontainers-go/modules/compose v0.40.0/go.mod h1:fEEGqtsoH1KS+sUi1WG4+vH3fqdCyip1U9Hd8P3SRMA= github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA= github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375/go.mod h1:xRroudyp5iVtxKqZCrA6n2TLFRBf8bmnjr1UD4x+z7g= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= @@ -668,6 +676,8 @@ github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8 github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= +github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= @@ -730,10 +740,12 @@ golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= -golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= +golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -763,8 +775,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -791,8 +803,10 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= @@ -816,6 +830,10 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= +golang.org/x/tools/cmd/godoc v0.1.0-deprecated h1:sEGTwp9aZNTHsdf/2BGaRqE4ZLndRVH17rbQ2OVun9Q= +golang.org/x/tools/cmd/godoc v0.1.0-deprecated/go.mod h1:J6VY4iFch6TIm456U3fnw1EJZaIqcYlhHu6GpHQ9HJk= +golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= +golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -913,8 +931,8 @@ k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= diff --git a/framework/examples/myproject/go.mod b/framework/examples/myproject/go.mod index 6b7f1c9a8..00fea49c6 100644 --- a/framework/examples/myproject/go.mod +++ b/framework/examples/myproject/go.mod @@ -91,7 +91,7 @@ require ( github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.17.0 // indirect + github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/bytedance/sonic v1.12.3 // indirect github.com/bytedance/sonic/loader v0.2.0 // indirect github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 // indirect @@ -101,7 +101,6 @@ require ( github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect github.com/coder/websocket v1.8.12 // indirect - github.com/consensys/bavard v0.1.22 // indirect github.com/consensys/gnark-crypto v0.14.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v1.0.0-rc.1 // indirect @@ -213,7 +212,6 @@ require ( github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect @@ -333,7 +331,6 @@ require ( k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect - rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/controller-runtime v0.19.0 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect @@ -342,3 +339,5 @@ require ( // replicating the replace directive on cosmos SDK replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + +replace github.com/consensys/gnark-crypto => github.com/consensys/gnark-crypto v0.19.2 diff --git a/framework/examples/myproject/go.sum b/framework/examples/myproject/go.sum index 3cdc2b954..eb8308c88 100644 --- a/framework/examples/myproject/go.sum +++ b/framework/examples/myproject/go.sum @@ -140,8 +140,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= -github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= github.com/block-vision/sui-go-sdk v1.0.6 h1:FysCc4TJC8v4BEBbCjJPDR4iR5eKqJT1dxGwsT67etg= @@ -218,10 +218,8 @@ github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AK github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= -github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A= -github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E= -github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0= +github.com/consensys/gnark-crypto v0.19.2 h1:qrEAIXq3T4egxqiliFFoNrepkIWVEeIYwt3UL0fvS80= +github.com/consensys/gnark-crypto v0.19.2/go.mod h1:rT23F0XSZqE0mUA0+pRtnL56IbPxs6gp4CeRsBk4XS0= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -535,7 +533,6 @@ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/Z github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= @@ -838,9 +835,6 @@ github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjU github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= @@ -1520,8 +1514,6 @@ k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= diff --git a/framework/examples/myproject_cll/go.mod b/framework/examples/myproject_cll/go.mod index aa909ed67..c49a868da 100644 --- a/framework/examples/myproject_cll/go.mod +++ b/framework/examples/myproject_cll/go.mod @@ -6,6 +6,7 @@ replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../../components/fake github.com/smartcontractkit/chainlink-testing-framework/wasp => ../../../wasp + github.com/smartcontractkit/pods => ../../../pods ) require ( @@ -17,13 +18,17 @@ require ( require ( dario.cat/mergo v1.0.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/avast/retry-go/v4 v4.6.1 // indirect + github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect + github.com/aws/jsii-runtime-go v1.108.0 // indirect github.com/bits-and-blooms/bitset v1.17.0 // indirect github.com/block-vision/sui-go-sdk v1.0.6 // indirect github.com/bytedance/sonic v1.12.3 // indirect github.com/bytedance/sonic/loader v0.2.0 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect @@ -44,17 +49,23 @@ require ( github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.2 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/ethereum/go-ethereum v1.15.0 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.6 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/gin-gonic/gin v1.10.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.22.1 // indirect @@ -62,22 +73,29 @@ require ( github.com/goccy/go-json v0.10.5 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.9 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/holiman/uint256 v1.3.2 // indirect + github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.18.2 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a // indirect github.com/magiconair/properties v1.8.10 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/user v0.4.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect @@ -85,6 +103,8 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect @@ -95,15 +115,19 @@ require ( github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect + github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/supranational/blst v0.3.13 // indirect github.com/testcontainers/testcontainers-go v0.37.0 // indirect - github.com/tidwall/gjson v1.14.4 // indirect + github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/yuin/goldmark v1.4.13 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect @@ -114,15 +138,32 @@ require ( golang.org/x/arch v0.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mod v0.25.0 // indirect golang.org/x/net v0.40.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect + golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.26.0 // indirect + golang.org/x/time v0.10.0 // indirect + golang.org/x/tools v0.33.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.72.2 // indirect google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/guregu/null.v4 v4.0.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect + k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/framework/examples/myproject_cll/go.sum b/framework/examples/myproject_cll/go.sum index c2cbda03e..18562fc05 100644 --- a/framework/examples/myproject_cll/go.sum +++ b/framework/examples/myproject_cll/go.sum @@ -6,14 +6,22 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= +github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= +github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= +github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= +github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= @@ -25,6 +33,8 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= @@ -90,16 +100,22 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv09/1ME4= github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= @@ -108,6 +124,12 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= +github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= +github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -117,6 +139,12 @@ github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -127,8 +155,12 @@ github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27 github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= +github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -142,12 +174,17 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -167,6 +204,8 @@ github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -191,6 +230,10 @@ github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a h1:3Bm7EwfUQUvhNe github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -212,6 +255,8 @@ github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= @@ -231,8 +276,14 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -282,6 +333,8 @@ github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0Zqm github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -300,12 +353,15 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= @@ -316,10 +372,14 @@ github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65E github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -353,14 +413,21 @@ golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -389,8 +456,11 @@ golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -406,8 +476,12 @@ google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/guregu/null.v4 v4.0.0 h1:1Wm3S1WEA2I26Kq+6vcW+w0gcDo44YKYD7YIEJNHDjg= gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -417,6 +491,24 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 h1:jGnCPejIetjiy2gqaJ5V0NLwTpF4wbQ6cZIItJCSHno= +k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pods/environment/environment.go b/pods/environment/environment.go index 4654432e6..991e074f1 100644 --- a/pods/environment/environment.go +++ b/pods/environment/environment.go @@ -5,6 +5,7 @@ import ( "strconv" "time" + "github.com/smartcontractkit/pods" p "github.com/smartcontractkit/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework/clclient" @@ -52,15 +53,10 @@ func NewEnvironment() error { }, } - k8sDeployment, err := p.New(cfg) + _, err := p.Run(cfg) if err != nil { return err } - err = k8sDeployment.Apply() - if err != nil { - return err - } - k8sDeployment.ResetPodsConfig() for i := 0; i < 2; i++ { cfg.Pods = append(cfg.Pods, &p.PodConfig{ @@ -116,12 +112,12 @@ func NewEnvironment() error { cfg.Pods = append(cfg.Pods, p.PostgreSQL(fmt.Sprintf("postgres-%d", i), pgImg, p.ResourcesSmall(), p.ResourcesSmall(), p.S("10Gi"))) } - err = k8sDeployment.Apply() + _, err = p.Run(cfg) if err != nil { return err } - return p.NewForwarder(k8sDeployment.API). + return p.NewForwarder(pods.Client). Forward([]p.PortForwardConfig{ { ServiceName: "anvil-svc", From 0183f54ef1f5ab0758d3ef8274f48f92f4e43e68 Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 02:01:34 +0100 Subject: [PATCH 05/16] update snapshots --- pods/__snapshots__/pods_test.snap | 60 +++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/pods/__snapshots__/pods_test.snap b/pods/__snapshots__/pods_test.snap index 7d6c051ae..4678b9e45 100755 --- a/pods/__snapshots__/pods_test.snap +++ b/pods/__snapshots__/pods_test.snap @@ -9,13 +9,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-single-pod spec: containers: @@ -46,7 +46,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -61,13 +61,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-multiple-pods spec: containers: @@ -98,7 +98,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer /-/-/-/ apiVersion: apps/v1 @@ -110,13 +110,13 @@ spec: selector: matchLabels: app: test-pod-2 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-2 - generated-by: cdk8s + generated-by: pods namespace: test-multiple-pods spec: containers: @@ -147,7 +147,7 @@ spec: targetPort: 80 selector: app: test-pod-2 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -162,13 +162,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-custom-resources spec: containers: @@ -199,7 +199,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -223,13 +223,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-configmaps spec: containers: @@ -278,7 +278,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -302,13 +302,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-secrets spec: containers: @@ -357,7 +357,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -373,13 +373,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-instances spec: containers: @@ -410,7 +410,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -436,14 +436,14 @@ spec: selector: matchLabels: app: pg-x - generated-by: cdk8s + generated-by: pods serviceName: pg-x-svc template: metadata: annotations: {} labels: app: pg-x - generated-by: cdk8s + generated-by: pods name: pg-x-pp namespace: test-volumes spec: @@ -506,7 +506,7 @@ spec: targetPort: 5432 selector: app: pg-x - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -521,13 +521,13 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods template: metadata: annotations: {} labels: app: test-pod-1 - generated-by: cdk8s + generated-by: pods namespace: test-services spec: containers: @@ -558,7 +558,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- @@ -574,7 +574,7 @@ spec: matchLabels: app: anvil chain.link/component: cl - generated-by: cdk8s + generated-by: pods template: metadata: annotations: @@ -582,7 +582,7 @@ spec: labels: app: anvil chain.link/component: cl - generated-by: cdk8s + generated-by: pods namespace: test-command spec: containers: @@ -618,7 +618,7 @@ spec: selector: app: anvil chain.link/component: cl - generated-by: cdk8s + generated-by: pods type: LoadBalancer --- From 895b7737118a7c4950d4314f6fda744bb91b5a1b Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 02:10:44 +0100 Subject: [PATCH 06/16] upgrade k8s definitions --- pods/Justfile | 3 + pods/README.md | 2 +- pods/cdk8s.yaml | 3 - pods/imports/k8s/Affinity.go | 2 + pods/imports/k8s/AggregationRule.go | 2 + pods/imports/k8s/ApiServiceSpec.go | 2 + pods/imports/k8s/AppArmorProfile.go | 2 + .../imports/k8s/ApplyConfigurationV1Alpha1.go | 34 - pods/imports/k8s/AuditAnnotation.go | 2 + pods/imports/k8s/AuditAnnotationV1Alpha1.go | 25 + pods/imports/k8s/AuditAnnotationV1Beta1.go | 2 + .../k8s/AwsElasticBlockStoreVolumeSource.go | 2 + pods/imports/k8s/AzureDiskVolumeSource.go | 2 + .../k8s/AzureFilePersistentVolumeSource.go | 2 + pods/imports/k8s/AzureFileVolumeSource.go | 2 + pods/imports/k8s/BasicDeviceV1Alpha3.go | 2 + pods/imports/k8s/BasicDeviceV1Beta1.go | 17 - pods/imports/k8s/BoundObjectReference.go | 2 + pods/imports/k8s/Capabilities.go | 2 + pods/imports/k8s/CelDeviceSelectorV1Alpha3.go | 4 +- pods/imports/k8s/CelDeviceSelectorV1Beta1.go | 37 - .../k8s/CephFsPersistentVolumeSource.go | 2 + pods/imports/k8s/CephFsVolumeSource.go | 2 + .../k8s/CertificateSigningRequestSpec.go | 2 + .../k8s/CinderPersistentVolumeSource.go | 2 + pods/imports/k8s/CinderVolumeSource.go | 2 + pods/imports/k8s/ClientIpConfig.go | 2 + .../k8s/ClusterTrustBundleProjection.go | 2 + .../k8s/ClusterTrustBundleSpecV1Alpha1.go | 2 + pods/imports/k8s/ComponentCondition.go | 2 + pods/imports/k8s/ConfigMapEnvSource.go | 2 + pods/imports/k8s/ConfigMapKeySelector.go | 2 + pods/imports/k8s/ConfigMapNodeConfigSource.go | 2 + pods/imports/k8s/ConfigMapProjection.go | 2 + pods/imports/k8s/ConfigMapVolumeSource.go | 2 + pods/imports/k8s/Container.go | 2 + pods/imports/k8s/ContainerPort.go | 2 + pods/imports/k8s/ContainerResizePolicy.go | 2 + .../k8s/ContainerResourceMetricSourceV2.go | 2 + pods/imports/k8s/CronJobSpec.go | 2 + .../k8s/CrossVersionObjectReference.go | 2 + .../k8s/CrossVersionObjectReferenceV2.go | 2 + pods/imports/k8s/CsiDriverSpec.go | 2 + pods/imports/k8s/CsiNodeDriver.go | 2 + pods/imports/k8s/CsiNodeSpec.go | 2 + pods/imports/k8s/CsiPersistentVolumeSource.go | 4 +- pods/imports/k8s/CsiVolumeSource.go | 2 + .../k8s/CustomResourceColumnDefinition.go | 2 + pods/imports/k8s/CustomResourceConversion.go | 2 + .../k8s/CustomResourceDefinitionNames.go | 2 + .../k8s/CustomResourceDefinitionSpec.go | 2 + .../k8s/CustomResourceDefinitionVersion.go | 2 + .../k8s/CustomResourceSubresourceScale.go | 2 + .../imports/k8s/CustomResourceSubresources.go | 2 + pods/imports/k8s/CustomResourceValidation.go | 2 + pods/imports/k8s/DaemonSetSpec.go | 2 + pods/imports/k8s/DaemonSetUpdateStrategy.go | 2 + pods/imports/k8s/DeleteOptions.go | 6 +- pods/imports/k8s/DeploymentSpec.go | 2 + pods/imports/k8s/DeploymentStrategy.go | 2 + pods/imports/k8s/DeviceAttributeV1Alpha3.go | 2 + pods/imports/k8s/DeviceAttributeV1Beta1.go | 15 - pods/imports/k8s/DeviceCapacityV1Beta1.go | 7 - .../k8s/DeviceClaimConfigurationV1Alpha3.go | 2 + .../k8s/DeviceClaimConfigurationV1Beta1.go | 11 - pods/imports/k8s/DeviceClaimV1Alpha3.go | 2 + pods/imports/k8s/DeviceClaimV1Beta1.go | 15 - .../k8s/DeviceClassConfigurationV1Alpha3.go | 2 + .../k8s/DeviceClassConfigurationV1Beta1.go | 7 - pods/imports/k8s/DeviceClassSpecV1Alpha3.go | 10 + pods/imports/k8s/DeviceClassSpecV1Beta1.go | 13 - pods/imports/k8s/DeviceConstraintV1Alpha3.go | 2 + pods/imports/k8s/DeviceConstraintV1Beta1.go | 15 - pods/imports/k8s/DeviceRequestV1Alpha3.go | 4 +- pods/imports/k8s/DeviceRequestV1Beta1.go | 47 - pods/imports/k8s/DeviceSelectorV1Alpha3.go | 2 + pods/imports/k8s/DeviceSelectorV1Beta1.go | 7 - pods/imports/k8s/DeviceV1Alpha3.go | 2 + pods/imports/k8s/DeviceV1Beta1.go | 13 - pods/imports/k8s/DownwardApiProjection.go | 2 + pods/imports/k8s/DownwardApiVolumeFile.go | 2 + pods/imports/k8s/DownwardApiVolumeSource.go | 2 + pods/imports/k8s/EmptyDirVolumeSource.go | 2 + pods/imports/k8s/Endpoint.go | 2 + pods/imports/k8s/EndpointAddress.go | 2 + pods/imports/k8s/EndpointConditions.go | 2 + pods/imports/k8s/EndpointHints.go | 2 + pods/imports/k8s/EndpointPort.go | 2 + pods/imports/k8s/EndpointSubset.go | 2 + pods/imports/k8s/EnvFromSource.go | 2 + pods/imports/k8s/EnvVar.go | 2 + pods/imports/k8s/EnvVarSource.go | 2 + pods/imports/k8s/EphemeralContainer.go | 2 + pods/imports/k8s/EphemeralVolumeSource.go | 2 + pods/imports/k8s/EventSeries.go | 1 + pods/imports/k8s/EventSource.go | 2 + pods/imports/k8s/ExecAction.go | 2 + .../k8s/ExemptPriorityLevelConfiguration.go | 2 + ...ExemptPriorityLevelConfigurationV1Beta3.go | 23 + pods/imports/k8s/ExternalDocumentation.go | 4 +- pods/imports/k8s/ExternalMetricSourceV2.go | 2 + pods/imports/k8s/FcVolumeSource.go | 2 + pods/imports/k8s/FieldSelectorAttributes.go | 2 + pods/imports/k8s/FieldSelectorRequirement.go | 2 + .../imports/k8s/FlexPersistentVolumeSource.go | 2 + pods/imports/k8s/FlexVolumeSource.go | 2 + pods/imports/k8s/FlockerVolumeSource.go | 2 + pods/imports/k8s/FlowDistinguisherMethod.go | 2 + .../k8s/FlowDistinguisherMethodV1Beta3.go | 11 + pods/imports/k8s/FlowSchemaSpec.go | 2 + pods/imports/k8s/FlowSchemaSpecV1Beta3.go | 23 + pods/imports/k8s/ForZone.go | 2 + .../k8s/GcePersistentDiskVolumeSource.go | 2 + pods/imports/k8s/GitRepoVolumeSource.go | 2 + .../k8s/GlusterfsPersistentVolumeSource.go | 2 + pods/imports/k8s/GlusterfsVolumeSource.go | 2 + pods/imports/k8s/GroupSubjectV1Beta3.go | 11 + .../k8s/GroupVersionResourceV1Alpha1.go | 2 + pods/imports/k8s/GrpcAction.go | 3 +- .../k8s/HorizontalPodAutoscalerBehaviorV2.go | 2 + .../k8s/HorizontalPodAutoscalerSpec.go | 2 + .../k8s/HorizontalPodAutoscalerSpecV2.go | 2 + pods/imports/k8s/HostAlias.go | 2 + pods/imports/k8s/HostPathVolumeSource.go | 2 + pods/imports/k8s/HpaScalingPolicyV2.go | 2 + pods/imports/k8s/HpaScalingRulesV2.go | 2 + pods/imports/k8s/HttpGetAction.go | 2 + pods/imports/k8s/HttpHeader.go | 2 + pods/imports/k8s/HttpIngressPath.go | 2 + pods/imports/k8s/HttpIngressRuleValue.go | 2 + pods/imports/k8s/ImageVolumeSource.go | 2 + pods/imports/k8s/IngressBackend.go | 2 + .../k8s/IngressClassParametersReference.go | 2 + pods/imports/k8s/IngressClassSpec.go | 2 + pods/imports/k8s/IngressRule.go | 4 +- pods/imports/k8s/IngressServiceBackend.go | 2 + pods/imports/k8s/IngressSpec.go | 2 + pods/imports/k8s/IngressTls.go | 2 + pods/imports/k8s/IntOrString.go | 2 + pods/imports/k8s/IntOrString__checks.go | 1 + pods/imports/k8s/IntOrString__no_checks.go | 1 + ...machineryPkgApisMetaV1DeleteOptionsKind.go | 2 + pods/imports/k8s/IpAddressSpecV1Beta1.go | 2 + pods/imports/k8s/IpBlock.go | 2 + .../k8s/IscsiPersistentVolumeSource.go | 2 + pods/imports/k8s/IscsiVolumeSource.go | 2 + pods/imports/k8s/JobSpec.go | 4 +- pods/imports/k8s/JobTemplateSpec.go | 2 + pods/imports/k8s/JsonPatchV1Alpha1.go | 60 -- pods/imports/k8s/JsonSchemaProps.go | 76 +- pods/imports/k8s/KeyToPath.go | 2 + pods/imports/k8s/KubeApiService.go | 2 + pods/imports/k8s/KubeApiServiceList.go | 2 + pods/imports/k8s/KubeApiServiceListProps.go | 2 + .../imports/k8s/KubeApiServiceList__checks.go | 1 + .../k8s/KubeApiServiceList__no_checks.go | 1 + pods/imports/k8s/KubeApiServiceProps.go | 2 + pods/imports/k8s/KubeApiService__checks.go | 1 + pods/imports/k8s/KubeApiService__no_checks.go | 1 + pods/imports/k8s/KubeBinding.go | 4 +- pods/imports/k8s/KubeBindingProps.go | 4 +- pods/imports/k8s/KubeBinding__checks.go | 1 + pods/imports/k8s/KubeBinding__no_checks.go | 1 + .../k8s/KubeCertificateSigningRequest.go | 2 + .../k8s/KubeCertificateSigningRequestList.go | 2 + .../KubeCertificateSigningRequestListProps.go | 6 +- ...beCertificateSigningRequestList__checks.go | 1 + ...ertificateSigningRequestList__no_checks.go | 1 + .../k8s/KubeCertificateSigningRequestProps.go | 6 +- .../KubeCertificateSigningRequest__checks.go | 1 + ...ubeCertificateSigningRequest__no_checks.go | 1 + pods/imports/k8s/KubeClusterRole.go | 2 + pods/imports/k8s/KubeClusterRoleBinding.go | 2 + .../imports/k8s/KubeClusterRoleBindingList.go | 2 + .../k8s/KubeClusterRoleBindingListProps.go | 2 + .../k8s/KubeClusterRoleBindingList__checks.go | 1 + .../KubeClusterRoleBindingList__no_checks.go | 1 + .../k8s/KubeClusterRoleBindingProps.go | 2 + .../k8s/KubeClusterRoleBinding__checks.go | 1 + .../k8s/KubeClusterRoleBinding__no_checks.go | 1 + pods/imports/k8s/KubeClusterRoleList.go | 2 + pods/imports/k8s/KubeClusterRoleListProps.go | 2 + .../k8s/KubeClusterRoleList__checks.go | 1 + .../k8s/KubeClusterRoleList__no_checks.go | 1 + pods/imports/k8s/KubeClusterRoleProps.go | 2 + pods/imports/k8s/KubeClusterRole__checks.go | 1 + .../imports/k8s/KubeClusterRole__no_checks.go | 1 + .../k8s/KubeClusterTrustBundleListV1Alpha1.go | 2 + ...KubeClusterTrustBundleListV1Alpha1Props.go | 2 + ...eClusterTrustBundleListV1Alpha1__checks.go | 1 + ...usterTrustBundleListV1Alpha1__no_checks.go | 1 + .../k8s/KubeClusterTrustBundleV1Alpha1.go | 2 + .../KubeClusterTrustBundleV1Alpha1Props.go | 2 + .../KubeClusterTrustBundleV1Alpha1__checks.go | 1 + ...beClusterTrustBundleV1Alpha1__no_checks.go | 1 + pods/imports/k8s/KubeComponentStatus.go | 2 + pods/imports/k8s/KubeComponentStatusList.go | 2 + .../k8s/KubeComponentStatusListProps.go | 2 + .../k8s/KubeComponentStatusList__checks.go | 1 + .../k8s/KubeComponentStatusList__no_checks.go | 1 + pods/imports/k8s/KubeComponentStatusProps.go | 2 + .../k8s/KubeComponentStatus__checks.go | 1 + .../k8s/KubeComponentStatus__no_checks.go | 1 + pods/imports/k8s/KubeConfigMap.go | 2 + pods/imports/k8s/KubeConfigMapList.go | 2 + pods/imports/k8s/KubeConfigMapListProps.go | 2 + pods/imports/k8s/KubeConfigMapList__checks.go | 1 + .../k8s/KubeConfigMapList__no_checks.go | 1 + pods/imports/k8s/KubeConfigMapProps.go | 2 + pods/imports/k8s/KubeConfigMap__checks.go | 1 + pods/imports/k8s/KubeConfigMap__no_checks.go | 1 + pods/imports/k8s/KubeControllerRevision.go | 2 + .../imports/k8s/KubeControllerRevisionList.go | 2 + .../k8s/KubeControllerRevisionListProps.go | 2 + .../k8s/KubeControllerRevisionList__checks.go | 1 + .../KubeControllerRevisionList__no_checks.go | 1 + .../k8s/KubeControllerRevisionProps.go | 2 + .../k8s/KubeControllerRevision__checks.go | 1 + .../k8s/KubeControllerRevision__no_checks.go | 1 + pods/imports/k8s/KubeCronJob.go | 2 + pods/imports/k8s/KubeCronJobList.go | 2 + pods/imports/k8s/KubeCronJobListProps.go | 2 + pods/imports/k8s/KubeCronJobList__checks.go | 1 + .../imports/k8s/KubeCronJobList__no_checks.go | 1 + pods/imports/k8s/KubeCronJobProps.go | 2 + pods/imports/k8s/KubeCronJob__checks.go | 1 + pods/imports/k8s/KubeCronJob__no_checks.go | 1 + pods/imports/k8s/KubeCsiDriver.go | 2 + pods/imports/k8s/KubeCsiDriverList.go | 2 + pods/imports/k8s/KubeCsiDriverListProps.go | 2 + pods/imports/k8s/KubeCsiDriverList__checks.go | 1 + .../k8s/KubeCsiDriverList__no_checks.go | 1 + pods/imports/k8s/KubeCsiDriverProps.go | 2 + pods/imports/k8s/KubeCsiDriver__checks.go | 1 + pods/imports/k8s/KubeCsiDriver__no_checks.go | 1 + pods/imports/k8s/KubeCsiNode.go | 2 + pods/imports/k8s/KubeCsiNodeList.go | 2 + pods/imports/k8s/KubeCsiNodeListProps.go | 2 + pods/imports/k8s/KubeCsiNodeList__checks.go | 1 + .../imports/k8s/KubeCsiNodeList__no_checks.go | 1 + pods/imports/k8s/KubeCsiNodeProps.go | 2 + pods/imports/k8s/KubeCsiNode__checks.go | 1 + pods/imports/k8s/KubeCsiNode__no_checks.go | 1 + pods/imports/k8s/KubeCsiStorageCapacity.go | 2 + .../imports/k8s/KubeCsiStorageCapacityList.go | 2 + .../k8s/KubeCsiStorageCapacityListProps.go | 2 + .../k8s/KubeCsiStorageCapacityList__checks.go | 1 + .../KubeCsiStorageCapacityList__no_checks.go | 1 + .../k8s/KubeCsiStorageCapacityProps.go | 2 + .../k8s/KubeCsiStorageCapacity__checks.go | 1 + .../k8s/KubeCsiStorageCapacity__no_checks.go | 1 + .../k8s/KubeCustomResourceDefinition.go | 2 + .../k8s/KubeCustomResourceDefinitionList.go | 2 + .../KubeCustomResourceDefinitionListProps.go | 2 + ...ubeCustomResourceDefinitionList__checks.go | 1 + ...CustomResourceDefinitionList__no_checks.go | 1 + .../k8s/KubeCustomResourceDefinitionProps.go | 2 + .../KubeCustomResourceDefinition__checks.go | 1 + ...KubeCustomResourceDefinition__no_checks.go | 1 + pods/imports/k8s/KubeDaemonSet.go | 2 + pods/imports/k8s/KubeDaemonSetList.go | 2 + pods/imports/k8s/KubeDaemonSetListProps.go | 2 + pods/imports/k8s/KubeDaemonSetList__checks.go | 1 + .../k8s/KubeDaemonSetList__no_checks.go | 1 + pods/imports/k8s/KubeDaemonSetProps.go | 2 + pods/imports/k8s/KubeDaemonSet__checks.go | 1 + pods/imports/k8s/KubeDaemonSet__no_checks.go | 1 + pods/imports/k8s/KubeDeployment.go | 2 + pods/imports/k8s/KubeDeploymentList.go | 2 + pods/imports/k8s/KubeDeploymentListProps.go | 2 + .../imports/k8s/KubeDeploymentList__checks.go | 1 + .../k8s/KubeDeploymentList__no_checks.go | 1 + pods/imports/k8s/KubeDeploymentProps.go | 2 + pods/imports/k8s/KubeDeployment__checks.go | 1 + pods/imports/k8s/KubeDeployment__no_checks.go | 1 + .../k8s/KubeDeviceClassListV1Alpha3.go | 2 + .../k8s/KubeDeviceClassListV1Alpha3Props.go | 2 + .../KubeDeviceClassListV1Alpha3__checks.go | 1 + .../KubeDeviceClassListV1Alpha3__no_checks.go | 1 + .../k8s/KubeDeviceClassListV1Beta1Props.go | 9 - .../k8s/KubeDeviceClassListV1Beta1__checks.go | 65 -- .../KubeDeviceClassListV1Beta1__no_checks.go | 25 - pods/imports/k8s/KubeDeviceClassV1Alpha3.go | 2 + .../k8s/KubeDeviceClassV1Alpha3Props.go | 2 + .../k8s/KubeDeviceClassV1Alpha3__checks.go | 1 + .../k8s/KubeDeviceClassV1Alpha3__no_checks.go | 1 + .../k8s/KubeDeviceClassV1Beta1Props.go | 17 - .../k8s/KubeDeviceClassV1Beta1__no_checks.go | 25 - pods/imports/k8s/KubeEndpointSlice.go | 2 + pods/imports/k8s/KubeEndpointSliceList.go | 2 + .../imports/k8s/KubeEndpointSliceListProps.go | 2 + .../k8s/KubeEndpointSliceList__checks.go | 1 + .../k8s/KubeEndpointSliceList__no_checks.go | 1 + pods/imports/k8s/KubeEndpointSliceProps.go | 2 + pods/imports/k8s/KubeEndpointSlice__checks.go | 1 + .../k8s/KubeEndpointSlice__no_checks.go | 1 + pods/imports/k8s/KubeEndpoints.go | 20 +- pods/imports/k8s/KubeEndpointsList.go | 2 + pods/imports/k8s/KubeEndpointsListProps.go | 2 + pods/imports/k8s/KubeEndpointsList__checks.go | 1 + .../k8s/KubeEndpointsList__no_checks.go | 1 + pods/imports/k8s/KubeEndpointsProps.go | 2 + pods/imports/k8s/KubeEndpoints__checks.go | 1 + pods/imports/k8s/KubeEndpoints__no_checks.go | 1 + pods/imports/k8s/KubeEvent.go | 2 + pods/imports/k8s/KubeEventList.go | 2 + pods/imports/k8s/KubeEventListProps.go | 2 + pods/imports/k8s/KubeEventList__checks.go | 1 + pods/imports/k8s/KubeEventList__no_checks.go | 1 + pods/imports/k8s/KubeEventProps.go | 1 + pods/imports/k8s/KubeEvent__checks.go | 1 + pods/imports/k8s/KubeEvent__no_checks.go | 1 + pods/imports/k8s/KubeEviction.go | 2 + pods/imports/k8s/KubeEvictionProps.go | 2 + pods/imports/k8s/KubeEviction__checks.go | 1 + pods/imports/k8s/KubeEviction__no_checks.go | 1 + pods/imports/k8s/KubeFlowSchema.go | 2 + pods/imports/k8s/KubeFlowSchemaList.go | 2 + pods/imports/k8s/KubeFlowSchemaListProps.go | 2 + ...1Beta1.go => KubeFlowSchemaListV1Beta3.go} | 78 +- .../k8s/KubeFlowSchemaListV1Beta3Props.go | 13 + ...o => KubeFlowSchemaListV1Beta3__checks.go} | 11 +- .../KubeFlowSchemaListV1Beta3__no_checks.go | 26 + .../imports/k8s/KubeFlowSchemaList__checks.go | 1 + .../k8s/KubeFlowSchemaList__no_checks.go | 1 + pods/imports/k8s/KubeFlowSchemaProps.go | 2 + ...assV1Beta1.go => KubeFlowSchemaV1Beta3.go} | 82 +- .../imports/k8s/KubeFlowSchemaV1Beta3Props.go | 17 + ...ks.go => KubeFlowSchemaV1Beta3__checks.go} | 11 +- .../k8s/KubeFlowSchemaV1Beta3__no_checks.go | 26 + pods/imports/k8s/KubeFlowSchema__checks.go | 1 + pods/imports/k8s/KubeFlowSchema__no_checks.go | 1 + .../k8s/KubeHorizontalPodAutoscaler.go | 2 + .../k8s/KubeHorizontalPodAutoscalerList.go | 2 + .../KubeHorizontalPodAutoscalerListProps.go | 2 + .../k8s/KubeHorizontalPodAutoscalerListV2.go | 2 + .../KubeHorizontalPodAutoscalerListV2Props.go | 2 + ...beHorizontalPodAutoscalerListV2__checks.go | 1 + ...orizontalPodAutoscalerListV2__no_checks.go | 1 + ...KubeHorizontalPodAutoscalerList__checks.go | 1 + ...eHorizontalPodAutoscalerList__no_checks.go | 1 + .../k8s/KubeHorizontalPodAutoscalerProps.go | 2 + .../k8s/KubeHorizontalPodAutoscalerV2.go | 2 + .../k8s/KubeHorizontalPodAutoscalerV2Props.go | 2 + .../KubeHorizontalPodAutoscalerV2__checks.go | 1 + ...ubeHorizontalPodAutoscalerV2__no_checks.go | 1 + .../KubeHorizontalPodAutoscaler__checks.go | 1 + .../KubeHorizontalPodAutoscaler__no_checks.go | 1 + pods/imports/k8s/KubeIngress.go | 2 + pods/imports/k8s/KubeIngressClass.go | 2 + pods/imports/k8s/KubeIngressClassList.go | 2 + pods/imports/k8s/KubeIngressClassListProps.go | 2 + .../k8s/KubeIngressClassList__checks.go | 1 + .../k8s/KubeIngressClassList__no_checks.go | 1 + pods/imports/k8s/KubeIngressClassProps.go | 2 + pods/imports/k8s/KubeIngressClass__checks.go | 1 + .../k8s/KubeIngressClass__no_checks.go | 1 + pods/imports/k8s/KubeIngressList.go | 2 + pods/imports/k8s/KubeIngressListProps.go | 2 + pods/imports/k8s/KubeIngressList__checks.go | 1 + .../imports/k8s/KubeIngressList__no_checks.go | 1 + pods/imports/k8s/KubeIngressProps.go | 2 + pods/imports/k8s/KubeIngress__checks.go | 1 + pods/imports/k8s/KubeIngress__no_checks.go | 1 + pods/imports/k8s/KubeIpAddressListV1Beta1.go | 2 + .../k8s/KubeIpAddressListV1Beta1Props.go | 2 + .../k8s/KubeIpAddressListV1Beta1__checks.go | 1 + .../KubeIpAddressListV1Beta1__no_checks.go | 1 + pods/imports/k8s/KubeIpAddressV1Beta1.go | 2 + pods/imports/k8s/KubeIpAddressV1Beta1Props.go | 2 + .../k8s/KubeIpAddressV1Beta1__checks.go | 1 + .../k8s/KubeIpAddressV1Beta1__no_checks.go | 1 + pods/imports/k8s/KubeJob.go | 2 + pods/imports/k8s/KubeJobList.go | 2 + pods/imports/k8s/KubeJobListProps.go | 2 + pods/imports/k8s/KubeJobList__checks.go | 1 + pods/imports/k8s/KubeJobList__no_checks.go | 1 + pods/imports/k8s/KubeJobProps.go | 2 + pods/imports/k8s/KubeJob__checks.go | 1 + pods/imports/k8s/KubeJob__no_checks.go | 1 + pods/imports/k8s/KubeLease.go | 2 + ...2.go => KubeLeaseCandidateListV1Alpha1.go} | 76 +- ...=> KubeLeaseCandidateListV1Alpha1Props.go} | 6 +- ...KubeLeaseCandidateListV1Alpha1__checks.go} | 11 +- ...beLeaseCandidateListV1Alpha1__no_checks.go | 26 + ...beLeaseCandidateListV1Alpha2__no_checks.go | 25 - ...lpha2.go => KubeLeaseCandidateV1Alpha1.go} | 76 +- ....go => KubeLeaseCandidateV1Alpha1Props.go} | 6 +- ... => KubeLeaseCandidateV1Alpha1__checks.go} | 11 +- .../KubeLeaseCandidateV1Alpha1__no_checks.go | 26 + .../KubeLeaseCandidateV1Alpha2__no_checks.go | 25 - pods/imports/k8s/KubeLeaseList.go | 2 + pods/imports/k8s/KubeLeaseListProps.go | 2 + pods/imports/k8s/KubeLeaseList__checks.go | 1 + pods/imports/k8s/KubeLeaseList__no_checks.go | 1 + pods/imports/k8s/KubeLeaseProps.go | 2 + pods/imports/k8s/KubeLease__checks.go | 1 + pods/imports/k8s/KubeLease__no_checks.go | 1 + pods/imports/k8s/KubeLimitRange.go | 2 + pods/imports/k8s/KubeLimitRangeList.go | 2 + pods/imports/k8s/KubeLimitRangeListProps.go | 2 + .../imports/k8s/KubeLimitRangeList__checks.go | 1 + .../k8s/KubeLimitRangeList__no_checks.go | 1 + pods/imports/k8s/KubeLimitRangeProps.go | 2 + pods/imports/k8s/KubeLimitRange__checks.go | 1 + pods/imports/k8s/KubeLimitRange__no_checks.go | 1 + .../k8s/KubeLocalSubjectAccessReview.go | 2 + .../k8s/KubeLocalSubjectAccessReviewProps.go | 2 + .../KubeLocalSubjectAccessReview__checks.go | 1 + ...KubeLocalSubjectAccessReview__no_checks.go | 1 + ...AdmissionPolicyBindingListV1Alpha1Props.go | 11 - ...ionPolicyBindingListV1Alpha1__no_checks.go | 25 - ...tingAdmissionPolicyBindingV1Alpha1Props.go | 17 - ...missionPolicyBindingV1Alpha1__no_checks.go | 25 - ...tingAdmissionPolicyListV1Alpha1__checks.go | 65 -- ...gAdmissionPolicyListV1Alpha1__no_checks.go | 25 - ...ubeMutatingAdmissionPolicyV1Alpha1Props.go | 11 - ...atingAdmissionPolicyV1Alpha1__no_checks.go | 25 - .../k8s/KubeMutatingWebhookConfiguration.go | 2 + .../KubeMutatingWebhookConfigurationList.go | 2 + ...beMutatingWebhookConfigurationListProps.go | 2 + ...utatingWebhookConfigurationList__checks.go | 1 + ...tingWebhookConfigurationList__no_checks.go | 1 + .../KubeMutatingWebhookConfigurationProps.go | 2 + ...ubeMutatingWebhookConfiguration__checks.go | 1 + ...MutatingWebhookConfiguration__no_checks.go | 1 + pods/imports/k8s/KubeNamespace.go | 2 + pods/imports/k8s/KubeNamespaceList.go | 2 + pods/imports/k8s/KubeNamespaceListProps.go | 2 + pods/imports/k8s/KubeNamespaceList__checks.go | 1 + .../k8s/KubeNamespaceList__no_checks.go | 1 + pods/imports/k8s/KubeNamespaceProps.go | 2 + pods/imports/k8s/KubeNamespace__checks.go | 1 + pods/imports/k8s/KubeNamespace__no_checks.go | 1 + pods/imports/k8s/KubeNetworkPolicy.go | 2 + pods/imports/k8s/KubeNetworkPolicyList.go | 2 + .../imports/k8s/KubeNetworkPolicyListProps.go | 2 + .../k8s/KubeNetworkPolicyList__checks.go | 1 + .../k8s/KubeNetworkPolicyList__no_checks.go | 1 + pods/imports/k8s/KubeNetworkPolicyProps.go | 2 + pods/imports/k8s/KubeNetworkPolicy__checks.go | 1 + .../k8s/KubeNetworkPolicy__no_checks.go | 1 + pods/imports/k8s/KubeNode.go | 2 + pods/imports/k8s/KubeNodeList.go | 2 + pods/imports/k8s/KubeNodeListProps.go | 2 + pods/imports/k8s/KubeNodeList__checks.go | 1 + pods/imports/k8s/KubeNodeList__no_checks.go | 1 + pods/imports/k8s/KubeNodeProps.go | 2 + pods/imports/k8s/KubeNode__checks.go | 1 + pods/imports/k8s/KubeNode__no_checks.go | 1 + pods/imports/k8s/KubePersistentVolume.go | 2 + pods/imports/k8s/KubePersistentVolumeClaim.go | 2 + .../k8s/KubePersistentVolumeClaimList.go | 2 + .../k8s/KubePersistentVolumeClaimListProps.go | 2 + .../KubePersistentVolumeClaimList__checks.go | 1 + ...ubePersistentVolumeClaimList__no_checks.go | 1 + .../k8s/KubePersistentVolumeClaimProps.go | 2 + .../k8s/KubePersistentVolumeClaim__checks.go | 1 + .../KubePersistentVolumeClaim__no_checks.go | 1 + pods/imports/k8s/KubePersistentVolumeList.go | 2 + .../k8s/KubePersistentVolumeListProps.go | 2 + .../k8s/KubePersistentVolumeList__checks.go | 1 + .../KubePersistentVolumeList__no_checks.go | 1 + pods/imports/k8s/KubePersistentVolumeProps.go | 2 + .../k8s/KubePersistentVolume__checks.go | 1 + .../k8s/KubePersistentVolume__no_checks.go | 1 + pods/imports/k8s/KubePod.go | 2 + pods/imports/k8s/KubePodDisruptionBudget.go | 2 + .../k8s/KubePodDisruptionBudgetList.go | 2 + .../k8s/KubePodDisruptionBudgetListProps.go | 2 + .../KubePodDisruptionBudgetList__checks.go | 1 + .../KubePodDisruptionBudgetList__no_checks.go | 1 + .../k8s/KubePodDisruptionBudgetProps.go | 2 + .../k8s/KubePodDisruptionBudget__checks.go | 1 + .../k8s/KubePodDisruptionBudget__no_checks.go | 1 + pods/imports/k8s/KubePodList.go | 2 + pods/imports/k8s/KubePodListProps.go | 2 + pods/imports/k8s/KubePodList__checks.go | 1 + pods/imports/k8s/KubePodList__no_checks.go | 1 + pods/imports/k8s/KubePodProps.go | 2 + ...> KubePodSchedulingContextListV1Alpha3.go} | 78 +- ...bePodSchedulingContextListV1Alpha3Props.go | 11 + ...dSchedulingContextListV1Alpha3__checks.go} | 11 +- ...chedulingContextListV1Alpha3__no_checks.go | 26 + ...go => KubePodSchedulingContextV1Alpha3.go} | 80 +- .../KubePodSchedulingContextV1Alpha3Props.go | 13 + ...bePodSchedulingContextV1Alpha3__checks.go} | 11 +- ...PodSchedulingContextV1Alpha3__no_checks.go | 26 + pods/imports/k8s/KubePodTemplate.go | 2 + pods/imports/k8s/KubePodTemplateList.go | 2 + pods/imports/k8s/KubePodTemplateListProps.go | 2 + .../k8s/KubePodTemplateList__checks.go | 1 + .../k8s/KubePodTemplateList__no_checks.go | 1 + pods/imports/k8s/KubePodTemplateProps.go | 2 + pods/imports/k8s/KubePodTemplate__checks.go | 1 + .../imports/k8s/KubePodTemplate__no_checks.go | 1 + pods/imports/k8s/KubePod__checks.go | 1 + pods/imports/k8s/KubePod__no_checks.go | 1 + pods/imports/k8s/KubePriorityClass.go | 2 + pods/imports/k8s/KubePriorityClassList.go | 2 + .../imports/k8s/KubePriorityClassListProps.go | 2 + .../k8s/KubePriorityClassList__checks.go | 1 + .../k8s/KubePriorityClassList__no_checks.go | 1 + pods/imports/k8s/KubePriorityClassProps.go | 2 + pods/imports/k8s/KubePriorityClass__checks.go | 1 + .../k8s/KubePriorityClass__no_checks.go | 1 + .../k8s/KubePriorityLevelConfiguration.go | 2 + .../k8s/KubePriorityLevelConfigurationList.go | 2 + ...KubePriorityLevelConfigurationListProps.go | 2 + ...ePriorityLevelConfigurationListV1Beta3.go} | 78 +- ...orityLevelConfigurationListV1Beta3Props.go | 13 + ...yLevelConfigurationListV1Beta3__checks.go} | 11 +- ...evelConfigurationListV1Beta3__no_checks.go | 26 + ...ePriorityLevelConfigurationList__checks.go | 1 + ...iorityLevelConfigurationList__no_checks.go | 1 + .../KubePriorityLevelConfigurationProps.go | 2 + ... KubePriorityLevelConfigurationV1Beta3.go} | 82 +- ...ePriorityLevelConfigurationV1Beta3Props.go | 15 + ...orityLevelConfigurationV1Beta3__checks.go} | 11 +- ...ityLevelConfigurationV1Beta3__no_checks.go | 26 + .../KubePriorityLevelConfiguration__checks.go | 1 + ...bePriorityLevelConfiguration__no_checks.go | 1 + pods/imports/k8s/KubeReplicaSet.go | 2 + pods/imports/k8s/KubeReplicaSetList.go | 2 + pods/imports/k8s/KubeReplicaSetListProps.go | 2 + .../imports/k8s/KubeReplicaSetList__checks.go | 1 + .../k8s/KubeReplicaSetList__no_checks.go | 1 + pods/imports/k8s/KubeReplicaSetProps.go | 2 + pods/imports/k8s/KubeReplicaSet__checks.go | 1 + pods/imports/k8s/KubeReplicaSet__no_checks.go | 1 + pods/imports/k8s/KubeReplicationController.go | 2 + .../k8s/KubeReplicationControllerList.go | 2 + .../k8s/KubeReplicationControllerListProps.go | 2 + .../KubeReplicationControllerList__checks.go | 1 + ...ubeReplicationControllerList__no_checks.go | 1 + .../k8s/KubeReplicationControllerProps.go | 2 + .../k8s/KubeReplicationController__checks.go | 1 + .../KubeReplicationController__no_checks.go | 1 + .../k8s/KubeResourceClaimListV1Alpha3.go | 2 + .../k8s/KubeResourceClaimListV1Alpha3Props.go | 2 + .../KubeResourceClaimListV1Alpha3__checks.go | 1 + ...ubeResourceClaimListV1Alpha3__no_checks.go | 1 + .../k8s/KubeResourceClaimListV1Beta1Props.go | 9 - .../KubeResourceClaimListV1Beta1__checks.go | 65 -- ...KubeResourceClaimListV1Beta1__no_checks.go | 25 - .../KubeResourceClaimTemplateListV1Alpha3.go | 2 + ...eResourceClaimTemplateListV1Alpha3Props.go | 2 + ...sourceClaimTemplateListV1Alpha3__checks.go | 1 + ...rceClaimTemplateListV1Alpha3__no_checks.go | 1 + ...beResourceClaimTemplateListV1Beta1Props.go | 9 - ...urceClaimTemplateListV1Beta1__no_checks.go | 25 - .../k8s/KubeResourceClaimTemplateV1Alpha3.go | 2 + .../KubeResourceClaimTemplateV1Alpha3Props.go | 2 + ...beResourceClaimTemplateV1Alpha3__checks.go | 1 + ...esourceClaimTemplateV1Alpha3__no_checks.go | 1 + .../KubeResourceClaimTemplateV1Beta1Props.go | 13 - ...ResourceClaimTemplateV1Beta1__no_checks.go | 25 - pods/imports/k8s/KubeResourceClaimV1Alpha3.go | 2 + .../k8s/KubeResourceClaimV1Alpha3Props.go | 2 + .../k8s/KubeResourceClaimV1Alpha3__checks.go | 1 + .../KubeResourceClaimV1Alpha3__no_checks.go | 1 + .../k8s/KubeResourceClaimV1Beta1Props.go | 15 - .../KubeResourceClaimV1Beta1__no_checks.go | 25 - pods/imports/k8s/KubeResourceQuota.go | 2 + pods/imports/k8s/KubeResourceQuotaList.go | 2 + .../imports/k8s/KubeResourceQuotaListProps.go | 2 + .../k8s/KubeResourceQuotaList__checks.go | 1 + .../k8s/KubeResourceQuotaList__no_checks.go | 1 + pods/imports/k8s/KubeResourceQuotaProps.go | 2 + pods/imports/k8s/KubeResourceQuota__checks.go | 1 + .../k8s/KubeResourceQuota__no_checks.go | 1 + .../k8s/KubeResourceSliceListV1Alpha3Props.go | 9 - ...ubeResourceSliceListV1Alpha3__no_checks.go | 25 - .../k8s/KubeResourceSliceListV1Beta1.go | 315 ------- .../k8s/KubeResourceSliceListV1Beta1Props.go | 9 - .../KubeResourceSliceListV1Beta1__checks.go | 65 -- ...KubeResourceSliceListV1Beta1__no_checks.go | 25 - pods/imports/k8s/KubeResourceSliceV1Alpha3.go | 2 + .../k8s/KubeResourceSliceV1Alpha3Props.go | 2 + .../k8s/KubeResourceSliceV1Alpha3__checks.go | 1 + .../KubeResourceSliceV1Alpha3__no_checks.go | 1 + pods/imports/k8s/KubeResourceSliceV1Beta1.go | 327 ------- .../k8s/KubeResourceSliceV1Beta1Props.go | 23 - .../KubeResourceSliceV1Beta1__no_checks.go | 25 - pods/imports/k8s/KubeRole.go | 2 + pods/imports/k8s/KubeRoleBinding.go | 2 + pods/imports/k8s/KubeRoleBindingList.go | 2 + pods/imports/k8s/KubeRoleBindingListProps.go | 2 + .../k8s/KubeRoleBindingList__checks.go | 1 + .../k8s/KubeRoleBindingList__no_checks.go | 1 + pods/imports/k8s/KubeRoleBindingProps.go | 2 + pods/imports/k8s/KubeRoleBinding__checks.go | 1 + .../imports/k8s/KubeRoleBinding__no_checks.go | 1 + pods/imports/k8s/KubeRoleList.go | 2 + pods/imports/k8s/KubeRoleListProps.go | 2 + pods/imports/k8s/KubeRoleList__checks.go | 1 + pods/imports/k8s/KubeRoleList__no_checks.go | 1 + pods/imports/k8s/KubeRoleProps.go | 2 + pods/imports/k8s/KubeRole__checks.go | 1 + pods/imports/k8s/KubeRole__no_checks.go | 1 + pods/imports/k8s/KubeRuntimeClass.go | 2 + pods/imports/k8s/KubeRuntimeClassList.go | 2 + pods/imports/k8s/KubeRuntimeClassListProps.go | 2 + .../k8s/KubeRuntimeClassList__checks.go | 1 + .../k8s/KubeRuntimeClassList__no_checks.go | 1 + pods/imports/k8s/KubeRuntimeClassProps.go | 2 + pods/imports/k8s/KubeRuntimeClass__checks.go | 1 + .../k8s/KubeRuntimeClass__no_checks.go | 1 + pods/imports/k8s/KubeScale.go | 2 + pods/imports/k8s/KubeScaleProps.go | 2 + pods/imports/k8s/KubeScale__checks.go | 1 + pods/imports/k8s/KubeScale__no_checks.go | 1 + pods/imports/k8s/KubeSecret.go | 2 + pods/imports/k8s/KubeSecretList.go | 2 + pods/imports/k8s/KubeSecretListProps.go | 2 + pods/imports/k8s/KubeSecretList__checks.go | 1 + pods/imports/k8s/KubeSecretList__no_checks.go | 1 + pods/imports/k8s/KubeSecretProps.go | 2 + pods/imports/k8s/KubeSecret__checks.go | 1 + pods/imports/k8s/KubeSecret__no_checks.go | 1 + .../k8s/KubeSelfSubjectAccessReview.go | 2 + .../k8s/KubeSelfSubjectAccessReviewProps.go | 2 + .../KubeSelfSubjectAccessReview__checks.go | 1 + .../KubeSelfSubjectAccessReview__no_checks.go | 1 + pods/imports/k8s/KubeSelfSubjectReview.go | 2 + .../imports/k8s/KubeSelfSubjectReviewProps.go | 2 + ...a3.go => KubeSelfSubjectReviewV1Alpha1.go} | 80 +- .../k8s/KubeSelfSubjectReviewV1Alpha1Props.go | 13 + ... KubeSelfSubjectReviewV1Alpha1__checks.go} | 17 +- ...ubeSelfSubjectReviewV1Alpha1__no_checks.go | 26 + .../k8s/KubeSelfSubjectReviewV1Beta1.go | 2 + .../k8s/KubeSelfSubjectReviewV1Beta1Props.go | 2 + .../KubeSelfSubjectReviewV1Beta1__checks.go | 1 + ...KubeSelfSubjectReviewV1Beta1__no_checks.go | 1 + .../k8s/KubeSelfSubjectReview__checks.go | 1 + .../k8s/KubeSelfSubjectReview__no_checks.go | 1 + .../imports/k8s/KubeSelfSubjectRulesReview.go | 2 + .../k8s/KubeSelfSubjectRulesReviewProps.go | 2 + .../k8s/KubeSelfSubjectRulesReview__checks.go | 1 + .../KubeSelfSubjectRulesReview__no_checks.go | 1 + pods/imports/k8s/KubeService.go | 2 + pods/imports/k8s/KubeServiceAccount.go | 2 + pods/imports/k8s/KubeServiceAccountList.go | 2 + .../k8s/KubeServiceAccountListProps.go | 2 + .../k8s/KubeServiceAccountList__checks.go | 1 + .../k8s/KubeServiceAccountList__no_checks.go | 1 + pods/imports/k8s/KubeServiceAccountProps.go | 4 +- .../imports/k8s/KubeServiceAccount__checks.go | 1 + .../k8s/KubeServiceAccount__no_checks.go | 1 + .../imports/k8s/KubeServiceCidrListV1Beta1.go | 2 + .../k8s/KubeServiceCidrListV1Beta1Props.go | 2 + .../k8s/KubeServiceCidrListV1Beta1__checks.go | 1 + .../KubeServiceCidrListV1Beta1__no_checks.go | 1 + pods/imports/k8s/KubeServiceCidrv1Beta1.go | 2 + .../k8s/KubeServiceCidrv1Beta1Props.go | 2 + .../k8s/KubeServiceCidrv1Beta1__checks.go | 1 + .../k8s/KubeServiceCidrv1Beta1__no_checks.go | 1 + pods/imports/k8s/KubeServiceList.go | 2 + pods/imports/k8s/KubeServiceListProps.go | 2 + pods/imports/k8s/KubeServiceList__checks.go | 1 + .../imports/k8s/KubeServiceList__no_checks.go | 1 + pods/imports/k8s/KubeServiceProps.go | 2 + pods/imports/k8s/KubeService__checks.go | 1 + pods/imports/k8s/KubeService__no_checks.go | 1 + pods/imports/k8s/KubeStatefulSet.go | 2 + pods/imports/k8s/KubeStatefulSetList.go | 2 + pods/imports/k8s/KubeStatefulSetListProps.go | 2 + .../k8s/KubeStatefulSetList__checks.go | 1 + .../k8s/KubeStatefulSetList__no_checks.go | 1 + pods/imports/k8s/KubeStatefulSetProps.go | 2 + pods/imports/k8s/KubeStatefulSet__checks.go | 1 + .../imports/k8s/KubeStatefulSet__no_checks.go | 1 + pods/imports/k8s/KubeStatus.go | 2 + pods/imports/k8s/KubeStatusProps.go | 2 + pods/imports/k8s/KubeStatus__checks.go | 1 + pods/imports/k8s/KubeStatus__no_checks.go | 1 + pods/imports/k8s/KubeStorageClass.go | 2 + pods/imports/k8s/KubeStorageClassList.go | 2 + pods/imports/k8s/KubeStorageClassListProps.go | 2 + .../k8s/KubeStorageClassList__checks.go | 1 + .../k8s/KubeStorageClassList__no_checks.go | 1 + pods/imports/k8s/KubeStorageClassProps.go | 2 + pods/imports/k8s/KubeStorageClass__checks.go | 1 + .../k8s/KubeStorageClass__no_checks.go | 1 + .../k8s/KubeStorageVersionListV1Alpha1.go | 2 + .../KubeStorageVersionListV1Alpha1Props.go | 2 + .../KubeStorageVersionListV1Alpha1__checks.go | 1 + ...beStorageVersionListV1Alpha1__no_checks.go | 1 + ...KubeStorageVersionMigrationListV1Alpha1.go | 2 + ...torageVersionMigrationListV1Alpha1Props.go | 2 + ...ageVersionMigrationListV1Alpha1__checks.go | 1 + ...VersionMigrationListV1Alpha1__no_checks.go | 1 + .../KubeStorageVersionMigrationV1Alpha1.go | 2 + ...ubeStorageVersionMigrationV1Alpha1Props.go | 2 + ...StorageVersionMigrationV1Alpha1__checks.go | 1 + ...rageVersionMigrationV1Alpha1__no_checks.go | 1 + .../imports/k8s/KubeStorageVersionV1Alpha1.go | 2 + .../k8s/KubeStorageVersionV1Alpha1Props.go | 2 + .../k8s/KubeStorageVersionV1Alpha1__checks.go | 1 + .../KubeStorageVersionV1Alpha1__no_checks.go | 1 + pods/imports/k8s/KubeSubjectAccessReview.go | 2 + .../k8s/KubeSubjectAccessReviewProps.go | 2 + .../k8s/KubeSubjectAccessReview__checks.go | 1 + .../k8s/KubeSubjectAccessReview__no_checks.go | 1 + pods/imports/k8s/KubeTokenRequest.go | 2 + pods/imports/k8s/KubeTokenRequestProps.go | 2 + pods/imports/k8s/KubeTokenRequest__checks.go | 1 + .../k8s/KubeTokenRequest__no_checks.go | 1 + pods/imports/k8s/KubeTokenReview.go | 2 + pods/imports/k8s/KubeTokenReviewProps.go | 2 + pods/imports/k8s/KubeTokenReview__checks.go | 1 + .../imports/k8s/KubeTokenReview__no_checks.go | 1 + .../k8s/KubeValidatingAdmissionPolicy.go | 2 + .../KubeValidatingAdmissionPolicyBinding.go | 2 + ...ubeValidatingAdmissionPolicyBindingList.go | 2 + ...lidatingAdmissionPolicyBindingListProps.go | 2 + ...tingAdmissionPolicyBindingListV1Alpha1.go} | 78 +- ...AdmissionPolicyBindingListV1Alpha1Props.go | 13 + ...ssionPolicyBindingListV1Alpha1__checks.go} | 11 +- ...ionPolicyBindingListV1Alpha1__no_checks.go | 26 + ...datingAdmissionPolicyBindingListV1Beta1.go | 2 + ...gAdmissionPolicyBindingListV1Beta1Props.go | 2 + ...missionPolicyBindingListV1Beta1__checks.go | 1 + ...sionPolicyBindingListV1Beta1__no_checks.go | 1 + ...atingAdmissionPolicyBindingList__checks.go | 1 + ...ngAdmissionPolicyBindingList__no_checks.go | 1 + ...beValidatingAdmissionPolicyBindingProps.go | 2 + ...lidatingAdmissionPolicyBindingV1Alpha1.go} | 84 +- ...tingAdmissionPolicyBindingV1Alpha1Props.go | 19 + ...gAdmissionPolicyBindingV1Alpha1__checks.go | 60 ++ ...missionPolicyBindingV1Alpha1__no_checks.go | 26 + ...ValidatingAdmissionPolicyBindingV1Beta1.go | 2 + ...atingAdmissionPolicyBindingV1Beta1Props.go | 2 + ...ngAdmissionPolicyBindingV1Beta1__checks.go | 1 + ...dmissionPolicyBindingV1Beta1__no_checks.go | 1 + ...alidatingAdmissionPolicyBinding__checks.go | 1 + ...datingAdmissionPolicyBinding__no_checks.go | 1 + .../k8s/KubeValidatingAdmissionPolicyList.go | 2 + .../KubeValidatingAdmissionPolicyListProps.go | 2 + ...eValidatingAdmissionPolicyListV1Alpha1.go} | 78 +- ...datingAdmissionPolicyListV1Alpha1Props.go} | 8 +- ...ingAdmissionPolicyListV1Alpha1__checks.go} | 11 +- ...gAdmissionPolicyListV1Alpha1__no_checks.go | 26 + ...ubeValidatingAdmissionPolicyListV1Beta1.go | 2 + ...lidatingAdmissionPolicyListV1Beta1Props.go | 2 + ...atingAdmissionPolicyListV1Beta1__checks.go | 1 + ...ngAdmissionPolicyListV1Beta1__no_checks.go | 1 + ...beValidatingAdmissionPolicyList__checks.go | 1 + ...alidatingAdmissionPolicyList__no_checks.go | 1 + .../k8s/KubeValidatingAdmissionPolicyProps.go | 2 + ... KubeValidatingAdmissionPolicyV1Alpha1.go} | 78 +- ...eValidatingAdmissionPolicyV1Alpha1Props.go | 13 + ...lidatingAdmissionPolicyV1Alpha1__checks.go | 60 ++ ...atingAdmissionPolicyV1Alpha1__no_checks.go | 26 + .../KubeValidatingAdmissionPolicyV1Beta1.go | 2 + ...beValidatingAdmissionPolicyV1Beta1Props.go | 2 + ...alidatingAdmissionPolicyV1Beta1__checks.go | 1 + ...datingAdmissionPolicyV1Beta1__no_checks.go | 1 + .../KubeValidatingAdmissionPolicy__checks.go | 1 + ...ubeValidatingAdmissionPolicy__no_checks.go | 1 + .../k8s/KubeValidatingWebhookConfiguration.go | 2 + .../KubeValidatingWebhookConfigurationList.go | 2 + ...ValidatingWebhookConfigurationListProps.go | 2 + ...idatingWebhookConfigurationList__checks.go | 1 + ...tingWebhookConfigurationList__no_checks.go | 1 + ...KubeValidatingWebhookConfigurationProps.go | 2 + ...eValidatingWebhookConfiguration__checks.go | 1 + ...lidatingWebhookConfiguration__no_checks.go | 1 + pods/imports/k8s/KubeVolumeAttachment.go | 2 + pods/imports/k8s/KubeVolumeAttachmentList.go | 2 + .../k8s/KubeVolumeAttachmentListProps.go | 2 + .../k8s/KubeVolumeAttachmentList__checks.go | 1 + .../KubeVolumeAttachmentList__no_checks.go | 1 + pods/imports/k8s/KubeVolumeAttachmentProps.go | 2 + .../k8s/KubeVolumeAttachment__checks.go | 1 + .../k8s/KubeVolumeAttachment__no_checks.go | 1 + .../KubeVolumeAttributesClassListV1Alpha1.go | 2 + ...eVolumeAttributesClassListV1Alpha1Props.go | 2 + ...lumeAttributesClassListV1Alpha1__checks.go | 1 + ...eAttributesClassListV1Alpha1__no_checks.go | 1 + .../KubeVolumeAttributesClassListV1Beta1.go | 2 + ...beVolumeAttributesClassListV1Beta1Props.go | 2 + ...olumeAttributesClassListV1Beta1__checks.go | 1 + ...meAttributesClassListV1Beta1__no_checks.go | 1 + .../k8s/KubeVolumeAttributesClassV1Alpha1.go | 2 + .../KubeVolumeAttributesClassV1Alpha1Props.go | 2 + ...beVolumeAttributesClassV1Alpha1__checks.go | 1 + ...olumeAttributesClassV1Alpha1__no_checks.go | 1 + .../k8s/KubeVolumeAttributesClassV1Beta1.go | 2 + .../KubeVolumeAttributesClassV1Beta1Props.go | 2 + ...ubeVolumeAttributesClassV1Beta1__checks.go | 1 + ...VolumeAttributesClassV1Beta1__no_checks.go | 1 + pods/imports/k8s/LabelSelector.go | 2 + pods/imports/k8s/LabelSelectorAttributes.go | 2 + pods/imports/k8s/LabelSelectorRequirement.go | 2 + ...lpha2.go => LeaseCandidateSpecV1Alpha1.go} | 21 +- pods/imports/k8s/LeaseSpec.go | 1 + pods/imports/k8s/Lifecycle.go | 2 + pods/imports/k8s/LifecycleHandler.go | 10 +- pods/imports/k8s/LimitRangeItem.go | 2 + pods/imports/k8s/LimitRangeSpec.go | 2 + pods/imports/k8s/LimitResponse.go | 2 + pods/imports/k8s/LimitResponseV1Beta3.go | 15 + .../k8s/LimitedPriorityLevelConfiguration.go | 2 + ...imitedPriorityLevelConfigurationV1Beta3.go | 35 + pods/imports/k8s/ListMeta.go | 2 + pods/imports/k8s/LocalObjectReference.go | 2 + pods/imports/k8s/LocalVolumeSource.go | 4 +- pods/imports/k8s/ManagedFieldsEntry.go | 1 + pods/imports/k8s/MatchCondition.go | 2 + pods/imports/k8s/MatchConditionV1Alpha1.go | 2 + pods/imports/k8s/MatchConditionV1Beta1.go | 2 + pods/imports/k8s/MatchResources.go | 2 + pods/imports/k8s/MatchResourcesV1Alpha1.go | 2 + pods/imports/k8s/MatchResourcesV1Beta1.go | 2 + pods/imports/k8s/MetricIdentifierV2.go | 2 + pods/imports/k8s/MetricSpecV2.go | 6 +- pods/imports/k8s/MetricTargetV2.go | 2 + ...atingAdmissionPolicyBindingSpecV1Alpha1.go | 17 - .../MutatingAdmissionPolicySpecV1Alpha1.go | 56 -- pods/imports/k8s/MutatingWebhook.go | 2 + pods/imports/k8s/MutationV1Alpha1.go | 15 - pods/imports/k8s/NamedRuleWithOperations.go | 2 + .../k8s/NamedRuleWithOperationsV1Alpha1.go | 2 + .../k8s/NamedRuleWithOperationsV1Beta1.go | 2 + pods/imports/k8s/NamespaceSpec.go | 2 + pods/imports/k8s/NetworkPolicyEgressRule.go | 2 + pods/imports/k8s/NetworkPolicyIngressRule.go | 2 + pods/imports/k8s/NetworkPolicyPeer.go | 2 + pods/imports/k8s/NetworkPolicyPort.go | 2 + pods/imports/k8s/NetworkPolicySpec.go | 2 + pods/imports/k8s/NfsVolumeSource.go | 2 + pods/imports/k8s/NodeAffinity.go | 2 + pods/imports/k8s/NodeConfigSource.go | 2 + pods/imports/k8s/NodeSelector.go | 2 + pods/imports/k8s/NodeSelectorRequirement.go | 2 + pods/imports/k8s/NodeSelectorTerm.go | 2 + pods/imports/k8s/NodeSpec.go | 2 + pods/imports/k8s/NonResourceAttributes.go | 2 + pods/imports/k8s/NonResourcePolicyRule.go | 2 + .../k8s/NonResourcePolicyRuleV1Beta3.go | 23 + pods/imports/k8s/ObjectFieldSelector.go | 2 + pods/imports/k8s/ObjectMeta.go | 1 + pods/imports/k8s/ObjectMetricSourceV2.go | 2 + pods/imports/k8s/ObjectReference.go | 2 + .../k8s/OpaqueDeviceConfigurationV1Alpha3.go | 4 +- .../k8s/OpaqueDeviceConfigurationV1Beta1.go | 17 - pods/imports/k8s/Overhead.go | 2 + pods/imports/k8s/OwnerReference.go | 2 + pods/imports/k8s/ParamKind.go | 2 + pods/imports/k8s/ParamKindV1Alpha1.go | 2 + pods/imports/k8s/ParamKindV1Beta1.go | 2 + pods/imports/k8s/ParamRef.go | 2 + pods/imports/k8s/ParamRefV1Alpha1.go | 2 + pods/imports/k8s/ParamRefV1Beta1.go | 2 + pods/imports/k8s/ParentReferenceV1Beta1.go | 2 + pods/imports/k8s/PersistentVolumeClaimSpec.go | 2 + .../k8s/PersistentVolumeClaimTemplate.go | 2 + .../k8s/PersistentVolumeClaimVolumeSource.go | 2 + pods/imports/k8s/PersistentVolumeSpec.go | 38 +- .../k8s/PhotonPersistentDiskVolumeSource.go | 2 + pods/imports/k8s/PodAffinity.go | 2 + pods/imports/k8s/PodAffinityTerm.go | 2 + pods/imports/k8s/PodAntiAffinity.go | 2 + pods/imports/k8s/PodDisruptionBudgetSpec.go | 2 + pods/imports/k8s/PodDnsConfig.go | 2 + pods/imports/k8s/PodDnsConfigOption.go | 5 +- pods/imports/k8s/PodFailurePolicy.go | 2 + .../PodFailurePolicyOnExitCodesRequirement.go | 2 + .../PodFailurePolicyOnPodConditionsPattern.go | 2 + pods/imports/k8s/PodFailurePolicyRule.go | 2 + pods/imports/k8s/PodOs.go | 2 + pods/imports/k8s/PodReadinessGate.go | 2 + pods/imports/k8s/PodResourceClaim.go | 2 + .../k8s/PodSchedulingContextSpecV1Alpha3.go | 13 + pods/imports/k8s/PodSchedulingGate.go | 2 + pods/imports/k8s/PodSecurityContext.go | 16 +- pods/imports/k8s/PodSpec.go | 12 +- pods/imports/k8s/PodTemplateSpec.go | 2 + pods/imports/k8s/PodsMetricSourceV2.go | 2 + pods/imports/k8s/PolicyRule.go | 2 + pods/imports/k8s/PolicyRulesWithSubjects.go | 2 + .../k8s/PolicyRulesWithSubjectsV1Beta3.go | 19 + pods/imports/k8s/PortworxVolumeSource.go | 2 + pods/imports/k8s/Preconditions.go | 2 + pods/imports/k8s/PreferredSchedulingTerm.go | 2 + .../PriorityLevelConfigurationReference.go | 2 + ...orityLevelConfigurationReferenceV1Beta3.go | 9 + .../k8s/PriorityLevelConfigurationSpec.go | 2 + .../PriorityLevelConfigurationSpecV1Beta3.go | 19 + pods/imports/k8s/Probe.go | 10 +- pods/imports/k8s/ProjectedVolumeSource.go | 2 + pods/imports/k8s/Quantity.go | 2 + pods/imports/k8s/Quantity__checks.go | 1 + pods/imports/k8s/Quantity__no_checks.go | 1 + pods/imports/k8s/QueuingConfiguration.go | 2 + .../k8s/QueuingConfigurationV1Beta3.go | 19 + pods/imports/k8s/QuobyteVolumeSource.go | 2 + pods/imports/k8s/RbdPersistentVolumeSource.go | 2 + pods/imports/k8s/RbdVolumeSource.go | 2 + pods/imports/k8s/ReplicaSetSpec.go | 2 + pods/imports/k8s/ReplicationControllerSpec.go | 2 + pods/imports/k8s/ResourceAttributes.go | 2 + pods/imports/k8s/ResourceClaim.go | 2 + pods/imports/k8s/ResourceClaimSpecV1Alpha3.go | 10 + pods/imports/k8s/ResourceClaimSpecV1Beta1.go | 7 - .../k8s/ResourceClaimTemplateSpecV1Alpha3.go | 4 +- .../k8s/ResourceClaimTemplateSpecV1Beta1.go | 13 - pods/imports/k8s/ResourceFieldSelector.go | 2 + pods/imports/k8s/ResourceMetricSourceV2.go | 2 + pods/imports/k8s/ResourcePolicyRule.go | 2 + pods/imports/k8s/ResourcePolicyRuleV1Beta3.go | 27 + pods/imports/k8s/ResourcePoolV1Alpha3.go | 2 + pods/imports/k8s/ResourcePoolV1Beta1.go | 21 - pods/imports/k8s/ResourceQuotaSpec.go | 2 + pods/imports/k8s/ResourceRequirements.go | 2 + pods/imports/k8s/ResourceSliceSpecV1Alpha3.go | 2 + pods/imports/k8s/ResourceSliceSpecV1Beta1.go | 35 - pods/imports/k8s/RoleRef.go | 2 + pods/imports/k8s/RollingUpdateDaemonSet.go | 2 + pods/imports/k8s/RollingUpdateDeployment.go | 2 + .../k8s/RollingUpdateStatefulSetStrategy.go | 2 + pods/imports/k8s/RuleWithOperations.go | 2 + .../k8s/ScaleIoPersistentVolumeSource.go | 2 + pods/imports/k8s/ScaleIoVolumeSource.go | 2 + pods/imports/k8s/ScaleSpec.go | 2 + pods/imports/k8s/Scheduling.go | 2 + pods/imports/k8s/ScopeSelector.go | 2 + .../k8s/ScopedResourceSelectorRequirement.go | 2 + pods/imports/k8s/SeLinuxOptions.go | 2 + pods/imports/k8s/SeccompProfile.go | 2 + pods/imports/k8s/SecretEnvSource.go | 2 + pods/imports/k8s/SecretKeySelector.go | 2 + pods/imports/k8s/SecretProjection.go | 2 + pods/imports/k8s/SecretReference.go | 2 + pods/imports/k8s/SecretVolumeSource.go | 2 + pods/imports/k8s/SecurityContext.go | 2 + pods/imports/k8s/SelectableField.go | 2 + .../k8s/SelfSubjectAccessReviewSpec.go | 2 + .../imports/k8s/SelfSubjectRulesReviewSpec.go | 2 + .../k8s/ServiceAccountSubjectV1Beta3.go | 15 + .../k8s/ServiceAccountTokenProjection.go | 2 + pods/imports/k8s/ServiceBackendPort.go | 2 + pods/imports/k8s/ServiceCidrSpecV1Beta1.go | 2 + pods/imports/k8s/ServicePort.go | 2 + pods/imports/k8s/ServiceReference.go | 2 + pods/imports/k8s/ServiceSpec.go | 4 +- pods/imports/k8s/SessionAffinityConfig.go | 2 + pods/imports/k8s/SleepAction.go | 2 + pods/imports/k8s/StatefulSetOrdinals.go | 2 + ...SetPersistentVolumeClaimRetentionPolicy.go | 2 + pods/imports/k8s/StatefulSetSpec.go | 4 +- pods/imports/k8s/StatefulSetUpdateStrategy.go | 2 + pods/imports/k8s/StatusCause.go | 2 + pods/imports/k8s/StatusDetails.go | 2 + .../k8s/StorageOsPersistentVolumeSource.go | 2 + pods/imports/k8s/StorageOsVolumeSource.go | 2 + .../StorageVersionMigrationSpecV1Alpha1.go | 2 + pods/imports/k8s/Subject.go | 2 + pods/imports/k8s/SubjectAccessReviewSpec.go | 2 + pods/imports/k8s/SubjectV1Beta3.go | 19 + pods/imports/k8s/SuccessPolicy.go | 2 + pods/imports/k8s/SuccessPolicyRule.go | 2 + pods/imports/k8s/Sysctl.go | 2 + pods/imports/k8s/Taint.go | 1 + pods/imports/k8s/TcpSocketAction.go | 2 + pods/imports/k8s/TokenRequest.go | 2 + pods/imports/k8s/TokenRequestSpec.go | 2 + pods/imports/k8s/TokenReviewSpec.go | 2 + pods/imports/k8s/Toleration.go | 2 + .../k8s/TopologySelectorLabelRequirement.go | 2 + pods/imports/k8s/TopologySelectorTerm.go | 2 + pods/imports/k8s/TopologySpreadConstraint.go | 2 + pods/imports/k8s/TypedLocalObjectReference.go | 2 + pods/imports/k8s/TypedObjectReference.go | 3 +- pods/imports/k8s/UserSubjectV1Beta3.go | 11 + .../ValidatingAdmissionPolicyBindingSpec.go | 4 +- ...atingAdmissionPolicyBindingSpecV1Alpha1.go | 41 + ...datingAdmissionPolicyBindingSpecV1Beta1.go | 4 +- .../k8s/ValidatingAdmissionPolicySpec.go | 2 + .../ValidatingAdmissionPolicySpecV1Alpha1.go | 56 ++ .../ValidatingAdmissionPolicySpecV1Beta1.go | 2 + pods/imports/k8s/ValidatingWebhook.go | 2 + pods/imports/k8s/Validation.go | 2 + pods/imports/k8s/ValidationRule.go | 2 + pods/imports/k8s/ValidationV1Alpha1.go | 48 ++ pods/imports/k8s/ValidationV1Beta1.go | 2 + pods/imports/k8s/Variable.go | 2 + pods/imports/k8s/VariableV1Alpha1.go | 2 + pods/imports/k8s/VariableV1Beta1.go | 2 + pods/imports/k8s/Volume.go | 38 +- pods/imports/k8s/VolumeAttachmentSource.go | 4 +- pods/imports/k8s/VolumeAttachmentSpec.go | 2 + pods/imports/k8s/VolumeDevice.go | 2 + pods/imports/k8s/VolumeMount.go | 2 + pods/imports/k8s/VolumeNodeAffinity.go | 2 + pods/imports/k8s/VolumeNodeResources.go | 2 + pods/imports/k8s/VolumeProjection.go | 2 + .../imports/k8s/VolumeResourceRequirements.go | 2 + .../k8s/VsphereVirtualDiskVolumeSource.go | 2 + pods/imports/k8s/WebhookClientConfig.go | 2 + pods/imports/k8s/WebhookConversion.go | 2 + pods/imports/k8s/WeightedPodAffinityTerm.go | 2 + .../k8s/WindowsSecurityContextOptions.go | 2 + pods/imports/k8s/internal/types.go | 2 - pods/imports/k8s/jsii/jsii.go | 6 +- pods/imports/k8s/jsii/k8s-0.0.0.tgz | Bin 763629 -> 746686 bytes pods/imports/k8s/main.go | 810 ++++++++---------- .../jsii/monitoringcoreoscom-0.0.0.tgz | Bin 34234 -> 34515 bytes 1009 files changed, 3623 insertions(+), 3100 deletions(-) delete mode 100644 pods/imports/k8s/ApplyConfigurationV1Alpha1.go create mode 100644 pods/imports/k8s/AuditAnnotationV1Alpha1.go delete mode 100644 pods/imports/k8s/BasicDeviceV1Beta1.go delete mode 100644 pods/imports/k8s/CelDeviceSelectorV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceAttributeV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceCapacityV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceClaimV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceClassConfigurationV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceClassSpecV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceConstraintV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceRequestV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceSelectorV1Beta1.go delete mode 100644 pods/imports/k8s/DeviceV1Beta1.go create mode 100644 pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go create mode 100644 pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go create mode 100644 pods/imports/k8s/FlowSchemaSpecV1Beta3.go create mode 100644 pods/imports/k8s/GroupSubjectV1Beta3.go delete mode 100644 pods/imports/k8s/JsonPatchV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeDeviceClassV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go rename pods/imports/k8s/{KubeDeviceClassListV1Beta1.go => KubeFlowSchemaListV1Beta3.go} (66%) create mode 100644 pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go rename pods/imports/k8s/{KubeDeviceClassV1Beta1__checks.go => KubeFlowSchemaListV1Beta3__checks.go} (69%) create mode 100644 pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go rename pods/imports/k8s/{KubeDeviceClassV1Beta1.go => KubeFlowSchemaV1Beta3.go} (65%) create mode 100644 pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyV1Alpha1__checks.go => KubeFlowSchemaV1Beta3__checks.go} (61%) create mode 100644 pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go rename pods/imports/k8s/{KubeLeaseCandidateListV1Alpha2.go => KubeLeaseCandidateListV1Alpha1.go} (70%) rename pods/imports/k8s/{KubeLeaseCandidateListV1Alpha2Props.go => KubeLeaseCandidateListV1Alpha1Props.go} (74%) rename pods/imports/k8s/{KubeLeaseCandidateListV1Alpha2__checks.go => KubeLeaseCandidateListV1Alpha1__checks.go} (76%) create mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go rename pods/imports/k8s/{KubeLeaseCandidateV1Alpha2.go => KubeLeaseCandidateV1Alpha1.go} (71%) rename pods/imports/k8s/{KubeLeaseCandidateV1Alpha2Props.go => KubeLeaseCandidateV1Alpha1Props.go} (83%) rename pods/imports/k8s/{KubeLeaseCandidateV1Alpha2__checks.go => KubeLeaseCandidateV1Alpha1__checks.go} (70%) create mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go rename pods/imports/k8s/{KubeResourceClaimTemplateListV1Beta1.go => KubePodSchedulingContextListV1Alpha3.go} (68%) create mode 100644 pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go rename pods/imports/k8s/{KubeResourceClaimTemplateListV1Beta1__checks.go => KubePodSchedulingContextListV1Alpha3__checks.go} (71%) create mode 100644 pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go rename pods/imports/k8s/{KubeResourceClaimTemplateV1Beta1.go => KubePodSchedulingContextV1Alpha3.go} (67%) create mode 100644 pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go rename pods/imports/k8s/{KubeResourceClaimTemplateV1Beta1__checks.go => KubePodSchedulingContextV1Alpha3__checks.go} (71%) create mode 100644 pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go rename pods/imports/k8s/{KubeResourceClaimListV1Beta1.go => KubePriorityLevelConfigurationListV1Beta3.go} (61%) create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go rename pods/imports/k8s/{KubeResourceClaimV1Beta1__checks.go => KubePriorityLevelConfigurationListV1Beta3__checks.go} (65%) create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go rename pods/imports/k8s/{KubeResourceClaimV1Beta1.go => KubePriorityLevelConfigurationV1Beta3.go} (62%) create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go => KubePriorityLevelConfigurationV1Beta3__checks.go} (59%) create mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1.go delete mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go rename pods/imports/k8s/{KubeResourceSliceListV1Alpha3.go => KubeSelfSubjectReviewV1Alpha1.go} (66%) create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go rename pods/imports/k8s/{KubeResourceSliceListV1Alpha3__checks.go => KubeSelfSubjectReviewV1Alpha1__checks.go} (60%) create mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyBindingListV1Alpha1.go => KubeValidatingAdmissionPolicyBindingListV1Alpha1.go} (59%) create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go => KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go} (62%) create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyBindingV1Alpha1.go => KubeValidatingAdmissionPolicyBindingV1Alpha1.go} (58%) create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyListV1Alpha1.go => KubeValidatingAdmissionPolicyListV1Alpha1.go} (61%) rename pods/imports/k8s/{KubeMutatingAdmissionPolicyListV1Alpha1Props.go => KubeValidatingAdmissionPolicyListV1Alpha1Props.go} (53%) rename pods/imports/k8s/{KubeResourceSliceV1Beta1__checks.go => KubeValidatingAdmissionPolicyListV1Alpha1__checks.go} (65%) create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go rename pods/imports/k8s/{KubeMutatingAdmissionPolicyV1Alpha1.go => KubeValidatingAdmissionPolicyV1Alpha1.go} (62%) create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go create mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go rename pods/imports/k8s/{LeaseCandidateSpecV1Alpha2.go => LeaseCandidateSpecV1Alpha1.go} (59%) create mode 100644 pods/imports/k8s/LimitResponseV1Beta3.go create mode 100644 pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go delete mode 100644 pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go delete mode 100644 pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go delete mode 100644 pods/imports/k8s/MutationV1Alpha1.go create mode 100644 pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go delete mode 100644 pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go create mode 100644 pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go create mode 100644 pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go create mode 100644 pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go create mode 100644 pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go create mode 100644 pods/imports/k8s/QueuingConfigurationV1Beta3.go delete mode 100644 pods/imports/k8s/ResourceClaimSpecV1Beta1.go delete mode 100644 pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go create mode 100644 pods/imports/k8s/ResourcePolicyRuleV1Beta3.go delete mode 100644 pods/imports/k8s/ResourcePoolV1Beta1.go delete mode 100644 pods/imports/k8s/ResourceSliceSpecV1Beta1.go create mode 100644 pods/imports/k8s/ServiceAccountSubjectV1Beta3.go create mode 100644 pods/imports/k8s/SubjectV1Beta3.go create mode 100644 pods/imports/k8s/UserSubjectV1Beta3.go create mode 100644 pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go create mode 100644 pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go create mode 100644 pods/imports/k8s/ValidationV1Alpha1.go diff --git a/pods/Justfile b/pods/Justfile index 002831f8b..942cc30ea 100644 --- a/pods/Justfile +++ b/pods/Justfile @@ -76,6 +76,9 @@ crds filter: crd name file: kubectl get crd {{name}} -o yaml > {{file}}.yml +import-k8s: + cdk8s import + # Generate cdk8s bindings for Golang import file: cdk8s import {{file}} --language go diff --git a/pods/README.md b/pods/README.md index e2eab8697..c9ea4e96a 100644 --- a/pods/README.md +++ b/pods/README.md @@ -31,7 +31,7 @@ Run `just test-deploy-cover` to check coverage. Create additional directories for product-specific deployments if needed. -### Importing CRDs +### Importing CRDs and K8s manifests ``` devbox shell diff --git a/pods/cdk8s.yaml b/pods/cdk8s.yaml index 20e55cfc6..617154f50 100644 --- a/pods/cdk8s.yaml +++ b/pods/cdk8s.yaml @@ -1,8 +1,5 @@ language: go app: go run . imports: - - k8s - k8s@1.31.0 - - k8s@1.32.0 - - crd.yml - crds/monitoring.coreos.com.yml diff --git a/pods/imports/k8s/Affinity.go b/pods/imports/k8s/Affinity.go index 210023e96..29ea37335 100644 --- a/pods/imports/k8s/Affinity.go +++ b/pods/imports/k8s/Affinity.go @@ -1,5 +1,6 @@ package k8s + // Affinity is a group of affinity scheduling rules. type Affinity struct { // Describes node affinity scheduling rules for the pod. @@ -9,3 +10,4 @@ type Affinity struct { // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). PodAntiAffinity *PodAntiAffinity `field:"optional" json:"podAntiAffinity" yaml:"podAntiAffinity"` } + diff --git a/pods/imports/k8s/AggregationRule.go b/pods/imports/k8s/AggregationRule.go index 911a3e422..59313544c 100644 --- a/pods/imports/k8s/AggregationRule.go +++ b/pods/imports/k8s/AggregationRule.go @@ -1,5 +1,6 @@ package k8s + // AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole. type AggregationRule struct { // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. @@ -7,3 +8,4 @@ type AggregationRule struct { // If any of the selectors match, then the ClusterRole's permissions will be added. ClusterRoleSelectors *[]*LabelSelector `field:"optional" json:"clusterRoleSelectors" yaml:"clusterRoleSelectors"` } + diff --git a/pods/imports/k8s/ApiServiceSpec.go b/pods/imports/k8s/ApiServiceSpec.go index 8d0b5d451..aa063da97 100644 --- a/pods/imports/k8s/ApiServiceSpec.go +++ b/pods/imports/k8s/ApiServiceSpec.go @@ -1,5 +1,6 @@ package k8s + // APIServiceSpec contains information for locating and communicating with a server. // // Only https is supported, though you are able to disable certificate verification. @@ -31,3 +32,4 @@ type ApiServiceSpec struct { // For example, "v1". Version *string `field:"optional" json:"version" yaml:"version"` } + diff --git a/pods/imports/k8s/AppArmorProfile.go b/pods/imports/k8s/AppArmorProfile.go index 5050a6b91..51be80289 100644 --- a/pods/imports/k8s/AppArmorProfile.go +++ b/pods/imports/k8s/AppArmorProfile.go @@ -1,5 +1,6 @@ package k8s + // AppArmorProfile defines a pod or container's AppArmor settings. type AppArmorProfile struct { // type indicates which kind of AppArmor profile will be applied. @@ -14,3 +15,4 @@ type AppArmorProfile struct { // The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is "Localhost". LocalhostProfile *string `field:"optional" json:"localhostProfile" yaml:"localhostProfile"` } + diff --git a/pods/imports/k8s/ApplyConfigurationV1Alpha1.go b/pods/imports/k8s/ApplyConfigurationV1Alpha1.go deleted file mode 100644 index 6e7da9a4c..000000000 --- a/pods/imports/k8s/ApplyConfigurationV1Alpha1.go +++ /dev/null @@ -1,34 +0,0 @@ -package k8s - -// ApplyConfiguration defines the desired configuration values of an object. -type ApplyConfigurationV1Alpha1 struct { - // expression will be evaluated by CEL to create an apply configuration. ref: https://github.com/google/cel-spec. - // - // Apply configurations are declared in CEL using object initialization. For example, this CEL expression returns an apply configuration to set a single field: - // - // Object{ - // spec: Object.spec{ - // serviceAccountName: "example" - // } - // } - // - // Apply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of values not included in the apply configuration. - // - // CEL expressions have access to the object types needed to create apply configurations: - // - // - 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers') - // - // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables: - // - // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. - // For example, a variable named 'foo' can be accessed as 'variables.foo'. - // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // - // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. - // - // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required. - Expression *string `field:"optional" json:"expression" yaml:"expression"` -} diff --git a/pods/imports/k8s/AuditAnnotation.go b/pods/imports/k8s/AuditAnnotation.go index 2b80c4d1c..fc3933532 100644 --- a/pods/imports/k8s/AuditAnnotation.go +++ b/pods/imports/k8s/AuditAnnotation.go @@ -1,5 +1,6 @@ package k8s + // AuditAnnotation describes how to produce an audit annotation for an API request. type AuditAnnotation struct { // key specifies the audit annotation key. @@ -21,3 +22,4 @@ type AuditAnnotation struct { // Required. ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` } + diff --git a/pods/imports/k8s/AuditAnnotationV1Alpha1.go b/pods/imports/k8s/AuditAnnotationV1Alpha1.go new file mode 100644 index 000000000..0bd8677a4 --- /dev/null +++ b/pods/imports/k8s/AuditAnnotationV1Alpha1.go @@ -0,0 +1,25 @@ +package k8s + + +// AuditAnnotation describes how to produce an audit annotation for an API request. +type AuditAnnotationV1Alpha1 struct { + // key specifies the audit annotation key. + // + // The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. + // + // The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". + // + // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. + // + // Required. + Key *string `field:"required" json:"key" yaml:"key"` + // valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. + // + // The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. + // + // If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. + // + // Required. + ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` +} + diff --git a/pods/imports/k8s/AuditAnnotationV1Beta1.go b/pods/imports/k8s/AuditAnnotationV1Beta1.go index ae8921bc4..ae6a76918 100644 --- a/pods/imports/k8s/AuditAnnotationV1Beta1.go +++ b/pods/imports/k8s/AuditAnnotationV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // AuditAnnotation describes how to produce an audit annotation for an API request. type AuditAnnotationV1Beta1 struct { // key specifies the audit annotation key. @@ -21,3 +22,4 @@ type AuditAnnotationV1Beta1 struct { // Required. ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` } + diff --git a/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go b/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go index 569783226..f6f3c3445 100644 --- a/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go +++ b/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Persistent Disk resource in AWS. // // An AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling. @@ -21,3 +22,4 @@ type AwsElasticBlockStoreVolumeSource struct { // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/AzureDiskVolumeSource.go b/pods/imports/k8s/AzureDiskVolumeSource.go index 6297151e0..546e1f626 100644 --- a/pods/imports/k8s/AzureDiskVolumeSource.go +++ b/pods/imports/k8s/AzureDiskVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. type AzureDiskVolumeSource struct { // diskName is the Name of the data disk in the blob storage. @@ -23,3 +24,4 @@ type AzureDiskVolumeSource struct { // ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/AzureFilePersistentVolumeSource.go b/pods/imports/k8s/AzureFilePersistentVolumeSource.go index 541f7df9d..2fcf809c4 100644 --- a/pods/imports/k8s/AzureFilePersistentVolumeSource.go +++ b/pods/imports/k8s/AzureFilePersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. type AzureFilePersistentVolumeSource struct { // secretName is the name of secret that contains Azure Storage Account Name and Key. @@ -13,3 +14,4 @@ type AzureFilePersistentVolumeSource struct { // secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod. SecretNamespace *string `field:"optional" json:"secretNamespace" yaml:"secretNamespace"` } + diff --git a/pods/imports/k8s/AzureFileVolumeSource.go b/pods/imports/k8s/AzureFileVolumeSource.go index 5e058cd36..c6958d084 100644 --- a/pods/imports/k8s/AzureFileVolumeSource.go +++ b/pods/imports/k8s/AzureFileVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. type AzureFileVolumeSource struct { // secretName is the name of secret that contains Azure Storage Account Name and Key. @@ -11,3 +12,4 @@ type AzureFileVolumeSource struct { // ReadOnly here will force the ReadOnly setting in VolumeMounts. ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/BasicDeviceV1Alpha3.go b/pods/imports/k8s/BasicDeviceV1Alpha3.go index 13be3db8a..3042d4fe5 100644 --- a/pods/imports/k8s/BasicDeviceV1Alpha3.go +++ b/pods/imports/k8s/BasicDeviceV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // BasicDevice defines one device instance. type BasicDeviceV1Alpha3 struct { // Attributes defines the set of attributes for this device. @@ -15,3 +16,4 @@ type BasicDeviceV1Alpha3 struct { // The maximum number of attributes and capacities combined is 32. Capacity *map[string]Quantity `field:"optional" json:"capacity" yaml:"capacity"` } + diff --git a/pods/imports/k8s/BasicDeviceV1Beta1.go b/pods/imports/k8s/BasicDeviceV1Beta1.go deleted file mode 100644 index d8f079e31..000000000 --- a/pods/imports/k8s/BasicDeviceV1Beta1.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - -// BasicDevice defines one device instance. -type BasicDeviceV1Beta1 struct { - // Attributes defines the set of attributes for this device. - // - // The name of each attribute must be unique in that set. - // - // The maximum number of attributes and capacities combined is 32. - Attributes *map[string]*DeviceAttributeV1Beta1 `field:"optional" json:"attributes" yaml:"attributes"` - // Capacity defines the set of capacities for this device. - // - // The name of each capacity must be unique in that set. - // - // The maximum number of attributes and capacities combined is 32. - Capacity *map[string]*DeviceCapacityV1Beta1 `field:"optional" json:"capacity" yaml:"capacity"` -} diff --git a/pods/imports/k8s/BoundObjectReference.go b/pods/imports/k8s/BoundObjectReference.go index 8d09a183d..191fa39da 100644 --- a/pods/imports/k8s/BoundObjectReference.go +++ b/pods/imports/k8s/BoundObjectReference.go @@ -1,5 +1,6 @@ package k8s + // BoundObjectReference is a reference to an object that a token is bound to. type BoundObjectReference struct { // API version of the referent. @@ -13,3 +14,4 @@ type BoundObjectReference struct { // UID of the referent. Uid *string `field:"optional" json:"uid" yaml:"uid"` } + diff --git a/pods/imports/k8s/Capabilities.go b/pods/imports/k8s/Capabilities.go index 96534f5c9..cb5fbedeb 100644 --- a/pods/imports/k8s/Capabilities.go +++ b/pods/imports/k8s/Capabilities.go @@ -1,5 +1,6 @@ package k8s + // Adds and removes POSIX capabilities from running containers. type Capabilities struct { // Added capabilities. @@ -7,3 +8,4 @@ type Capabilities struct { // Removed capabilities. Drop *[]*string `field:"optional" json:"drop" yaml:"drop"` } + diff --git a/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go b/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go index f24d60d26..2c1ab5143 100644 --- a/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go +++ b/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // CELDeviceSelector contains a CEL expression for selecting a device. type CelDeviceSelectorV1Alpha3 struct { // Expression is a CEL expression which evaluates a single device. @@ -31,7 +32,6 @@ type CelDeviceSelectorV1Alpha3 struct { // For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example: // // cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool) - // - // The length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps. Expression *string `field:"required" json:"expression" yaml:"expression"` } + diff --git a/pods/imports/k8s/CelDeviceSelectorV1Beta1.go b/pods/imports/k8s/CelDeviceSelectorV1Beta1.go deleted file mode 100644 index 60ce979ce..000000000 --- a/pods/imports/k8s/CelDeviceSelectorV1Beta1.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - -// CELDeviceSelector contains a CEL expression for selecting a device. -type CelDeviceSelectorV1Beta1 struct { - // Expression is a CEL expression which evaluates a single device. - // - // It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort. - // - // The expression's input is an object named "device", which carries the following properties: - // - driver (string): the name of the driver which defines this device. - // - attributes (map[string]object): the device's attributes, grouped by prefix - // (e.g. device.attributes["dra.example.com"] evaluates to an object with all - // of the attributes which were prefixed by "dra.example.com". - // - capacity (map[string]object): the device's capacities, grouped by prefix. - // - // Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields: - // - // device.driver - // device.attributes["dra.example.com"].model - // device.attributes["ext.example.com"].family - // device.capacity["dra.example.com"].modules - // - // The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers. - // - // The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity. - // - // If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort. - // - // A robust expression should check for the existence of attributes before referencing them. - // - // For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example: - // - // cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool) - // - // The length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps. - Expression *string `field:"required" json:"expression" yaml:"expression"` -} diff --git a/pods/imports/k8s/CephFsPersistentVolumeSource.go b/pods/imports/k8s/CephFsPersistentVolumeSource.go index de5ef89ad..6105e9df2 100644 --- a/pods/imports/k8s/CephFsPersistentVolumeSource.go +++ b/pods/imports/k8s/CephFsPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. type CephFsPersistentVolumeSource struct { // monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. @@ -21,3 +22,4 @@ type CephFsPersistentVolumeSource struct { // user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/CephFsVolumeSource.go b/pods/imports/k8s/CephFsVolumeSource.go index b9189d8f6..e88ee329c 100644 --- a/pods/imports/k8s/CephFsVolumeSource.go +++ b/pods/imports/k8s/CephFsVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. type CephFsVolumeSource struct { // monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. @@ -21,3 +22,4 @@ type CephFsVolumeSource struct { // user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/CertificateSigningRequestSpec.go b/pods/imports/k8s/CertificateSigningRequestSpec.go index 71c38e66c..389696961 100644 --- a/pods/imports/k8s/CertificateSigningRequestSpec.go +++ b/pods/imports/k8s/CertificateSigningRequestSpec.go @@ -1,5 +1,6 @@ package k8s + // CertificateSigningRequestSpec contains the certificate request. type CertificateSigningRequestSpec struct { // request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. @@ -75,3 +76,4 @@ type CertificateSigningRequestSpec struct { // Populated by the API server on creation and immutable. Username *string `field:"optional" json:"username" yaml:"username"` } + diff --git a/pods/imports/k8s/CinderPersistentVolumeSource.go b/pods/imports/k8s/CinderPersistentVolumeSource.go index d3ce1ea5b..083f44a2a 100644 --- a/pods/imports/k8s/CinderPersistentVolumeSource.go +++ b/pods/imports/k8s/CinderPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a cinder volume resource in Openstack. // // A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. @@ -21,3 +22,4 @@ type CinderPersistentVolumeSource struct { // secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack. SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/CinderVolumeSource.go b/pods/imports/k8s/CinderVolumeSource.go index 8c6f772dd..24cd1a4b2 100644 --- a/pods/imports/k8s/CinderVolumeSource.go +++ b/pods/imports/k8s/CinderVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a cinder volume resource in Openstack. // // A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. @@ -19,3 +20,4 @@ type CinderVolumeSource struct { // secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/ClientIpConfig.go b/pods/imports/k8s/ClientIpConfig.go index 82dabd0c1..5bcb01d3a 100644 --- a/pods/imports/k8s/ClientIpConfig.go +++ b/pods/imports/k8s/ClientIpConfig.go @@ -1,5 +1,6 @@ package k8s + // ClientIPConfig represents the configurations of Client IP based session affinity. type ClientIpConfig struct { // timeoutSeconds specifies the seconds of ClientIP type session sticky time. @@ -7,3 +8,4 @@ type ClientIpConfig struct { // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` } + diff --git a/pods/imports/k8s/ClusterTrustBundleProjection.go b/pods/imports/k8s/ClusterTrustBundleProjection.go index 55948645a..c31d3918c 100644 --- a/pods/imports/k8s/ClusterTrustBundleProjection.go +++ b/pods/imports/k8s/ClusterTrustBundleProjection.go @@ -1,5 +1,6 @@ package k8s + // ClusterTrustBundleProjection describes how to select a set of ClusterTrustBundle objects and project their contents into the pod filesystem. type ClusterTrustBundleProjection struct { // Relative path from the volume root to write the bundle. @@ -21,3 +22,4 @@ type ClusterTrustBundleProjection struct { // Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. SignerName *string `field:"optional" json:"signerName" yaml:"signerName"` } + diff --git a/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go b/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go index 1942921a9..01f7f62af 100644 --- a/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go +++ b/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // ClusterTrustBundleSpec contains the signer and trust anchors. type ClusterTrustBundleSpecV1Alpha1 struct { // trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates. @@ -19,3 +20,4 @@ type ClusterTrustBundleSpecV1Alpha1 struct { // List/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector. SignerName *string `field:"optional" json:"signerName" yaml:"signerName"` } + diff --git a/pods/imports/k8s/ComponentCondition.go b/pods/imports/k8s/ComponentCondition.go index 6df69a1d5..5fd4a2609 100644 --- a/pods/imports/k8s/ComponentCondition.go +++ b/pods/imports/k8s/ComponentCondition.go @@ -1,5 +1,6 @@ package k8s + // Information about the condition of a component. type ComponentCondition struct { // Status of the condition for a component. @@ -19,3 +20,4 @@ type ComponentCondition struct { // For example, information about a health check. Message *string `field:"optional" json:"message" yaml:"message"` } + diff --git a/pods/imports/k8s/ConfigMapEnvSource.go b/pods/imports/k8s/ConfigMapEnvSource.go index 78f4c264a..2248baee4 100644 --- a/pods/imports/k8s/ConfigMapEnvSource.go +++ b/pods/imports/k8s/ConfigMapEnvSource.go @@ -1,5 +1,6 @@ package k8s + // ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. // // The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables. @@ -11,3 +12,4 @@ type ConfigMapEnvSource struct { // Specify whether the ConfigMap must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/ConfigMapKeySelector.go b/pods/imports/k8s/ConfigMapKeySelector.go index 4494fe4ed..0599999a5 100644 --- a/pods/imports/k8s/ConfigMapKeySelector.go +++ b/pods/imports/k8s/ConfigMapKeySelector.go @@ -1,5 +1,6 @@ package k8s + // Selects a key from a ConfigMap. type ConfigMapKeySelector struct { // The key to select. @@ -11,3 +12,4 @@ type ConfigMapKeySelector struct { // Specify whether the ConfigMap or its key must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/ConfigMapNodeConfigSource.go b/pods/imports/k8s/ConfigMapNodeConfigSource.go index d5f879b3c..044080201 100644 --- a/pods/imports/k8s/ConfigMapNodeConfigSource.go +++ b/pods/imports/k8s/ConfigMapNodeConfigSource.go @@ -1,5 +1,6 @@ package k8s + // ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node. // // This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration @@ -15,3 +16,4 @@ type ConfigMapNodeConfigSource struct { // UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. Uid *string `field:"optional" json:"uid" yaml:"uid"` } + diff --git a/pods/imports/k8s/ConfigMapProjection.go b/pods/imports/k8s/ConfigMapProjection.go index f0b02da9a..96b6987d8 100644 --- a/pods/imports/k8s/ConfigMapProjection.go +++ b/pods/imports/k8s/ConfigMapProjection.go @@ -1,5 +1,6 @@ package k8s + // Adapts a ConfigMap into a projected volume. // // The contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode. @@ -15,3 +16,4 @@ type ConfigMapProjection struct { // optional specify whether the ConfigMap or its keys must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/ConfigMapVolumeSource.go b/pods/imports/k8s/ConfigMapVolumeSource.go index cfe8c4631..0346e6aa5 100644 --- a/pods/imports/k8s/ConfigMapVolumeSource.go +++ b/pods/imports/k8s/ConfigMapVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Adapts a ConfigMap into a volume. // // The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling. @@ -21,3 +22,4 @@ type ConfigMapVolumeSource struct { // optional specify whether the ConfigMap or its keys must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/Container.go b/pods/imports/k8s/Container.go index 47085db10..b8bbca8dd 100644 --- a/pods/imports/k8s/Container.go +++ b/pods/imports/k8s/Container.go @@ -1,5 +1,6 @@ package k8s + // A single application container that you want to run within a pod. type Container struct { // Name of the container specified as a DNS_LABEL. @@ -107,3 +108,4 @@ type Container struct { // If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. WorkingDir *string `field:"optional" json:"workingDir" yaml:"workingDir"` } + diff --git a/pods/imports/k8s/ContainerPort.go b/pods/imports/k8s/ContainerPort.go index 763ab4be0..98da3dc0e 100644 --- a/pods/imports/k8s/ContainerPort.go +++ b/pods/imports/k8s/ContainerPort.go @@ -1,5 +1,6 @@ package k8s + // ContainerPort represents a network port in a single container. type ContainerPort struct { // Number of port to expose on the pod's IP address. @@ -23,3 +24,4 @@ type ContainerPort struct { // Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` } + diff --git a/pods/imports/k8s/ContainerResizePolicy.go b/pods/imports/k8s/ContainerResizePolicy.go index f424907e7..4eeae531c 100644 --- a/pods/imports/k8s/ContainerResizePolicy.go +++ b/pods/imports/k8s/ContainerResizePolicy.go @@ -1,5 +1,6 @@ package k8s + // ContainerResizePolicy represents resource resize policy for the container. type ContainerResizePolicy struct { // Name of the resource to which this resource resize policy applies. @@ -11,3 +12,4 @@ type ContainerResizePolicy struct { // If not specified, it defaults to NotRequired. RestartPolicy *string `field:"required" json:"restartPolicy" yaml:"restartPolicy"` } + diff --git a/pods/imports/k8s/ContainerResourceMetricSourceV2.go b/pods/imports/k8s/ContainerResourceMetricSourceV2.go index f3640ba49..db49cb36b 100644 --- a/pods/imports/k8s/ContainerResourceMetricSourceV2.go +++ b/pods/imports/k8s/ContainerResourceMetricSourceV2.go @@ -1,5 +1,6 @@ package k8s + // ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set. type ContainerResourceMetricSourceV2 struct { // container is the name of the container in the pods of the scaling target. @@ -9,3 +10,4 @@ type ContainerResourceMetricSourceV2 struct { // target specifies the target value for the given metric. Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` } + diff --git a/pods/imports/k8s/CronJobSpec.go b/pods/imports/k8s/CronJobSpec.go index f0f83d990..e7190ac25 100644 --- a/pods/imports/k8s/CronJobSpec.go +++ b/pods/imports/k8s/CronJobSpec.go @@ -1,5 +1,6 @@ package k8s + // CronJobSpec describes how the job execution will look like and when it will actually run. type CronJobSpec struct { // Specifies the job that will be created when executing a CronJob. @@ -35,3 +36,4 @@ type CronJobSpec struct { // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones. TimeZone *string `field:"optional" json:"timeZone" yaml:"timeZone"` } + diff --git a/pods/imports/k8s/CrossVersionObjectReference.go b/pods/imports/k8s/CrossVersionObjectReference.go index 65112e816..7bf4231ad 100644 --- a/pods/imports/k8s/CrossVersionObjectReference.go +++ b/pods/imports/k8s/CrossVersionObjectReference.go @@ -1,5 +1,6 @@ package k8s + // CrossVersionObjectReference contains enough information to let you identify the referred resource. type CrossVersionObjectReference struct { // kind is the kind of the referent; @@ -13,3 +14,4 @@ type CrossVersionObjectReference struct { // apiVersion is the API version of the referent. ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` } + diff --git a/pods/imports/k8s/CrossVersionObjectReferenceV2.go b/pods/imports/k8s/CrossVersionObjectReferenceV2.go index 703c3a959..9dce02e2f 100644 --- a/pods/imports/k8s/CrossVersionObjectReferenceV2.go +++ b/pods/imports/k8s/CrossVersionObjectReferenceV2.go @@ -1,5 +1,6 @@ package k8s + // CrossVersionObjectReference contains enough information to let you identify the referred resource. type CrossVersionObjectReferenceV2 struct { // kind is the kind of the referent; @@ -13,3 +14,4 @@ type CrossVersionObjectReferenceV2 struct { // apiVersion is the API version of the referent. ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` } + diff --git a/pods/imports/k8s/CsiDriverSpec.go b/pods/imports/k8s/CsiDriverSpec.go index d0479e1a8..a90a349df 100644 --- a/pods/imports/k8s/CsiDriverSpec.go +++ b/pods/imports/k8s/CsiDriverSpec.go @@ -1,5 +1,6 @@ package k8s + // CSIDriverSpec is the specification of a CSIDriver. type CsiDriverSpec struct { // attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. @@ -78,3 +79,4 @@ type CsiDriverSpec struct { // This field is beta. This field is immutable. VolumeLifecycleModes *[]*string `field:"optional" json:"volumeLifecycleModes" yaml:"volumeLifecycleModes"` } + diff --git a/pods/imports/k8s/CsiNodeDriver.go b/pods/imports/k8s/CsiNodeDriver.go index 5e3c14783..9b78f4449 100644 --- a/pods/imports/k8s/CsiNodeDriver.go +++ b/pods/imports/k8s/CsiNodeDriver.go @@ -1,5 +1,6 @@ package k8s + // CSINodeDriver holds information about the specification of one CSI driver installed on a node. type CsiNodeDriver struct { // name represents the name of the CSI driver that this object refers to. @@ -19,3 +20,4 @@ type CsiNodeDriver struct { // When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology. TopologyKeys *[]*string `field:"optional" json:"topologyKeys" yaml:"topologyKeys"` } + diff --git a/pods/imports/k8s/CsiNodeSpec.go b/pods/imports/k8s/CsiNodeSpec.go index d2e67dfb7..73f35e4e0 100644 --- a/pods/imports/k8s/CsiNodeSpec.go +++ b/pods/imports/k8s/CsiNodeSpec.go @@ -1,5 +1,6 @@ package k8s + // CSINodeSpec holds information about the specification of all CSI drivers installed on a node. type CsiNodeSpec struct { // drivers is a list of information of all CSI Drivers existing on a node. @@ -7,3 +8,4 @@ type CsiNodeSpec struct { // If all drivers in the list are uninstalled, this can become empty. Drivers *[]*CsiNodeDriver `field:"required" json:"drivers" yaml:"drivers"` } + diff --git a/pods/imports/k8s/CsiPersistentVolumeSource.go b/pods/imports/k8s/CsiPersistentVolumeSource.go index 6dfe77370..d8a2c813e 100644 --- a/pods/imports/k8s/CsiPersistentVolumeSource.go +++ b/pods/imports/k8s/CsiPersistentVolumeSource.go @@ -1,6 +1,7 @@ package k8s -// Represents storage that is managed by an external CSI volume driver. + +// Represents storage that is managed by an external CSI volume driver (Beta feature). type CsiPersistentVolumeSource struct { // driver is the name of the driver to use for this volume. // @@ -43,3 +44,4 @@ type CsiPersistentVolumeSource struct { // volumeAttributes of the volume to publish. VolumeAttributes *map[string]*string `field:"optional" json:"volumeAttributes" yaml:"volumeAttributes"` } + diff --git a/pods/imports/k8s/CsiVolumeSource.go b/pods/imports/k8s/CsiVolumeSource.go index fb72fc040..3e3592069 100644 --- a/pods/imports/k8s/CsiVolumeSource.go +++ b/pods/imports/k8s/CsiVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a source location of a volume to mount, managed by an external CSI driver. type CsiVolumeSource struct { // driver is the name of the CSI driver that handles this volume. @@ -25,3 +26,4 @@ type CsiVolumeSource struct { // Consult your driver's documentation for supported values. VolumeAttributes *map[string]*string `field:"optional" json:"volumeAttributes" yaml:"volumeAttributes"` } + diff --git a/pods/imports/k8s/CustomResourceColumnDefinition.go b/pods/imports/k8s/CustomResourceColumnDefinition.go index 61f047c28..17a8b328c 100644 --- a/pods/imports/k8s/CustomResourceColumnDefinition.go +++ b/pods/imports/k8s/CustomResourceColumnDefinition.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceColumnDefinition specifies a column for server side printing. type CustomResourceColumnDefinition struct { // jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column. @@ -21,3 +22,4 @@ type CustomResourceColumnDefinition struct { // Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0. Priority *float64 `field:"optional" json:"priority" yaml:"priority"` } + diff --git a/pods/imports/k8s/CustomResourceConversion.go b/pods/imports/k8s/CustomResourceConversion.go index 628cebdc4..605f53aa5 100644 --- a/pods/imports/k8s/CustomResourceConversion.go +++ b/pods/imports/k8s/CustomResourceConversion.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceConversion describes how to convert different versions of a CR. type CustomResourceConversion struct { // strategy specifies how custom resources are converted between versions. @@ -12,3 +13,4 @@ type CustomResourceConversion struct { // Required when `strategy` is set to `"Webhook"`. Webhook *WebhookConversion `field:"optional" json:"webhook" yaml:"webhook"` } + diff --git a/pods/imports/k8s/CustomResourceDefinitionNames.go b/pods/imports/k8s/CustomResourceDefinitionNames.go index bf7bfd302..c73d91729 100644 --- a/pods/imports/k8s/CustomResourceDefinitionNames.go +++ b/pods/imports/k8s/CustomResourceDefinitionNames.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition. type CustomResourceDefinitionNames struct { // kind is the serialized kind of the resource. @@ -29,3 +30,4 @@ type CustomResourceDefinitionNames struct { // Singular *string `field:"optional" json:"singular" yaml:"singular"` } + diff --git a/pods/imports/k8s/CustomResourceDefinitionSpec.go b/pods/imports/k8s/CustomResourceDefinitionSpec.go index faa52d152..f84d089c0 100644 --- a/pods/imports/k8s/CustomResourceDefinitionSpec.go +++ b/pods/imports/k8s/CustomResourceDefinitionSpec.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceDefinitionSpec describes how a user wants their resource to appear. type CustomResourceDefinitionSpec struct { // group is the API group of the defined custom resource. @@ -23,3 +24,4 @@ type CustomResourceDefinitionSpec struct { // apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details. PreserveUnknownFields *bool `field:"optional" json:"preserveUnknownFields" yaml:"preserveUnknownFields"` } + diff --git a/pods/imports/k8s/CustomResourceDefinitionVersion.go b/pods/imports/k8s/CustomResourceDefinitionVersion.go index ceee62ff3..c5818e7d2 100644 --- a/pods/imports/k8s/CustomResourceDefinitionVersion.go +++ b/pods/imports/k8s/CustomResourceDefinitionVersion.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceDefinitionVersion describes a version for CRD. type CustomResourceDefinitionVersion struct { // name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis///...` if `served` is true. @@ -33,3 +34,4 @@ type CustomResourceDefinitionVersion struct { // subresources specify what subresources this version of the defined custom resource have. Subresources *CustomResourceSubresources `field:"optional" json:"subresources" yaml:"subresources"` } + diff --git a/pods/imports/k8s/CustomResourceSubresourceScale.go b/pods/imports/k8s/CustomResourceSubresourceScale.go index fda8cbf5e..61e26617f 100644 --- a/pods/imports/k8s/CustomResourceSubresourceScale.go +++ b/pods/imports/k8s/CustomResourceSubresourceScale.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources. type CustomResourceSubresourceScale struct { // specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET. @@ -9,3 +10,4 @@ type CustomResourceSubresourceScale struct { // labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string. LabelSelectorPath *string `field:"optional" json:"labelSelectorPath" yaml:"labelSelectorPath"` } + diff --git a/pods/imports/k8s/CustomResourceSubresources.go b/pods/imports/k8s/CustomResourceSubresources.go index 0b0603e5b..b59194479 100644 --- a/pods/imports/k8s/CustomResourceSubresources.go +++ b/pods/imports/k8s/CustomResourceSubresources.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceSubresources defines the status and scale subresources for CustomResources. type CustomResourceSubresources struct { // scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object. @@ -9,3 +10,4 @@ type CustomResourceSubresources struct { // When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object. Status interface{} `field:"optional" json:"status" yaml:"status"` } + diff --git a/pods/imports/k8s/CustomResourceValidation.go b/pods/imports/k8s/CustomResourceValidation.go index 1e8258039..6297a04a0 100644 --- a/pods/imports/k8s/CustomResourceValidation.go +++ b/pods/imports/k8s/CustomResourceValidation.go @@ -1,7 +1,9 @@ package k8s + // CustomResourceValidation is a list of validation methods for CustomResources. type CustomResourceValidation struct { // openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning. OpenApiv3Schema *JsonSchemaProps `field:"optional" json:"openApiv3Schema" yaml:"openApiv3Schema"` } + diff --git a/pods/imports/k8s/DaemonSetSpec.go b/pods/imports/k8s/DaemonSetSpec.go index 9f7027a1c..df10d0c35 100644 --- a/pods/imports/k8s/DaemonSetSpec.go +++ b/pods/imports/k8s/DaemonSetSpec.go @@ -1,5 +1,6 @@ package k8s + // DaemonSetSpec is the specification of a daemon set. type DaemonSetSpec struct { // A label query over pods that are managed by the daemon set. @@ -25,3 +26,4 @@ type DaemonSetSpec struct { // An update strategy to replace existing DaemonSet pods with new pods. UpdateStrategy *DaemonSetUpdateStrategy `field:"optional" json:"updateStrategy" yaml:"updateStrategy"` } + diff --git a/pods/imports/k8s/DaemonSetUpdateStrategy.go b/pods/imports/k8s/DaemonSetUpdateStrategy.go index 749d9cde1..202cbe1fe 100644 --- a/pods/imports/k8s/DaemonSetUpdateStrategy.go +++ b/pods/imports/k8s/DaemonSetUpdateStrategy.go @@ -1,5 +1,6 @@ package k8s + // DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet. type DaemonSetUpdateStrategy struct { // Rolling update config params. @@ -13,3 +14,4 @@ type DaemonSetUpdateStrategy struct { // Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/DeleteOptions.go b/pods/imports/k8s/DeleteOptions.go index 5a9e1057c..7b50aaef2 100644 --- a/pods/imports/k8s/DeleteOptions.go +++ b/pods/imports/k8s/DeleteOptions.go @@ -1,5 +1,6 @@ package k8s + // DeleteOptions may be provided when deleting an API object. type DeleteOptions struct { // APIVersion defines the versioned schema of this representation of an object. @@ -16,10 +17,6 @@ type DeleteOptions struct { // Default: a per object value if not specified. zero means delete immediately. // GracePeriodSeconds *float64 `field:"optional" json:"gracePeriodSeconds" yaml:"gracePeriodSeconds"` - // if set to true, it will trigger an unsafe deletion of the resource in case the normal deletion flow fails with a corrupt object error. - // - // A resource is considered corrupt if it can not be retrieved from the underlying storage successfully because of a) its data can not be transformed e.g. decryption failure, or b) it fails to decode into an object. NOTE: unsafe deletion ignores finalizer constraints, skips precondition checks, and removes the object from the storage. WARNING: This may potentially break the cluster if the workload associated with the resource being unsafe-deleted relies on normal deletion flow. Use only if you REALLY know what you are doing. The default value is false, and the user must opt in to enable it - IgnoreStoreReadErrorWithClusterBreakingPotential *bool `field:"optional" json:"ignoreStoreReadErrorWithClusterBreakingPotential" yaml:"ignoreStoreReadErrorWithClusterBreakingPotential"` // Kind is a string value representing the REST resource this object represents. // // Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds @@ -35,3 +32,4 @@ type DeleteOptions struct { // Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. PropagationPolicy *string `field:"optional" json:"propagationPolicy" yaml:"propagationPolicy"` } + diff --git a/pods/imports/k8s/DeploymentSpec.go b/pods/imports/k8s/DeploymentSpec.go index 73b7322bf..de1378083 100644 --- a/pods/imports/k8s/DeploymentSpec.go +++ b/pods/imports/k8s/DeploymentSpec.go @@ -1,5 +1,6 @@ package k8s + // DeploymentSpec is the specification of the desired behavior of the Deployment. type DeploymentSpec struct { // Label selector for pods. @@ -39,3 +40,4 @@ type DeploymentSpec struct { // The deployment strategy to use to replace existing pods with new ones. Strategy *DeploymentStrategy `field:"optional" json:"strategy" yaml:"strategy"` } + diff --git a/pods/imports/k8s/DeploymentStrategy.go b/pods/imports/k8s/DeploymentStrategy.go index a2a83ad33..1c337029a 100644 --- a/pods/imports/k8s/DeploymentStrategy.go +++ b/pods/imports/k8s/DeploymentStrategy.go @@ -1,5 +1,6 @@ package k8s + // DeploymentStrategy describes how to replace existing pods with new ones. type DeploymentStrategy struct { // Rolling update config params. @@ -13,3 +14,4 @@ type DeploymentStrategy struct { // Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/DeviceAttributeV1Alpha3.go b/pods/imports/k8s/DeviceAttributeV1Alpha3.go index d337d95e2..8a618e130 100644 --- a/pods/imports/k8s/DeviceAttributeV1Alpha3.go +++ b/pods/imports/k8s/DeviceAttributeV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // DeviceAttribute must have exactly one field set. type DeviceAttributeV1Alpha3 struct { // BoolValue is a true/false value. @@ -13,3 +14,4 @@ type DeviceAttributeV1Alpha3 struct { // VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters. Version *string `field:"optional" json:"version" yaml:"version"` } + diff --git a/pods/imports/k8s/DeviceAttributeV1Beta1.go b/pods/imports/k8s/DeviceAttributeV1Beta1.go deleted file mode 100644 index 2c3816dff..000000000 --- a/pods/imports/k8s/DeviceAttributeV1Beta1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - -// DeviceAttribute must have exactly one field set. -type DeviceAttributeV1Beta1 struct { - // BoolValue is a true/false value. - Bool *bool `field:"optional" json:"bool" yaml:"bool"` - // IntValue is a number. - Int *float64 `field:"optional" json:"int" yaml:"int"` - // StringValue is a string. - // - // Must not be longer than 64 characters. - String *string `field:"optional" json:"string" yaml:"string"` - // VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters. - Version *string `field:"optional" json:"version" yaml:"version"` -} diff --git a/pods/imports/k8s/DeviceCapacityV1Beta1.go b/pods/imports/k8s/DeviceCapacityV1Beta1.go deleted file mode 100644 index eedd6450b..000000000 --- a/pods/imports/k8s/DeviceCapacityV1Beta1.go +++ /dev/null @@ -1,7 +0,0 @@ -package k8s - -// DeviceCapacity describes a quantity associated with a device. -type DeviceCapacityV1Beta1 struct { - // Value defines how much of a certain device capacity is available. - Value Quantity `field:"required" json:"value" yaml:"value"` -} diff --git a/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go b/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go index 3851cb23f..7b3ac5bfc 100644 --- a/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go +++ b/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // DeviceClaimConfiguration is used for configuration parameters in DeviceClaim. type DeviceClaimConfigurationV1Alpha3 struct { // Opaque provides driver-specific configuration parameters. @@ -9,3 +10,4 @@ type DeviceClaimConfigurationV1Alpha3 struct { // If empty, it applies to all requests. Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` } + diff --git a/pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go b/pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go deleted file mode 100644 index cbe950054..000000000 --- a/pods/imports/k8s/DeviceClaimConfigurationV1Beta1.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - -// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim. -type DeviceClaimConfigurationV1Beta1 struct { - // Opaque provides driver-specific configuration parameters. - Opaque *OpaqueDeviceConfigurationV1Beta1 `field:"optional" json:"opaque" yaml:"opaque"` - // Requests lists the names of requests where the configuration applies. - // - // If empty, it applies to all requests. - Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` -} diff --git a/pods/imports/k8s/DeviceClaimV1Alpha3.go b/pods/imports/k8s/DeviceClaimV1Alpha3.go index d65661f50..f706b3047 100644 --- a/pods/imports/k8s/DeviceClaimV1Alpha3.go +++ b/pods/imports/k8s/DeviceClaimV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // DeviceClaim defines how to request devices with a ResourceClaim. type DeviceClaimV1Alpha3 struct { // This field holds configuration for multiple potential drivers which could satisfy requests in this claim. @@ -13,3 +14,4 @@ type DeviceClaimV1Alpha3 struct { // If empty, nothing needs to be allocated. Requests *[]*DeviceRequestV1Alpha3 `field:"optional" json:"requests" yaml:"requests"` } + diff --git a/pods/imports/k8s/DeviceClaimV1Beta1.go b/pods/imports/k8s/DeviceClaimV1Beta1.go deleted file mode 100644 index 8853d071e..000000000 --- a/pods/imports/k8s/DeviceClaimV1Beta1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - -// DeviceClaim defines how to request devices with a ResourceClaim. -type DeviceClaimV1Beta1 struct { - // This field holds configuration for multiple potential drivers which could satisfy requests in this claim. - // - // It is ignored while allocating the claim. - Config *[]*DeviceClaimConfigurationV1Beta1 `field:"optional" json:"config" yaml:"config"` - // These constraints must be satisfied by the set of devices that get allocated for the claim. - Constraints *[]*DeviceConstraintV1Beta1 `field:"optional" json:"constraints" yaml:"constraints"` - // Requests represent individual requests for distinct devices which must all be satisfied. - // - // If empty, nothing needs to be allocated. - Requests *[]*DeviceRequestV1Beta1 `field:"optional" json:"requests" yaml:"requests"` -} diff --git a/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go b/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go index 0e5c08c61..6a47728a3 100644 --- a/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go +++ b/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go @@ -1,7 +1,9 @@ package k8s + // DeviceClassConfiguration is used in DeviceClass. type DeviceClassConfigurationV1Alpha3 struct { // Opaque provides driver-specific configuration parameters. Opaque *OpaqueDeviceConfigurationV1Alpha3 `field:"optional" json:"opaque" yaml:"opaque"` } + diff --git a/pods/imports/k8s/DeviceClassConfigurationV1Beta1.go b/pods/imports/k8s/DeviceClassConfigurationV1Beta1.go deleted file mode 100644 index adc171ed7..000000000 --- a/pods/imports/k8s/DeviceClassConfigurationV1Beta1.go +++ /dev/null @@ -1,7 +0,0 @@ -package k8s - -// DeviceClassConfiguration is used in DeviceClass. -type DeviceClassConfigurationV1Beta1 struct { - // Opaque provides driver-specific configuration parameters. - Opaque *OpaqueDeviceConfigurationV1Beta1 `field:"optional" json:"opaque" yaml:"opaque"` -} diff --git a/pods/imports/k8s/DeviceClassSpecV1Alpha3.go b/pods/imports/k8s/DeviceClassSpecV1Alpha3.go index d6c4a3bd6..7df0e70f2 100644 --- a/pods/imports/k8s/DeviceClassSpecV1Alpha3.go +++ b/pods/imports/k8s/DeviceClassSpecV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it. type DeviceClassSpecV1Alpha3 struct { // Config defines configuration parameters that apply to each device that is claimed via this class. @@ -10,4 +11,13 @@ type DeviceClassSpecV1Alpha3 struct { Config *[]*DeviceClassConfigurationV1Alpha3 `field:"optional" json:"config" yaml:"config"` // Each selector must be satisfied by a device which is claimed via this class. Selectors *[]*DeviceSelectorV1Alpha3 `field:"optional" json:"selectors" yaml:"selectors"` + // Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. + // + // It is ignored when the claim does not use a control plane controller for allocation. + // + // Setting this field is optional. If unset, all Nodes are candidates. + // + // This is an alpha field and requires enabling the DRAControlPlaneController feature gate. + SuitableNodes *NodeSelector `field:"optional" json:"suitableNodes" yaml:"suitableNodes"` } + diff --git a/pods/imports/k8s/DeviceClassSpecV1Beta1.go b/pods/imports/k8s/DeviceClassSpecV1Beta1.go deleted file mode 100644 index ee3d201f1..000000000 --- a/pods/imports/k8s/DeviceClassSpecV1Beta1.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - -// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it. -type DeviceClassSpecV1Beta1 struct { - // Config defines configuration parameters that apply to each device that is claimed via this class. - // - // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver. - // - // They are passed to the driver, but are not considered while allocating the claim. - Config *[]*DeviceClassConfigurationV1Beta1 `field:"optional" json:"config" yaml:"config"` - // Each selector must be satisfied by a device which is claimed via this class. - Selectors *[]*DeviceSelectorV1Beta1 `field:"optional" json:"selectors" yaml:"selectors"` -} diff --git a/pods/imports/k8s/DeviceConstraintV1Alpha3.go b/pods/imports/k8s/DeviceConstraintV1Alpha3.go index 8925bdb95..77f28459e 100644 --- a/pods/imports/k8s/DeviceConstraintV1Alpha3.go +++ b/pods/imports/k8s/DeviceConstraintV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // DeviceConstraint must have exactly one field set besides Requests. type DeviceConstraintV1Alpha3 struct { // MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices. @@ -13,3 +14,4 @@ type DeviceConstraintV1Alpha3 struct { // If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim. Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` } + diff --git a/pods/imports/k8s/DeviceConstraintV1Beta1.go b/pods/imports/k8s/DeviceConstraintV1Beta1.go deleted file mode 100644 index fd400974c..000000000 --- a/pods/imports/k8s/DeviceConstraintV1Beta1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - -// DeviceConstraint must have exactly one field set besides Requests. -type DeviceConstraintV1Beta1 struct { - // MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices. - // - // For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen. - // - // Must include the domain qualifier. - MatchAttribute *string `field:"optional" json:"matchAttribute" yaml:"matchAttribute"` - // Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. - // - // If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim. - Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` -} diff --git a/pods/imports/k8s/DeviceRequestV1Alpha3.go b/pods/imports/k8s/DeviceRequestV1Alpha3.go index 19d656c74..632ff5cde 100644 --- a/pods/imports/k8s/DeviceRequestV1Alpha3.go +++ b/pods/imports/k8s/DeviceRequestV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // DeviceRequest is a request for devices required for a claim. // // This is typically a request for a single resource like a device, but can also ask for several identical devices. @@ -19,8 +20,6 @@ type DeviceRequestV1Alpha3 struct { // AdminAccess indicates that this is a claim for administrative access to the device(s). // // Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations. - // - // This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled. AdminAccess *bool `field:"optional" json:"adminAccess" yaml:"adminAccess"` // AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:. // @@ -45,3 +44,4 @@ type DeviceRequestV1Alpha3 struct { // All selectors must be satisfied for a device to be considered. Selectors *[]*DeviceSelectorV1Alpha3 `field:"optional" json:"selectors" yaml:"selectors"` } + diff --git a/pods/imports/k8s/DeviceRequestV1Beta1.go b/pods/imports/k8s/DeviceRequestV1Beta1.go deleted file mode 100644 index 0110fae09..000000000 --- a/pods/imports/k8s/DeviceRequestV1Beta1.go +++ /dev/null @@ -1,47 +0,0 @@ -package k8s - -// DeviceRequest is a request for devices required for a claim. -// -// This is typically a request for a single resource like a device, but can also ask for several identical devices. -// -// A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request. -type DeviceRequestV1Beta1 struct { - // DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request. - // - // A class is required. Which classes are available depends on the cluster. - // - // Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference. - DeviceClassName *string `field:"required" json:"deviceClassName" yaml:"deviceClassName"` - // Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim. - // - // Must be a DNS label. - Name *string `field:"required" json:"name" yaml:"name"` - // AdminAccess indicates that this is a claim for administrative access to the device(s). - // - // Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations. - // - // This is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled. - AdminAccess *bool `field:"optional" json:"adminAccess" yaml:"adminAccess"` - // AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:. - // - // - ExactCount: This request is for a specific number of devices. - // This is the default. The exact number is provided in the - // count field. - // - // - All: This request is for all of the matching devices in a pool. - // Allocation will fail if some devices are already allocated, - // unless adminAccess is requested. - // - // If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field. - // - // More modes may get added in the future. Clients must refuse to handle requests with unknown modes. - AllocationMode *string `field:"optional" json:"allocationMode" yaml:"allocationMode"` - // Count is used only when the count mode is "ExactCount". - // - // Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one. - Count *float64 `field:"optional" json:"count" yaml:"count"` - // Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. - // - // All selectors must be satisfied for a device to be considered. - Selectors *[]*DeviceSelectorV1Beta1 `field:"optional" json:"selectors" yaml:"selectors"` -} diff --git a/pods/imports/k8s/DeviceSelectorV1Alpha3.go b/pods/imports/k8s/DeviceSelectorV1Alpha3.go index 93cf12484..d93e529c5 100644 --- a/pods/imports/k8s/DeviceSelectorV1Alpha3.go +++ b/pods/imports/k8s/DeviceSelectorV1Alpha3.go @@ -1,7 +1,9 @@ package k8s + // DeviceSelector must have exactly one field set. type DeviceSelectorV1Alpha3 struct { // CEL contains a CEL expression for selecting a device. Cel *CelDeviceSelectorV1Alpha3 `field:"optional" json:"cel" yaml:"cel"` } + diff --git a/pods/imports/k8s/DeviceSelectorV1Beta1.go b/pods/imports/k8s/DeviceSelectorV1Beta1.go deleted file mode 100644 index f16954af5..000000000 --- a/pods/imports/k8s/DeviceSelectorV1Beta1.go +++ /dev/null @@ -1,7 +0,0 @@ -package k8s - -// DeviceSelector must have exactly one field set. -type DeviceSelectorV1Beta1 struct { - // CEL contains a CEL expression for selecting a device. - Cel *CelDeviceSelectorV1Beta1 `field:"optional" json:"cel" yaml:"cel"` -} diff --git a/pods/imports/k8s/DeviceV1Alpha3.go b/pods/imports/k8s/DeviceV1Alpha3.go index f70ac9de6..69b0fd200 100644 --- a/pods/imports/k8s/DeviceV1Alpha3.go +++ b/pods/imports/k8s/DeviceV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // Device represents one individual hardware instance that can be selected based on its attributes. // // Besides the name, exactly one field must be set. @@ -11,3 +12,4 @@ type DeviceV1Alpha3 struct { // Basic defines one device instance. Basic *BasicDeviceV1Alpha3 `field:"optional" json:"basic" yaml:"basic"` } + diff --git a/pods/imports/k8s/DeviceV1Beta1.go b/pods/imports/k8s/DeviceV1Beta1.go deleted file mode 100644 index 3cfc65eb2..000000000 --- a/pods/imports/k8s/DeviceV1Beta1.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - -// Device represents one individual hardware instance that can be selected based on its attributes. -// -// Besides the name, exactly one field must be set. -type DeviceV1Beta1 struct { - // Name is unique identifier among all devices managed by the driver in the pool. - // - // It must be a DNS label. - Name *string `field:"required" json:"name" yaml:"name"` - // Basic defines one device instance. - Basic *BasicDeviceV1Beta1 `field:"optional" json:"basic" yaml:"basic"` -} diff --git a/pods/imports/k8s/DownwardApiProjection.go b/pods/imports/k8s/DownwardApiProjection.go index 68b48cf97..6448c6b05 100644 --- a/pods/imports/k8s/DownwardApiProjection.go +++ b/pods/imports/k8s/DownwardApiProjection.go @@ -1,5 +1,6 @@ package k8s + // Represents downward API info for projecting into a projected volume. // // Note that this is identical to a downwardAPI volume source without the default mode. @@ -7,3 +8,4 @@ type DownwardApiProjection struct { // Items is a list of DownwardAPIVolume file. Items *[]*DownwardApiVolumeFile `field:"optional" json:"items" yaml:"items"` } + diff --git a/pods/imports/k8s/DownwardApiVolumeFile.go b/pods/imports/k8s/DownwardApiVolumeFile.go index 2191aa25b..33a57b662 100644 --- a/pods/imports/k8s/DownwardApiVolumeFile.go +++ b/pods/imports/k8s/DownwardApiVolumeFile.go @@ -1,5 +1,6 @@ package k8s + // DownwardAPIVolumeFile represents information to create the file containing the pod field. type DownwardApiVolumeFile struct { // Required: Path is the relative path name of the file to be created. @@ -15,3 +16,4 @@ type DownwardApiVolumeFile struct { // Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. ResourceFieldRef *ResourceFieldSelector `field:"optional" json:"resourceFieldRef" yaml:"resourceFieldRef"` } + diff --git a/pods/imports/k8s/DownwardApiVolumeSource.go b/pods/imports/k8s/DownwardApiVolumeSource.go index 89f15f92a..4790b5b17 100644 --- a/pods/imports/k8s/DownwardApiVolumeSource.go +++ b/pods/imports/k8s/DownwardApiVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // DownwardAPIVolumeSource represents a volume containing downward API info. // // Downward API volumes support ownership management and SELinux relabeling. @@ -13,3 +14,4 @@ type DownwardApiVolumeSource struct { // Items is a list of downward API volume file. Items *[]*DownwardApiVolumeFile `field:"optional" json:"items" yaml:"items"` } + diff --git a/pods/imports/k8s/EmptyDirVolumeSource.go b/pods/imports/k8s/EmptyDirVolumeSource.go index 2f8adf05f..4303b7ee6 100644 --- a/pods/imports/k8s/EmptyDirVolumeSource.go +++ b/pods/imports/k8s/EmptyDirVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents an empty directory for a pod. // // Empty directory volumes support ownership management and SELinux relabeling. @@ -13,3 +14,4 @@ type EmptyDirVolumeSource struct { // The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir SizeLimit Quantity `field:"optional" json:"sizeLimit" yaml:"sizeLimit"` } + diff --git a/pods/imports/k8s/Endpoint.go b/pods/imports/k8s/Endpoint.go index 6c96e0684..8e13f3cba 100644 --- a/pods/imports/k8s/Endpoint.go +++ b/pods/imports/k8s/Endpoint.go @@ -1,5 +1,6 @@ package k8s + // Endpoint represents a single logical "backend" implementing a service. type Endpoint struct { // addresses of this endpoint. @@ -27,3 +28,4 @@ type Endpoint struct { // zone is the name of the Zone this endpoint exists in. Zone *string `field:"optional" json:"zone" yaml:"zone"` } + diff --git a/pods/imports/k8s/EndpointAddress.go b/pods/imports/k8s/EndpointAddress.go index 025b6db2a..6de4516b4 100644 --- a/pods/imports/k8s/EndpointAddress.go +++ b/pods/imports/k8s/EndpointAddress.go @@ -1,5 +1,6 @@ package k8s + // EndpointAddress is a tuple that describes single IP address. type EndpointAddress struct { // The IP of this endpoint. @@ -15,3 +16,4 @@ type EndpointAddress struct { // Reference to object providing the endpoint. TargetRef *ObjectReference `field:"optional" json:"targetRef" yaml:"targetRef"` } + diff --git a/pods/imports/k8s/EndpointConditions.go b/pods/imports/k8s/EndpointConditions.go index 325ea4125..3dacb5d04 100644 --- a/pods/imports/k8s/EndpointConditions.go +++ b/pods/imports/k8s/EndpointConditions.go @@ -1,5 +1,6 @@ package k8s + // EndpointConditions represents the current condition of an endpoint. type EndpointConditions struct { // ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. @@ -15,3 +16,4 @@ type EndpointConditions struct { // A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. Terminating *bool `field:"optional" json:"terminating" yaml:"terminating"` } + diff --git a/pods/imports/k8s/EndpointHints.go b/pods/imports/k8s/EndpointHints.go index d7b763365..99b3f4109 100644 --- a/pods/imports/k8s/EndpointHints.go +++ b/pods/imports/k8s/EndpointHints.go @@ -1,7 +1,9 @@ package k8s + // EndpointHints provides hints describing how an endpoint should be consumed. type EndpointHints struct { // forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. ForZones *[]*ForZone `field:"optional" json:"forZones" yaml:"forZones"` } + diff --git a/pods/imports/k8s/EndpointPort.go b/pods/imports/k8s/EndpointPort.go index 1ce62b6b1..997091edc 100644 --- a/pods/imports/k8s/EndpointPort.go +++ b/pods/imports/k8s/EndpointPort.go @@ -1,5 +1,6 @@ package k8s + // EndpointPort is a tuple that describes a single port. type EndpointPort struct { // The port number of the endpoint. @@ -28,3 +29,4 @@ type EndpointPort struct { // Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` } + diff --git a/pods/imports/k8s/EndpointSubset.go b/pods/imports/k8s/EndpointSubset.go index 2ad7646c5..38f153b25 100644 --- a/pods/imports/k8s/EndpointSubset.go +++ b/pods/imports/k8s/EndpointSubset.go @@ -1,5 +1,6 @@ package k8s + // EndpointSubset is a group of addresses with a common set of ports. // // The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given: @@ -23,3 +24,4 @@ type EndpointSubset struct { // Port numbers available on the related IP addresses. Ports *[]*EndpointPort `field:"optional" json:"ports" yaml:"ports"` } + diff --git a/pods/imports/k8s/EnvFromSource.go b/pods/imports/k8s/EnvFromSource.go index 41b7276a5..2dfd01eda 100644 --- a/pods/imports/k8s/EnvFromSource.go +++ b/pods/imports/k8s/EnvFromSource.go @@ -1,5 +1,6 @@ package k8s + // EnvFromSource represents the source of a set of ConfigMaps. type EnvFromSource struct { // The ConfigMap to select from. @@ -11,3 +12,4 @@ type EnvFromSource struct { // The Secret to select from. SecretRef *SecretEnvSource `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/EnvVar.go b/pods/imports/k8s/EnvVar.go index c409353f4..e35720e28 100644 --- a/pods/imports/k8s/EnvVar.go +++ b/pods/imports/k8s/EnvVar.go @@ -1,5 +1,6 @@ package k8s + // EnvVar represents an environment variable present in a Container. type EnvVar struct { // Name of the environment variable. @@ -17,3 +18,4 @@ type EnvVar struct { // Cannot be used if value is not empty. ValueFrom *EnvVarSource `field:"optional" json:"valueFrom" yaml:"valueFrom"` } + diff --git a/pods/imports/k8s/EnvVarSource.go b/pods/imports/k8s/EnvVarSource.go index a16fa2f58..8995ac277 100644 --- a/pods/imports/k8s/EnvVarSource.go +++ b/pods/imports/k8s/EnvVarSource.go @@ -1,5 +1,6 @@ package k8s + // EnvVarSource represents a source for the value of an EnvVar. type EnvVarSource struct { // Selects a key of a ConfigMap. @@ -11,3 +12,4 @@ type EnvVarSource struct { // Selects a key of a secret in the pod's namespace. SecretKeyRef *SecretKeySelector `field:"optional" json:"secretKeyRef" yaml:"secretKeyRef"` } + diff --git a/pods/imports/k8s/EphemeralContainer.go b/pods/imports/k8s/EphemeralContainer.go index 985a6c198..27a647cc1 100644 --- a/pods/imports/k8s/EphemeralContainer.go +++ b/pods/imports/k8s/EphemeralContainer.go @@ -1,5 +1,6 @@ package k8s + // An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. // // Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation. @@ -107,3 +108,4 @@ type EphemeralContainer struct { // If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. WorkingDir *string `field:"optional" json:"workingDir" yaml:"workingDir"` } + diff --git a/pods/imports/k8s/EphemeralVolumeSource.go b/pods/imports/k8s/EphemeralVolumeSource.go index ab11eab0b..b511fa131 100644 --- a/pods/imports/k8s/EphemeralVolumeSource.go +++ b/pods/imports/k8s/EphemeralVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents an ephemeral volume that is handled by a normal storage driver. type EphemeralVolumeSource struct { // Will be used to create a stand-alone PVC to provision the volume. @@ -13,3 +14,4 @@ type EphemeralVolumeSource struct { // Required, must not be nil. VolumeClaimTemplate *PersistentVolumeClaimTemplate `field:"optional" json:"volumeClaimTemplate" yaml:"volumeClaimTemplate"` } + diff --git a/pods/imports/k8s/EventSeries.go b/pods/imports/k8s/EventSeries.go index ac43d5b7e..78e60f705 100644 --- a/pods/imports/k8s/EventSeries.go +++ b/pods/imports/k8s/EventSeries.go @@ -11,3 +11,4 @@ type EventSeries struct { // lastObservedTime is the time when last Event from the series was seen before last heartbeat. LastObservedTime *time.Time `field:"required" json:"lastObservedTime" yaml:"lastObservedTime"` } + diff --git a/pods/imports/k8s/EventSource.go b/pods/imports/k8s/EventSource.go index 49e4283bf..fe94438b5 100644 --- a/pods/imports/k8s/EventSource.go +++ b/pods/imports/k8s/EventSource.go @@ -1,5 +1,6 @@ package k8s + // EventSource contains information for an event. type EventSource struct { // Component from which the event is generated. @@ -7,3 +8,4 @@ type EventSource struct { // Node name on which the event is generated. Host *string `field:"optional" json:"host" yaml:"host"` } + diff --git a/pods/imports/k8s/ExecAction.go b/pods/imports/k8s/ExecAction.go index e6ebc1726..07ec99d0c 100644 --- a/pods/imports/k8s/ExecAction.go +++ b/pods/imports/k8s/ExecAction.go @@ -1,5 +1,6 @@ package k8s + // ExecAction describes a "run in container" action. type ExecAction struct { // Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. @@ -7,3 +8,4 @@ type ExecAction struct { // The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. Command *[]*string `field:"optional" json:"command" yaml:"command"` } + diff --git a/pods/imports/k8s/ExemptPriorityLevelConfiguration.go b/pods/imports/k8s/ExemptPriorityLevelConfiguration.go index 552800bb0..27deebab0 100644 --- a/pods/imports/k8s/ExemptPriorityLevelConfiguration.go +++ b/pods/imports/k8s/ExemptPriorityLevelConfiguration.go @@ -1,5 +1,6 @@ package k8s + // ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. // // In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. @@ -19,3 +20,4 @@ type ExemptPriorityLevelConfiguration struct { // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` } + diff --git a/pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go b/pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go new file mode 100644 index 000000000..135649bd7 --- /dev/null +++ b/pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go @@ -0,0 +1,23 @@ +package k8s + + +// ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. +// +// In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. +type ExemptPriorityLevelConfigurationV1Beta3 struct { + // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. + // + // This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. + // + // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) + LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` + // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. + // + // This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: + // + // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) + // + // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. + NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` +} + diff --git a/pods/imports/k8s/ExternalDocumentation.go b/pods/imports/k8s/ExternalDocumentation.go index f0b57755d..f9de8759c 100644 --- a/pods/imports/k8s/ExternalDocumentation.go +++ b/pods/imports/k8s/ExternalDocumentation.go @@ -1,7 +1,9 @@ package k8s + // ExternalDocumentation allows referencing an external resource for extended documentation. type ExternalDocumentation struct { Description *string `field:"optional" json:"description" yaml:"description"` - Url *string `field:"optional" json:"url" yaml:"url"` + Url *string `field:"optional" json:"url" yaml:"url"` } + diff --git a/pods/imports/k8s/ExternalMetricSourceV2.go b/pods/imports/k8s/ExternalMetricSourceV2.go index 5caf70507..5c8276a30 100644 --- a/pods/imports/k8s/ExternalMetricSourceV2.go +++ b/pods/imports/k8s/ExternalMetricSourceV2.go @@ -1,5 +1,6 @@ package k8s + // ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). type ExternalMetricSourceV2 struct { // metric identifies the target metric by name and selector. @@ -7,3 +8,4 @@ type ExternalMetricSourceV2 struct { // target specifies the target value for the given metric. Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` } + diff --git a/pods/imports/k8s/FcVolumeSource.go b/pods/imports/k8s/FcVolumeSource.go index 64411ad45..4804a0144 100644 --- a/pods/imports/k8s/FcVolumeSource.go +++ b/pods/imports/k8s/FcVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Fibre Channel volume. // // Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling. @@ -21,3 +22,4 @@ type FcVolumeSource struct { // wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. Wwids *[]*string `field:"optional" json:"wwids" yaml:"wwids"` } + diff --git a/pods/imports/k8s/FieldSelectorAttributes.go b/pods/imports/k8s/FieldSelectorAttributes.go index 2658000e1..359e58e45 100644 --- a/pods/imports/k8s/FieldSelectorAttributes.go +++ b/pods/imports/k8s/FieldSelectorAttributes.go @@ -1,5 +1,6 @@ package k8s + // FieldSelectorAttributes indicates a field limited access. // // Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid. @@ -13,3 +14,4 @@ type FieldSelectorAttributes struct { // All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood. Requirements *[]*FieldSelectorRequirement `field:"optional" json:"requirements" yaml:"requirements"` } + diff --git a/pods/imports/k8s/FieldSelectorRequirement.go b/pods/imports/k8s/FieldSelectorRequirement.go index 808fa03f6..047f838e5 100644 --- a/pods/imports/k8s/FieldSelectorRequirement.go +++ b/pods/imports/k8s/FieldSelectorRequirement.go @@ -1,5 +1,6 @@ package k8s + // FieldSelectorRequirement is a selector that contains values, a key, and an operator that relates the key and values. type FieldSelectorRequirement struct { // key is the field selector key that the requirement applies to. @@ -13,3 +14,4 @@ type FieldSelectorRequirement struct { // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. Values *[]*string `field:"optional" json:"values" yaml:"values"` } + diff --git a/pods/imports/k8s/FlexPersistentVolumeSource.go b/pods/imports/k8s/FlexPersistentVolumeSource.go index 8aa5b1153..07b6e2961 100644 --- a/pods/imports/k8s/FlexPersistentVolumeSource.go +++ b/pods/imports/k8s/FlexPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin. type FlexPersistentVolumeSource struct { // driver is the name of the driver to use for this volume. @@ -19,3 +20,4 @@ type FlexPersistentVolumeSource struct { // This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/FlexVolumeSource.go b/pods/imports/k8s/FlexVolumeSource.go index 17a5d612a..acfb1329c 100644 --- a/pods/imports/k8s/FlexVolumeSource.go +++ b/pods/imports/k8s/FlexVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. type FlexVolumeSource struct { // driver is the name of the driver to use for this volume. @@ -19,3 +20,4 @@ type FlexVolumeSource struct { // This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/FlockerVolumeSource.go b/pods/imports/k8s/FlockerVolumeSource.go index 7da9c18e1..f1f0e8364 100644 --- a/pods/imports/k8s/FlockerVolumeSource.go +++ b/pods/imports/k8s/FlockerVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Flocker volume mounted by the Flocker agent. // // One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling. @@ -11,3 +12,4 @@ type FlockerVolumeSource struct { // This is unique identifier of a Flocker dataset. DatasetUuid *string `field:"optional" json:"datasetUuid" yaml:"datasetUuid"` } + diff --git a/pods/imports/k8s/FlowDistinguisherMethod.go b/pods/imports/k8s/FlowDistinguisherMethod.go index 7cf8e6a0a..4e512e612 100644 --- a/pods/imports/k8s/FlowDistinguisherMethod.go +++ b/pods/imports/k8s/FlowDistinguisherMethod.go @@ -1,5 +1,6 @@ package k8s + // FlowDistinguisherMethod specifies the method of a flow distinguisher. type FlowDistinguisherMethod struct { // `type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". @@ -7,3 +8,4 @@ type FlowDistinguisherMethod struct { // Required. Type *string `field:"required" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go b/pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go new file mode 100644 index 000000000..244b7e704 --- /dev/null +++ b/pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go @@ -0,0 +1,11 @@ +package k8s + + +// FlowDistinguisherMethod specifies the method of a flow distinguisher. +type FlowDistinguisherMethodV1Beta3 struct { + // `type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". + // + // Required. + Type *string `field:"required" json:"type" yaml:"type"` +} + diff --git a/pods/imports/k8s/FlowSchemaSpec.go b/pods/imports/k8s/FlowSchemaSpec.go index 6a375e077..c9be559b0 100644 --- a/pods/imports/k8s/FlowSchemaSpec.go +++ b/pods/imports/k8s/FlowSchemaSpec.go @@ -1,5 +1,6 @@ package k8s + // FlowSchemaSpec describes how the FlowSchema's specification looks like. type FlowSchemaSpec struct { // `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. @@ -19,3 +20,4 @@ type FlowSchemaSpec struct { // This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. Rules *[]*PolicyRulesWithSubjects `field:"optional" json:"rules" yaml:"rules"` } + diff --git a/pods/imports/k8s/FlowSchemaSpecV1Beta3.go b/pods/imports/k8s/FlowSchemaSpecV1Beta3.go new file mode 100644 index 000000000..c1fdf2fe4 --- /dev/null +++ b/pods/imports/k8s/FlowSchemaSpecV1Beta3.go @@ -0,0 +1,23 @@ +package k8s + + +// FlowSchemaSpec describes how the FlowSchema's specification looks like. +type FlowSchemaSpecV1Beta3 struct { + // `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. + // + // If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required. + PriorityLevelConfiguration *PriorityLevelConfigurationReferenceV1Beta3 `field:"required" json:"priorityLevelConfiguration" yaml:"priorityLevelConfiguration"` + // `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. + // + // `nil` specifies that the distinguisher is disabled and thus will always be the empty string. + DistinguisherMethod *FlowDistinguisherMethodV1Beta3 `field:"optional" json:"distinguisherMethod" yaml:"distinguisherMethod"` + // `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. + // + // The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. + MatchingPrecedence *float64 `field:"optional" json:"matchingPrecedence" yaml:"matchingPrecedence"` + // `rules` describes which requests will match this flow schema. + // + // This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. + Rules *[]*PolicyRulesWithSubjectsV1Beta3 `field:"optional" json:"rules" yaml:"rules"` +} + diff --git a/pods/imports/k8s/ForZone.go b/pods/imports/k8s/ForZone.go index 6bd51ef6e..ca1d44e83 100644 --- a/pods/imports/k8s/ForZone.go +++ b/pods/imports/k8s/ForZone.go @@ -1,7 +1,9 @@ package k8s + // ForZone provides information about which zones should consume this endpoint. type ForZone struct { // name represents the name of the zone. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/GcePersistentDiskVolumeSource.go b/pods/imports/k8s/GcePersistentDiskVolumeSource.go index ed82af8e2..394f237a7 100644 --- a/pods/imports/k8s/GcePersistentDiskVolumeSource.go +++ b/pods/imports/k8s/GcePersistentDiskVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Persistent Disk resource in Google Compute Engine. // // A GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling. @@ -23,3 +24,4 @@ type GcePersistentDiskVolumeSource struct { // ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/GitRepoVolumeSource.go b/pods/imports/k8s/GitRepoVolumeSource.go index 08a0dc0fe..7e23dc3f7 100644 --- a/pods/imports/k8s/GitRepoVolumeSource.go +++ b/pods/imports/k8s/GitRepoVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a volume that is populated with the contents of a git repository. // // Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling. @@ -15,3 +16,4 @@ type GitRepoVolumeSource struct { // revision is the commit hash for the specified revision. Revision *string `field:"optional" json:"revision" yaml:"revision"` } + diff --git a/pods/imports/k8s/GlusterfsPersistentVolumeSource.go b/pods/imports/k8s/GlusterfsPersistentVolumeSource.go index e7258f767..7b9a3ddb0 100644 --- a/pods/imports/k8s/GlusterfsPersistentVolumeSource.go +++ b/pods/imports/k8s/GlusterfsPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Glusterfs mount that lasts the lifetime of a pod. // // Glusterfs volumes do not support ownership management or SELinux relabeling. @@ -23,3 +24,4 @@ type GlusterfsPersistentVolumeSource struct { // ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/GlusterfsVolumeSource.go b/pods/imports/k8s/GlusterfsVolumeSource.go index 57ab21eec..c7a92c922 100644 --- a/pods/imports/k8s/GlusterfsVolumeSource.go +++ b/pods/imports/k8s/GlusterfsVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Glusterfs mount that lasts the lifetime of a pod. // // Glusterfs volumes do not support ownership management or SELinux relabeling. @@ -19,3 +20,4 @@ type GlusterfsVolumeSource struct { // ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/GroupSubjectV1Beta3.go b/pods/imports/k8s/GroupSubjectV1Beta3.go new file mode 100644 index 000000000..e65de083c --- /dev/null +++ b/pods/imports/k8s/GroupSubjectV1Beta3.go @@ -0,0 +1,11 @@ +package k8s + + +// GroupSubject holds detailed information for group-kind subject. +type GroupSubjectV1Beta3 struct { + // name is the user group that matches, or "*" to match all user groups. + // + // See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. + Name *string `field:"required" json:"name" yaml:"name"` +} + diff --git a/pods/imports/k8s/GroupVersionResourceV1Alpha1.go b/pods/imports/k8s/GroupVersionResourceV1Alpha1.go index d97460cf2..d07fe86a2 100644 --- a/pods/imports/k8s/GroupVersionResourceV1Alpha1.go +++ b/pods/imports/k8s/GroupVersionResourceV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // The names of the group, the version, and the resource. type GroupVersionResourceV1Alpha1 struct { // The name of the group. @@ -9,3 +10,4 @@ type GroupVersionResourceV1Alpha1 struct { // The name of the version. Version *string `field:"optional" json:"version" yaml:"version"` } + diff --git a/pods/imports/k8s/GrpcAction.go b/pods/imports/k8s/GrpcAction.go index 84d6e6552..0039e025f 100644 --- a/pods/imports/k8s/GrpcAction.go +++ b/pods/imports/k8s/GrpcAction.go @@ -1,6 +1,6 @@ package k8s -// GRPCAction specifies an action involving a GRPC service. + type GrpcAction struct { // Port number of the gRPC service. // @@ -11,3 +11,4 @@ type GrpcAction struct { // If this is not specified, the default behavior is defined by gRPC. Service *string `field:"optional" json:"service" yaml:"service"` } + diff --git a/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go b/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go index 88b2ccfcd..ab1bc472e 100644 --- a/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go +++ b/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go @@ -1,5 +1,6 @@ package k8s + // HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). type HorizontalPodAutoscalerBehaviorV2 struct { // scaleDown is scaling policy for scaling Down. @@ -14,3 +15,4 @@ type HorizontalPodAutoscalerBehaviorV2 struct { // No stabilization is used. ScaleUp *HpaScalingRulesV2 `field:"optional" json:"scaleUp" yaml:"scaleUp"` } + diff --git a/pods/imports/k8s/HorizontalPodAutoscalerSpec.go b/pods/imports/k8s/HorizontalPodAutoscalerSpec.go index e8d01fc04..b112c5a6d 100644 --- a/pods/imports/k8s/HorizontalPodAutoscalerSpec.go +++ b/pods/imports/k8s/HorizontalPodAutoscalerSpec.go @@ -1,5 +1,6 @@ package k8s + // specification of a horizontal pod autoscaler. type HorizontalPodAutoscalerSpec struct { // maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; @@ -19,3 +20,4 @@ type HorizontalPodAutoscalerSpec struct { // if not specified the default autoscaling policy will be used. TargetCpuUtilizationPercentage *float64 `field:"optional" json:"targetCpuUtilizationPercentage" yaml:"targetCpuUtilizationPercentage"` } + diff --git a/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go b/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go index 0fbb10ab2..60752d51b 100644 --- a/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go +++ b/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go @@ -1,5 +1,6 @@ package k8s + // HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. type HorizontalPodAutoscalerSpecV2 struct { // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. @@ -21,3 +22,4 @@ type HorizontalPodAutoscalerSpecV2 struct { // It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. MinReplicas *float64 `field:"optional" json:"minReplicas" yaml:"minReplicas"` } + diff --git a/pods/imports/k8s/HostAlias.go b/pods/imports/k8s/HostAlias.go index 590be5244..045b360fd 100644 --- a/pods/imports/k8s/HostAlias.go +++ b/pods/imports/k8s/HostAlias.go @@ -1,5 +1,6 @@ package k8s + // HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. type HostAlias struct { // IP address of the host file entry. @@ -7,3 +8,4 @@ type HostAlias struct { // Hostnames for the above IP address. Hostnames *[]*string `field:"optional" json:"hostnames" yaml:"hostnames"` } + diff --git a/pods/imports/k8s/HostPathVolumeSource.go b/pods/imports/k8s/HostPathVolumeSource.go index bd4e55f1a..5f3130e1b 100644 --- a/pods/imports/k8s/HostPathVolumeSource.go +++ b/pods/imports/k8s/HostPathVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a host path mapped into a pod. // // Host path volumes do not support ownership management or SELinux relabeling. @@ -13,3 +14,4 @@ type HostPathVolumeSource struct { // Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/HpaScalingPolicyV2.go b/pods/imports/k8s/HpaScalingPolicyV2.go index 2498c8e50..ca37143c1 100644 --- a/pods/imports/k8s/HpaScalingPolicyV2.go +++ b/pods/imports/k8s/HpaScalingPolicyV2.go @@ -1,5 +1,6 @@ package k8s + // HPAScalingPolicy is a single policy which must hold true for a specified past interval. type HpaScalingPolicyV2 struct { // periodSeconds specifies the window of time for which the policy should hold true. @@ -13,3 +14,4 @@ type HpaScalingPolicyV2 struct { // It must be greater than zero. Value *float64 `field:"required" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/HpaScalingRulesV2.go b/pods/imports/k8s/HpaScalingRulesV2.go index 4a29189a3..d8ab04ea3 100644 --- a/pods/imports/k8s/HpaScalingRulesV2.go +++ b/pods/imports/k8s/HpaScalingRulesV2.go @@ -1,5 +1,6 @@ package k8s + // HPAScalingRules configures the scaling behavior for one direction. // // These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen. @@ -17,3 +18,4 @@ type HpaScalingRulesV2 struct { // StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). StabilizationWindowSeconds *float64 `field:"optional" json:"stabilizationWindowSeconds" yaml:"stabilizationWindowSeconds"` } + diff --git a/pods/imports/k8s/HttpGetAction.go b/pods/imports/k8s/HttpGetAction.go index 5b246f28c..7c258e914 100644 --- a/pods/imports/k8s/HttpGetAction.go +++ b/pods/imports/k8s/HttpGetAction.go @@ -1,5 +1,6 @@ package k8s + // HTTPGetAction describes an action based on HTTP Get requests. type HttpGetAction struct { // Name or number of the port to access on the container. @@ -23,3 +24,4 @@ type HttpGetAction struct { // Scheme *string `field:"optional" json:"scheme" yaml:"scheme"` } + diff --git a/pods/imports/k8s/HttpHeader.go b/pods/imports/k8s/HttpHeader.go index 588b4e4e0..052186b6e 100644 --- a/pods/imports/k8s/HttpHeader.go +++ b/pods/imports/k8s/HttpHeader.go @@ -1,5 +1,6 @@ package k8s + // HTTPHeader describes a custom header to be used in HTTP probes. type HttpHeader struct { // The header field name. @@ -9,3 +10,4 @@ type HttpHeader struct { // The header field value. Value *string `field:"required" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/HttpIngressPath.go b/pods/imports/k8s/HttpIngressPath.go index 6fbc60172..494029a95 100644 --- a/pods/imports/k8s/HttpIngressPath.go +++ b/pods/imports/k8s/HttpIngressPath.go @@ -1,5 +1,6 @@ package k8s + // HTTPIngressPath associates a path with a backend. // // Incoming urls matching the path are forwarded to the backend. @@ -25,3 +26,4 @@ type HttpIngressPath struct { // Currently it can contain characters disallowed from the conventional "path" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value "Exact" or "Prefix". Path *string `field:"optional" json:"path" yaml:"path"` } + diff --git a/pods/imports/k8s/HttpIngressRuleValue.go b/pods/imports/k8s/HttpIngressRuleValue.go index e882c630d..6e0820f4e 100644 --- a/pods/imports/k8s/HttpIngressRuleValue.go +++ b/pods/imports/k8s/HttpIngressRuleValue.go @@ -1,5 +1,6 @@ package k8s + // HTTPIngressRuleValue is a list of http selectors pointing to backends. // // In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'. @@ -7,3 +8,4 @@ type HttpIngressRuleValue struct { // paths is a collection of paths that map requests to backends. Paths *[]*HttpIngressPath `field:"required" json:"paths" yaml:"paths"` } + diff --git a/pods/imports/k8s/ImageVolumeSource.go b/pods/imports/k8s/ImageVolumeSource.go index 81b78a33c..6ffe8ed23 100644 --- a/pods/imports/k8s/ImageVolumeSource.go +++ b/pods/imports/k8s/ImageVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // ImageVolumeSource represents a image volume resource. type ImageVolumeSource struct { // Policy for pulling OCI objects. @@ -13,3 +14,4 @@ type ImageVolumeSource struct { // Behaves in the same way as pod.spec.containers[*].image. Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. Reference *string `field:"optional" json:"reference" yaml:"reference"` } + diff --git a/pods/imports/k8s/IngressBackend.go b/pods/imports/k8s/IngressBackend.go index de6f22a5a..9adc75b1c 100644 --- a/pods/imports/k8s/IngressBackend.go +++ b/pods/imports/k8s/IngressBackend.go @@ -1,5 +1,6 @@ package k8s + // IngressBackend describes all endpoints for a given service and port. type IngressBackend struct { // resource is an ObjectRef to another Kubernetes resource in the namespace of the Ingress object. @@ -11,3 +12,4 @@ type IngressBackend struct { // This is a mutually exclusive setting with "Resource". Service *IngressServiceBackend `field:"optional" json:"service" yaml:"service"` } + diff --git a/pods/imports/k8s/IngressClassParametersReference.go b/pods/imports/k8s/IngressClassParametersReference.go index cc7f55311..287109612 100644 --- a/pods/imports/k8s/IngressClassParametersReference.go +++ b/pods/imports/k8s/IngressClassParametersReference.go @@ -1,5 +1,6 @@ package k8s + // IngressClassParametersReference identifies an API object. // // This can be used to specify a cluster or namespace-scoped resource. @@ -21,3 +22,4 @@ type IngressClassParametersReference struct { // This may be set to "Cluster" (default) or "Namespace". Scope *string `field:"optional" json:"scope" yaml:"scope"` } + diff --git a/pods/imports/k8s/IngressClassSpec.go b/pods/imports/k8s/IngressClassSpec.go index d732cfda6..186e5dd26 100644 --- a/pods/imports/k8s/IngressClassSpec.go +++ b/pods/imports/k8s/IngressClassSpec.go @@ -1,5 +1,6 @@ package k8s + // IngressClassSpec provides information about the class of an Ingress. type IngressClassSpec struct { // controller refers to the name of the controller that should handle this class. @@ -11,3 +12,4 @@ type IngressClassSpec struct { // This is optional if the controller does not require extra parameters. Parameters *IngressClassParametersReference `field:"optional" json:"parameters" yaml:"parameters"` } + diff --git a/pods/imports/k8s/IngressRule.go b/pods/imports/k8s/IngressRule.go index 5abd5128c..caa4459a4 100644 --- a/pods/imports/k8s/IngressRule.go +++ b/pods/imports/k8s/IngressRule.go @@ -1,5 +1,6 @@ package k8s + // IngressRule represents the rules mapping the paths under a specified host to the related backend services. // // Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue. @@ -14,6 +15,7 @@ type IngressRule struct { // Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue. // // host can be "precise" which is a domain name without the terminating dot of a network host (e.g. "foo.bar.com") or "wildcard", which is a domain name prefixed with a single wildcard label (e.g. "*.foo.com"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == "*"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule. - Host *string `field:"optional" json:"host" yaml:"host"` + Host *string `field:"optional" json:"host" yaml:"host"` Http *HttpIngressRuleValue `field:"optional" json:"http" yaml:"http"` } + diff --git a/pods/imports/k8s/IngressServiceBackend.go b/pods/imports/k8s/IngressServiceBackend.go index 5dd483e9b..56f0dda39 100644 --- a/pods/imports/k8s/IngressServiceBackend.go +++ b/pods/imports/k8s/IngressServiceBackend.go @@ -1,5 +1,6 @@ package k8s + // IngressServiceBackend references a Kubernetes Service as a Backend. type IngressServiceBackend struct { // name is the referenced service. @@ -11,3 +12,4 @@ type IngressServiceBackend struct { // A port name or port number is required for a IngressServiceBackend. Port *ServiceBackendPort `field:"optional" json:"port" yaml:"port"` } + diff --git a/pods/imports/k8s/IngressSpec.go b/pods/imports/k8s/IngressSpec.go index 231adf3a2..6f2a5ef5a 100644 --- a/pods/imports/k8s/IngressSpec.go +++ b/pods/imports/k8s/IngressSpec.go @@ -1,5 +1,6 @@ package k8s + // IngressSpec describes the Ingress the user wishes to exist. type IngressSpec struct { // defaultBackend is the backend that should handle requests that don't match any rule. @@ -19,3 +20,4 @@ type IngressSpec struct { // Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI. Tls *[]*IngressTls `field:"optional" json:"tls" yaml:"tls"` } + diff --git a/pods/imports/k8s/IngressTls.go b/pods/imports/k8s/IngressTls.go index 3021b9c9b..3ce4ba5a0 100644 --- a/pods/imports/k8s/IngressTls.go +++ b/pods/imports/k8s/IngressTls.go @@ -1,5 +1,6 @@ package k8s + // IngressTLS describes the transport layer security associated with an ingress. type IngressTls struct { // hosts is a list of hosts included in the TLS certificate. @@ -13,3 +14,4 @@ type IngressTls struct { // Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the "Host" header is used for routing. SecretName *string `field:"optional" json:"secretName" yaml:"secretName"` } + diff --git a/pods/imports/k8s/IntOrString.go b/pods/imports/k8s/IntOrString.go index 94330b2e8..620078289 100644 --- a/pods/imports/k8s/IntOrString.go +++ b/pods/imports/k8s/IntOrString.go @@ -24,6 +24,7 @@ func (j *jsiiProxy_IntOrString) Value() interface{} { return returns } + func IntOrString_FromNumber(value *float64) IntOrString { _init_.Initialize() @@ -59,3 +60,4 @@ func IntOrString_FromString(value *string) IntOrString { return returns } + diff --git a/pods/imports/k8s/IntOrString__checks.go b/pods/imports/k8s/IntOrString__checks.go index 21b11b6e3..0b0e648a2 100644 --- a/pods/imports/k8s/IntOrString__checks.go +++ b/pods/imports/k8s/IntOrString__checks.go @@ -21,3 +21,4 @@ func validateIntOrString_FromStringParameters(value *string) error { return nil } + diff --git a/pods/imports/k8s/IntOrString__no_checks.go b/pods/imports/k8s/IntOrString__no_checks.go index 81f00e0de..d18d4efae 100644 --- a/pods/imports/k8s/IntOrString__no_checks.go +++ b/pods/imports/k8s/IntOrString__no_checks.go @@ -11,3 +11,4 @@ func validateIntOrString_FromNumberParameters(value *float64) error { func validateIntOrString_FromStringParameters(value *string) error { return nil } + diff --git a/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go b/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go index cfa0cc144..964e72583 100644 --- a/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go +++ b/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go @@ -1,5 +1,6 @@ package k8s + // Kind is a string value representing the REST resource this object represents. // // Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds @@ -9,3 +10,4 @@ const ( // DeleteOptions. IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind_DELETE_OPTIONS IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind = "DELETE_OPTIONS" ) + diff --git a/pods/imports/k8s/IpAddressSpecV1Beta1.go b/pods/imports/k8s/IpAddressSpecV1Beta1.go index 07fe292c2..5b0be72dd 100644 --- a/pods/imports/k8s/IpAddressSpecV1Beta1.go +++ b/pods/imports/k8s/IpAddressSpecV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // IPAddressSpec describe the attributes in an IP Address. type IpAddressSpecV1Beta1 struct { // ParentRef references the resource that an IPAddress is attached to. @@ -7,3 +8,4 @@ type IpAddressSpecV1Beta1 struct { // An IPAddress must reference a parent object. ParentRef *ParentReferenceV1Beta1 `field:"required" json:"parentRef" yaml:"parentRef"` } + diff --git a/pods/imports/k8s/IpBlock.go b/pods/imports/k8s/IpBlock.go index 7534250eb..6287c707d 100644 --- a/pods/imports/k8s/IpBlock.go +++ b/pods/imports/k8s/IpBlock.go @@ -1,5 +1,6 @@ package k8s + // IPBlock describes a particular CIDR (Ex. // // "192.168.1.0/24","2001:db8::/64") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule. @@ -9,3 +10,4 @@ type IpBlock struct { // except is a slice of CIDRs that should not be included within an IPBlock Valid examples are "192.168.1.0/24" or "2001:db8::/64" Except values will be rejected if they are outside the cidr range. Except *[]*string `field:"optional" json:"except" yaml:"except"` } + diff --git a/pods/imports/k8s/IscsiPersistentVolumeSource.go b/pods/imports/k8s/IscsiPersistentVolumeSource.go index 657afa423..2f2731246 100644 --- a/pods/imports/k8s/IscsiPersistentVolumeSource.go +++ b/pods/imports/k8s/IscsiPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // ISCSIPersistentVolumeSource represents an ISCSI disk. // // ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. @@ -43,3 +44,4 @@ type IscsiPersistentVolumeSource struct { // secretRef is the CHAP Secret for iSCSI target and initiator authentication. SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/IscsiVolumeSource.go b/pods/imports/k8s/IscsiVolumeSource.go index 59697e518..d46e3a7ee 100644 --- a/pods/imports/k8s/IscsiVolumeSource.go +++ b/pods/imports/k8s/IscsiVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents an ISCSI disk. // // ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. @@ -43,3 +44,4 @@ type IscsiVolumeSource struct { // secretRef is the CHAP Secret for iSCSI target and initiator authentication. SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` } + diff --git a/pods/imports/k8s/JobSpec.go b/pods/imports/k8s/JobSpec.go index 2f74ded56..b08f5720d 100644 --- a/pods/imports/k8s/JobSpec.go +++ b/pods/imports/k8s/JobSpec.go @@ -1,5 +1,6 @@ package k8s + // JobSpec describes how the job execution will look like. type JobSpec struct { // Describes the pod that will be created when executing a job. @@ -36,7 +37,7 @@ type JobSpec struct { // // The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first "/" must be a valid subdomain as defined by RFC 1123. All characters trailing the first "/" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable. // - // This field is beta-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (enabled by default). + // This field is alpha-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (disabled by default). ManagedBy *string `field:"optional" json:"managedBy" yaml:"managedBy"` // manualSelector controls generation of pod labels and pod selectors. // @@ -84,3 +85,4 @@ type JobSpec struct { // If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. TtlSecondsAfterFinished *float64 `field:"optional" json:"ttlSecondsAfterFinished" yaml:"ttlSecondsAfterFinished"` } + diff --git a/pods/imports/k8s/JobTemplateSpec.go b/pods/imports/k8s/JobTemplateSpec.go index 5bf129726..71c255cf0 100644 --- a/pods/imports/k8s/JobTemplateSpec.go +++ b/pods/imports/k8s/JobTemplateSpec.go @@ -1,5 +1,6 @@ package k8s + // JobTemplateSpec describes the data a Job should have when created from a template. type JobTemplateSpec struct { // Standard object's metadata of the jobs created from this template. @@ -11,3 +12,4 @@ type JobTemplateSpec struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *JobSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/JsonPatchV1Alpha1.go b/pods/imports/k8s/JsonPatchV1Alpha1.go deleted file mode 100644 index 84c16618e..000000000 --- a/pods/imports/k8s/JsonPatchV1Alpha1.go +++ /dev/null @@ -1,60 +0,0 @@ -package k8s - -// JSONPatch defines a JSON Patch. -type JsonPatchV1Alpha1 struct { - // expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/). ref: https://github.com/google/cel-spec. - // - // expression must return an array of JSONPatch values. - // - // For example, this CEL expression returns a JSON patch to conditionally modify a value: - // - // [ - // JSONPatch{op: "test", path: "/spec/example", value: "Red"}, - // JSONPatch{op: "replace", path: "/spec/example", value: "Green"} - // ] - // - // To define an object for the patch value, use Object types. For example: - // - // [ - // JSONPatch{ - // op: "add", - // path: "/spec/selector", - // value: Object.spec.selector{matchLabels: {"environment": "test"}} - // } - // ] - // - // To use strings containing '/' and '~' as JSONPatch path keys, use "jsonpatch.escapeKey". For example: - // - // [ - // JSONPatch{ - // op: "add", - // path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"), - // value: "test" - // }, - // ] - // - // CEL expressions have access to the types needed to create JSON patches and objects: - // - // - 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'. - // See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string, - // integer, array, map or object. If set, the 'path' and 'from' fields must be set to a - // [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL - // function may be used to escape path keys containing '/' and '~'. - // - 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers') - // - // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables: - // - // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. - // For example, a variable named 'foo' can be accessed as 'variables.foo'. - // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // - // CEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries) as well as: - // - // - 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and '/' are escaped as '~0' and `~1' respectively). - // - // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required. - Expression *string `field:"optional" json:"expression" yaml:"expression"` -} diff --git a/pods/imports/k8s/JsonSchemaProps.go b/pods/imports/k8s/JsonSchemaProps.go index de211c8c8..78fc1af16 100644 --- a/pods/imports/k8s/JsonSchemaProps.go +++ b/pods/imports/k8s/JsonSchemaProps.go @@ -1,50 +1,51 @@ package k8s + // JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). type JsonSchemaProps struct { - AdditionalItems interface{} `field:"optional" json:"additionalItems" yaml:"additionalItems"` - AdditionalProperties interface{} `field:"optional" json:"additionalProperties" yaml:"additionalProperties"` - AllOf *[]*JsonSchemaProps `field:"optional" json:"allOf" yaml:"allOf"` - AnyOf *[]*JsonSchemaProps `field:"optional" json:"anyOf" yaml:"anyOf"` + AdditionalItems interface{} `field:"optional" json:"additionalItems" yaml:"additionalItems"` + AdditionalProperties interface{} `field:"optional" json:"additionalProperties" yaml:"additionalProperties"` + AllOf *[]*JsonSchemaProps `field:"optional" json:"allOf" yaml:"allOf"` + AnyOf *[]*JsonSchemaProps `field:"optional" json:"anyOf" yaml:"anyOf"` // default is a default value for undefined object fields. // // Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false. - Default interface{} `field:"optional" json:"default" yaml:"default"` - Definitions *map[string]*JsonSchemaProps `field:"optional" json:"definitions" yaml:"definitions"` - Dependencies *map[string]interface{} `field:"optional" json:"dependencies" yaml:"dependencies"` - Description *string `field:"optional" json:"description" yaml:"description"` - Enum *[]interface{} `field:"optional" json:"enum" yaml:"enum"` - Example interface{} `field:"optional" json:"example" yaml:"example"` - ExclusiveMaximum *bool `field:"optional" json:"exclusiveMaximum" yaml:"exclusiveMaximum"` - ExclusiveMinimum *bool `field:"optional" json:"exclusiveMinimum" yaml:"exclusiveMinimum"` - ExternalDocs *ExternalDocumentation `field:"optional" json:"externalDocs" yaml:"externalDocs"` + Default interface{} `field:"optional" json:"default" yaml:"default"` + Definitions *map[string]*JsonSchemaProps `field:"optional" json:"definitions" yaml:"definitions"` + Dependencies *map[string]interface{} `field:"optional" json:"dependencies" yaml:"dependencies"` + Description *string `field:"optional" json:"description" yaml:"description"` + Enum *[]interface{} `field:"optional" json:"enum" yaml:"enum"` + Example interface{} `field:"optional" json:"example" yaml:"example"` + ExclusiveMaximum *bool `field:"optional" json:"exclusiveMaximum" yaml:"exclusiveMaximum"` + ExclusiveMinimum *bool `field:"optional" json:"exclusiveMinimum" yaml:"exclusiveMinimum"` + ExternalDocs *ExternalDocumentation `field:"optional" json:"externalDocs" yaml:"externalDocs"` // format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:. // - // - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041" - isbn10: an ISBN10 number string like "0321751043" - isbn13: an ISBN13 number string like "978-0321751041" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$ - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559" - byte: base64 encoded binary data - password: any kind of string - date: a date string like "2006-01-02" as defined by full-date in RFC3339 - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339. - Format *string `field:"optional" json:"format" yaml:"format"` - Id *string `field:"optional" json:"id" yaml:"id"` - Items interface{} `field:"optional" json:"items" yaml:"items"` - Maximum *float64 `field:"optional" json:"maximum" yaml:"maximum"` - MaxItems *float64 `field:"optional" json:"maxItems" yaml:"maxItems"` - MaxLength *float64 `field:"optional" json:"maxLength" yaml:"maxLength"` - MaxProperties *float64 `field:"optional" json:"maxProperties" yaml:"maxProperties"` - Minimum *float64 `field:"optional" json:"minimum" yaml:"minimum"` - MinItems *float64 `field:"optional" json:"minItems" yaml:"minItems"` - MinLength *float64 `field:"optional" json:"minLength" yaml:"minLength"` - MinProperties *float64 `field:"optional" json:"minProperties" yaml:"minProperties"` - MultipleOf *float64 `field:"optional" json:"multipleOf" yaml:"multipleOf"` - Not **JsonSchemaProps `field:"optional" json:"not" yaml:"not"` - Nullable *bool `field:"optional" json:"nullable" yaml:"nullable"` - OneOf *[]*JsonSchemaProps `field:"optional" json:"oneOf" yaml:"oneOf"` - Pattern *string `field:"optional" json:"pattern" yaml:"pattern"` + // - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041" - isbn10: an ISBN10 number string like "0321751043" - isbn13: an ISBN13 number string like "978-0321751041" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\d{3}[- ]?\d{2}[- ]?\d{4}$ - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559" - byte: base64 encoded binary data - password: any kind of string - date: a date string like "2006-01-02" as defined by full-date in RFC3339 - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339. + Format *string `field:"optional" json:"format" yaml:"format"` + Id *string `field:"optional" json:"id" yaml:"id"` + Items interface{} `field:"optional" json:"items" yaml:"items"` + Maximum *float64 `field:"optional" json:"maximum" yaml:"maximum"` + MaxItems *float64 `field:"optional" json:"maxItems" yaml:"maxItems"` + MaxLength *float64 `field:"optional" json:"maxLength" yaml:"maxLength"` + MaxProperties *float64 `field:"optional" json:"maxProperties" yaml:"maxProperties"` + Minimum *float64 `field:"optional" json:"minimum" yaml:"minimum"` + MinItems *float64 `field:"optional" json:"minItems" yaml:"minItems"` + MinLength *float64 `field:"optional" json:"minLength" yaml:"minLength"` + MinProperties *float64 `field:"optional" json:"minProperties" yaml:"minProperties"` + MultipleOf *float64 `field:"optional" json:"multipleOf" yaml:"multipleOf"` + Not **JsonSchemaProps `field:"optional" json:"not" yaml:"not"` + Nullable *bool `field:"optional" json:"nullable" yaml:"nullable"` + OneOf *[]*JsonSchemaProps `field:"optional" json:"oneOf" yaml:"oneOf"` + Pattern *string `field:"optional" json:"pattern" yaml:"pattern"` PatternProperties *map[string]*JsonSchemaProps `field:"optional" json:"patternProperties" yaml:"patternProperties"` - Properties *map[string]*JsonSchemaProps `field:"optional" json:"properties" yaml:"properties"` - Ref *string `field:"optional" json:"ref" yaml:"ref"` - Required *[]*string `field:"optional" json:"required" yaml:"required"` - Schema *string `field:"optional" json:"schema" yaml:"schema"` - Title *string `field:"optional" json:"title" yaml:"title"` - Type *string `field:"optional" json:"type" yaml:"type"` - UniqueItems *bool `field:"optional" json:"uniqueItems" yaml:"uniqueItems"` + Properties *map[string]*JsonSchemaProps `field:"optional" json:"properties" yaml:"properties"` + Ref *string `field:"optional" json:"ref" yaml:"ref"` + Required *[]*string `field:"optional" json:"required" yaml:"required"` + Schema *string `field:"optional" json:"schema" yaml:"schema"` + Title *string `field:"optional" json:"title" yaml:"title"` + Type *string `field:"optional" json:"type" yaml:"type"` + UniqueItems *bool `field:"optional" json:"uniqueItems" yaml:"uniqueItems"` // x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata). XKubernetesEmbeddedResource *bool `field:"optional" json:"xKubernetesEmbeddedResource" yaml:"xKubernetesEmbeddedResource"` // x-kubernetes-int-or-string specifies that this value is either an integer or a string. @@ -103,3 +104,4 @@ type JsonSchemaProps struct { // x-kubernetes-validations describes a list of validation rules written in the CEL expression language. XKubernetesValidations *[]*ValidationRule `field:"optional" json:"xKubernetesValidations" yaml:"xKubernetesValidations"` } + diff --git a/pods/imports/k8s/KeyToPath.go b/pods/imports/k8s/KeyToPath.go index f5786ce12..f03a15c69 100644 --- a/pods/imports/k8s/KeyToPath.go +++ b/pods/imports/k8s/KeyToPath.go @@ -1,5 +1,6 @@ package k8s + // Maps a string key to a path within a volume. type KeyToPath struct { // key is the key to project. @@ -13,3 +14,4 @@ type KeyToPath struct { // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. Mode *float64 `field:"optional" json:"mode" yaml:"mode"` } + diff --git a/pods/imports/k8s/KubeApiService.go b/pods/imports/k8s/KubeApiService.go index ad4def660..813649773 100644 --- a/pods/imports/k8s/KubeApiService.go +++ b/pods/imports/k8s/KubeApiService.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeApiService) Node() constructs.Node { return returns } + // Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" API object. func NewKubeApiService(scope constructs.Construct, id *string, props *KubeApiServiceProps) KubeApiService { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeApiService) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeApiServiceList.go b/pods/imports/k8s/KubeApiServiceList.go index 7d7633f8b..09ef7dc3c 100644 --- a/pods/imports/k8s/KubeApiServiceList.go +++ b/pods/imports/k8s/KubeApiServiceList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeApiServiceList) Node() constructs.Node { return returns } + // Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" API object. func NewKubeApiServiceList(scope constructs.Construct, id *string, props *KubeApiServiceListProps) KubeApiServiceList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeApiServiceList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeApiServiceListProps.go b/pods/imports/k8s/KubeApiServiceListProps.go index 8122560a5..294cc20ee 100644 --- a/pods/imports/k8s/KubeApiServiceListProps.go +++ b/pods/imports/k8s/KubeApiServiceListProps.go @@ -1,5 +1,6 @@ package k8s + // APIServiceList is a list of APIService objects. type KubeApiServiceListProps struct { // Items is the list of APIService. @@ -7,3 +8,4 @@ type KubeApiServiceListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeApiServiceList__checks.go b/pods/imports/k8s/KubeApiServiceList__checks.go index 0fb2325f7..3a644762e 100644 --- a/pods/imports/k8s/KubeApiServiceList__checks.go +++ b/pods/imports/k8s/KubeApiServiceList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeApiServiceListParameters(scope constructs.Construct, id *str return nil } + diff --git a/pods/imports/k8s/KubeApiServiceList__no_checks.go b/pods/imports/k8s/KubeApiServiceList__no_checks.go index a2c57c29c..2db0e7ee6 100644 --- a/pods/imports/k8s/KubeApiServiceList__no_checks.go +++ b/pods/imports/k8s/KubeApiServiceList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeApiServiceList_OfParameters(c constructs.IConstruct) error { func validateNewKubeApiServiceListParameters(scope constructs.Construct, id *string, props *KubeApiServiceListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeApiServiceProps.go b/pods/imports/k8s/KubeApiServiceProps.go index 463869bdc..67017aeee 100644 --- a/pods/imports/k8s/KubeApiServiceProps.go +++ b/pods/imports/k8s/KubeApiServiceProps.go @@ -1,5 +1,6 @@ package k8s + // APIService represents a server for a particular GroupVersion. // // Name must be "version.group". @@ -11,3 +12,4 @@ type KubeApiServiceProps struct { // Spec contains information for locating and communicating with a server. Spec *ApiServiceSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeApiService__checks.go b/pods/imports/k8s/KubeApiService__checks.go index 60c5d7b78..b6e0e7d70 100644 --- a/pods/imports/k8s/KubeApiService__checks.go +++ b/pods/imports/k8s/KubeApiService__checks.go @@ -57,3 +57,4 @@ func validateNewKubeApiServiceParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeApiService__no_checks.go b/pods/imports/k8s/KubeApiService__no_checks.go index 091764dab..a7a834b22 100644 --- a/pods/imports/k8s/KubeApiService__no_checks.go +++ b/pods/imports/k8s/KubeApiService__no_checks.go @@ -23,3 +23,4 @@ func validateKubeApiService_OfParameters(c constructs.IConstruct) error { func validateNewKubeApiServiceParameters(scope constructs.Construct, id *string, props *KubeApiServiceProps) error { return nil } + diff --git a/pods/imports/k8s/KubeBinding.go b/pods/imports/k8s/KubeBinding.go index 190da7322..142048d7c 100644 --- a/pods/imports/k8s/KubeBinding.go +++ b/pods/imports/k8s/KubeBinding.go @@ -11,7 +11,7 @@ import ( // Binding ties one object to another; // -// for example, a pod is bound to a node by a scheduler. +// for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead. type KubeBinding interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeBinding) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Binding" API object. func NewKubeBinding(scope constructs.Construct, id *string, props *KubeBindingProps) KubeBinding { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeBinding) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeBindingProps.go b/pods/imports/k8s/KubeBindingProps.go index dd8b7e7eb..c08d669b5 100644 --- a/pods/imports/k8s/KubeBindingProps.go +++ b/pods/imports/k8s/KubeBindingProps.go @@ -1,8 +1,9 @@ package k8s + // Binding ties one object to another; // -// for example, a pod is bound to a node by a scheduler. +// for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead. type KubeBindingProps struct { // The target object that you want to bind to the standard object. Target *ObjectReference `field:"required" json:"target" yaml:"target"` @@ -11,3 +12,4 @@ type KubeBindingProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeBinding__checks.go b/pods/imports/k8s/KubeBinding__checks.go index 9b4958179..963049708 100644 --- a/pods/imports/k8s/KubeBinding__checks.go +++ b/pods/imports/k8s/KubeBinding__checks.go @@ -63,3 +63,4 @@ func validateNewKubeBindingParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubeBinding__no_checks.go b/pods/imports/k8s/KubeBinding__no_checks.go index a3be7a83e..7f251c8cb 100644 --- a/pods/imports/k8s/KubeBinding__no_checks.go +++ b/pods/imports/k8s/KubeBinding__no_checks.go @@ -23,3 +23,4 @@ func validateKubeBinding_OfParameters(c constructs.IConstruct) error { func validateNewKubeBindingParameters(scope constructs.Construct, id *string, props *KubeBindingProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequest.go b/pods/imports/k8s/KubeCertificateSigningRequest.go index ceb38a205..1eec27800 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequest.go +++ b/pods/imports/k8s/KubeCertificateSigningRequest.go @@ -128,6 +128,7 @@ func (j *jsiiProxy_KubeCertificateSigningRequest) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.certificates.v1.CertificateSigningRequest" API object. func NewKubeCertificateSigningRequest(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) KubeCertificateSigningRequest { _init_.Initialize() @@ -319,3 +320,4 @@ func (k *jsiiProxy_KubeCertificateSigningRequest) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList.go b/pods/imports/k8s/KubeCertificateSigningRequestList.go index 546df2a98..67898a398 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequestList.go +++ b/pods/imports/k8s/KubeCertificateSigningRequestList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCertificateSigningRequestList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.certificates.v1.CertificateSigningRequestList" API object. func NewKubeCertificateSigningRequestList(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) KubeCertificateSigningRequestList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCertificateSigningRequestList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequestListProps.go b/pods/imports/k8s/KubeCertificateSigningRequestListProps.go index 741ceb625..fe287776d 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequestListProps.go +++ b/pods/imports/k8s/KubeCertificateSigningRequestListProps.go @@ -1,8 +1,10 @@ package k8s + // CertificateSigningRequestList is a collection of CertificateSigningRequest objects. type KubeCertificateSigningRequestListProps struct { // items is a collection of CertificateSigningRequest objects. - Items *[]*KubeCertificateSigningRequestProps `field:"required" json:"items" yaml:"items"` - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` + Items *[]*KubeCertificateSigningRequestProps `field:"required" json:"items" yaml:"items"` + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go b/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go index d2debdc6c..10b9d4521 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go +++ b/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCertificateSigningRequestListParameters(scope constructs.Con return nil } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go b/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go index 33d18157d..f2919c2d2 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go +++ b/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCertificateSigningRequestList_OfParameters(c constructs.IConstr func validateNewKubeCertificateSigningRequestListParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequestProps.go b/pods/imports/k8s/KubeCertificateSigningRequestProps.go index 7d5a0c87e..ea98c3e04 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequestProps.go +++ b/pods/imports/k8s/KubeCertificateSigningRequestProps.go @@ -1,5 +1,6 @@ package k8s + // CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued. // // Kubelets use this API to obtain: @@ -11,6 +12,7 @@ type KubeCertificateSigningRequestProps struct { // spec contains the certificate request, and is immutable after creation. // // Only the request, signerName, expirationSeconds, and usages fields can be set on creation. Other fields are derived by Kubernetes and cannot be modified by users. - Spec *CertificateSigningRequestSpec `field:"required" json:"spec" yaml:"spec"` - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + Spec *CertificateSigningRequestSpec `field:"required" json:"spec" yaml:"spec"` + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequest__checks.go b/pods/imports/k8s/KubeCertificateSigningRequest__checks.go index 0a56a0bd2..86820cf41 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequest__checks.go +++ b/pods/imports/k8s/KubeCertificateSigningRequest__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCertificateSigningRequestParameters(scope constructs.Constru return nil } + diff --git a/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go b/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go index decf2b488..07f1e18e2 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go +++ b/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCertificateSigningRequest_OfParameters(c constructs.IConstruct) func validateNewKubeCertificateSigningRequestParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) error { return nil } + diff --git a/pods/imports/k8s/KubeClusterRole.go b/pods/imports/k8s/KubeClusterRole.go index 2cd1bf653..cee326a9f 100644 --- a/pods/imports/k8s/KubeClusterRole.go +++ b/pods/imports/k8s/KubeClusterRole.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeClusterRole) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.ClusterRole" API object. func NewKubeClusterRole(scope constructs.Construct, id *string, props *KubeClusterRoleProps) KubeClusterRole { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeClusterRole) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeClusterRoleBinding.go b/pods/imports/k8s/KubeClusterRoleBinding.go index 9cafce54d..f691c1b69 100644 --- a/pods/imports/k8s/KubeClusterRoleBinding.go +++ b/pods/imports/k8s/KubeClusterRoleBinding.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeClusterRoleBinding) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.ClusterRoleBinding" API object. func NewKubeClusterRoleBinding(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) KubeClusterRoleBinding { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeClusterRoleBinding) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeClusterRoleBindingList.go b/pods/imports/k8s/KubeClusterRoleBindingList.go index 1e8bafa50..5b1cb2cd3 100644 --- a/pods/imports/k8s/KubeClusterRoleBindingList.go +++ b/pods/imports/k8s/KubeClusterRoleBindingList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeClusterRoleBindingList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.ClusterRoleBindingList" API object. func NewKubeClusterRoleBindingList(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) KubeClusterRoleBindingList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeClusterRoleBindingList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeClusterRoleBindingListProps.go b/pods/imports/k8s/KubeClusterRoleBindingListProps.go index 29ceef580..911449fdb 100644 --- a/pods/imports/k8s/KubeClusterRoleBindingListProps.go +++ b/pods/imports/k8s/KubeClusterRoleBindingListProps.go @@ -1,5 +1,6 @@ package k8s + // ClusterRoleBindingList is a collection of ClusterRoleBindings. type KubeClusterRoleBindingListProps struct { // Items is a list of ClusterRoleBindings. @@ -7,3 +8,4 @@ type KubeClusterRoleBindingListProps struct { // Standard object's metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeClusterRoleBindingList__checks.go b/pods/imports/k8s/KubeClusterRoleBindingList__checks.go index 85ff41855..d261f948c 100644 --- a/pods/imports/k8s/KubeClusterRoleBindingList__checks.go +++ b/pods/imports/k8s/KubeClusterRoleBindingList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeClusterRoleBindingListParameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go b/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go index db782cdcd..832069b40 100644 --- a/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go +++ b/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeClusterRoleBindingList_OfParameters(c constructs.IConstruct) er func validateNewKubeClusterRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeClusterRoleBindingProps.go b/pods/imports/k8s/KubeClusterRoleBindingProps.go index a675c96b8..c4bf6ec12 100644 --- a/pods/imports/k8s/KubeClusterRoleBindingProps.go +++ b/pods/imports/k8s/KubeClusterRoleBindingProps.go @@ -1,5 +1,6 @@ package k8s + // ClusterRoleBinding references a ClusterRole, but not contain it. // // It can reference a ClusterRole in the global namespace, and adds who information via Subject. @@ -13,3 +14,4 @@ type KubeClusterRoleBindingProps struct { // Subjects holds references to the objects the role applies to. Subjects *[]*Subject `field:"optional" json:"subjects" yaml:"subjects"` } + diff --git a/pods/imports/k8s/KubeClusterRoleBinding__checks.go b/pods/imports/k8s/KubeClusterRoleBinding__checks.go index 9e4b3f7fb..869403a93 100644 --- a/pods/imports/k8s/KubeClusterRoleBinding__checks.go +++ b/pods/imports/k8s/KubeClusterRoleBinding__checks.go @@ -63,3 +63,4 @@ func validateNewKubeClusterRoleBindingParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go b/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go index d9a38b6d6..2cffab195 100644 --- a/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go +++ b/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go @@ -23,3 +23,4 @@ func validateKubeClusterRoleBinding_OfParameters(c constructs.IConstruct) error func validateNewKubeClusterRoleBindingParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) error { return nil } + diff --git a/pods/imports/k8s/KubeClusterRoleList.go b/pods/imports/k8s/KubeClusterRoleList.go index 00141ed90..fa7af489b 100644 --- a/pods/imports/k8s/KubeClusterRoleList.go +++ b/pods/imports/k8s/KubeClusterRoleList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeClusterRoleList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.ClusterRoleList" API object. func NewKubeClusterRoleList(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) KubeClusterRoleList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeClusterRoleList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeClusterRoleListProps.go b/pods/imports/k8s/KubeClusterRoleListProps.go index a4f647ea9..9b4677192 100644 --- a/pods/imports/k8s/KubeClusterRoleListProps.go +++ b/pods/imports/k8s/KubeClusterRoleListProps.go @@ -1,5 +1,6 @@ package k8s + // ClusterRoleList is a collection of ClusterRoles. type KubeClusterRoleListProps struct { // Items is a list of ClusterRoles. @@ -7,3 +8,4 @@ type KubeClusterRoleListProps struct { // Standard object's metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeClusterRoleList__checks.go b/pods/imports/k8s/KubeClusterRoleList__checks.go index 9e08ba16b..312bc83bb 100644 --- a/pods/imports/k8s/KubeClusterRoleList__checks.go +++ b/pods/imports/k8s/KubeClusterRoleList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeClusterRoleListParameters(scope constructs.Construct, id *st return nil } + diff --git a/pods/imports/k8s/KubeClusterRoleList__no_checks.go b/pods/imports/k8s/KubeClusterRoleList__no_checks.go index 042be0680..91cad984f 100644 --- a/pods/imports/k8s/KubeClusterRoleList__no_checks.go +++ b/pods/imports/k8s/KubeClusterRoleList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeClusterRoleList_OfParameters(c constructs.IConstruct) error { func validateNewKubeClusterRoleListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeClusterRoleProps.go b/pods/imports/k8s/KubeClusterRoleProps.go index 5d632ff36..b2dc7b94a 100644 --- a/pods/imports/k8s/KubeClusterRoleProps.go +++ b/pods/imports/k8s/KubeClusterRoleProps.go @@ -1,5 +1,6 @@ package k8s + // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. type KubeClusterRoleProps struct { // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. @@ -11,3 +12,4 @@ type KubeClusterRoleProps struct { // Rules holds all the PolicyRules for this ClusterRole. Rules *[]*PolicyRule `field:"optional" json:"rules" yaml:"rules"` } + diff --git a/pods/imports/k8s/KubeClusterRole__checks.go b/pods/imports/k8s/KubeClusterRole__checks.go index bcecbfb8f..4813b7cdb 100644 --- a/pods/imports/k8s/KubeClusterRole__checks.go +++ b/pods/imports/k8s/KubeClusterRole__checks.go @@ -57,3 +57,4 @@ func validateNewKubeClusterRoleParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeClusterRole__no_checks.go b/pods/imports/k8s/KubeClusterRole__no_checks.go index c409ed02e..b83139d9a 100644 --- a/pods/imports/k8s/KubeClusterRole__no_checks.go +++ b/pods/imports/k8s/KubeClusterRole__no_checks.go @@ -23,3 +23,4 @@ func validateKubeClusterRole_OfParameters(c constructs.IConstruct) error { func validateNewKubeClusterRoleParameters(scope constructs.Construct, id *string, props *KubeClusterRoleProps) error { return nil } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go index 22f48c0f5..950410dfb 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList" API object. func NewKubeClusterTrustBundleListV1Alpha1(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) KubeClusterTrustBundleListV1Alpha1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go index d84b69979..b1f398c7e 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // ClusterTrustBundleList is a collection of ClusterTrustBundle objects. type KubeClusterTrustBundleListV1Alpha1Props struct { // items is a collection of ClusterTrustBundle objects. @@ -7,3 +8,4 @@ type KubeClusterTrustBundleListV1Alpha1Props struct { // metadata contains the list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go index 245c24579..09ad9095a 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope constructs.Co return nil } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go index 7b03611b0..0f56ec559 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c constructs.IConst func validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go index cc13ebdee..2de852804 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go @@ -126,6 +126,7 @@ func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle" API object. func NewKubeClusterTrustBundleV1Alpha1(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) KubeClusterTrustBundleV1Alpha1 { _init_.Initialize() @@ -317,3 +318,4 @@ func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go index d0f615c09..164df4b92 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates). // // ClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection. All service accounts have read access to ClusterTrustBundles by default. Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to. @@ -11,3 +12,4 @@ type KubeClusterTrustBundleV1Alpha1Props struct { // metadata contains the object metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go index 44ab02b24..5393b50d2 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope constructs.Constr return nil } + diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go index 01defde18..994a68110 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeClusterTrustBundleV1Alpha1_OfParameters(c constructs.IConstruct func validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeComponentStatus.go b/pods/imports/k8s/KubeComponentStatus.go index 9fefcce9e..7be2fcd3c 100644 --- a/pods/imports/k8s/KubeComponentStatus.go +++ b/pods/imports/k8s/KubeComponentStatus.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeComponentStatus) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ComponentStatus" API object. func NewKubeComponentStatus(scope constructs.Construct, id *string, props *KubeComponentStatusProps) KubeComponentStatus { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeComponentStatus) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeComponentStatusList.go b/pods/imports/k8s/KubeComponentStatusList.go index f3e3beee4..220d2b60f 100644 --- a/pods/imports/k8s/KubeComponentStatusList.go +++ b/pods/imports/k8s/KubeComponentStatusList.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeComponentStatusList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ComponentStatusList" API object. func NewKubeComponentStatusList(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) KubeComponentStatusList { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeComponentStatusList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeComponentStatusListProps.go b/pods/imports/k8s/KubeComponentStatusListProps.go index b76ef80b0..3c5cd05e7 100644 --- a/pods/imports/k8s/KubeComponentStatusListProps.go +++ b/pods/imports/k8s/KubeComponentStatusListProps.go @@ -1,5 +1,6 @@ package k8s + // Status of all the conditions for the component as a list of ComponentStatus objects. // // Deprecated: This API is deprecated in v1.19+ @@ -11,3 +12,4 @@ type KubeComponentStatusListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeComponentStatusList__checks.go b/pods/imports/k8s/KubeComponentStatusList__checks.go index 6cf6674be..7153b53dc 100644 --- a/pods/imports/k8s/KubeComponentStatusList__checks.go +++ b/pods/imports/k8s/KubeComponentStatusList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeComponentStatusListParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeComponentStatusList__no_checks.go b/pods/imports/k8s/KubeComponentStatusList__no_checks.go index 8655385c4..1bdd6ee57 100644 --- a/pods/imports/k8s/KubeComponentStatusList__no_checks.go +++ b/pods/imports/k8s/KubeComponentStatusList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeComponentStatusList_OfParameters(c constructs.IConstruct) error func validateNewKubeComponentStatusListParameters(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeComponentStatusProps.go b/pods/imports/k8s/KubeComponentStatusProps.go index 8306ad97d..849dcbe51 100644 --- a/pods/imports/k8s/KubeComponentStatusProps.go +++ b/pods/imports/k8s/KubeComponentStatusProps.go @@ -1,5 +1,6 @@ package k8s + // ComponentStatus (and ComponentStatusList) holds the cluster validation info. // // Deprecated: This API is deprecated in v1.19+ @@ -11,3 +12,4 @@ type KubeComponentStatusProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeComponentStatus__checks.go b/pods/imports/k8s/KubeComponentStatus__checks.go index 045e49f1e..0085a5a57 100644 --- a/pods/imports/k8s/KubeComponentStatus__checks.go +++ b/pods/imports/k8s/KubeComponentStatus__checks.go @@ -57,3 +57,4 @@ func validateNewKubeComponentStatusParameters(scope constructs.Construct, id *st return nil } + diff --git a/pods/imports/k8s/KubeComponentStatus__no_checks.go b/pods/imports/k8s/KubeComponentStatus__no_checks.go index 4fba9782c..05d507d96 100644 --- a/pods/imports/k8s/KubeComponentStatus__no_checks.go +++ b/pods/imports/k8s/KubeComponentStatus__no_checks.go @@ -23,3 +23,4 @@ func validateKubeComponentStatus_OfParameters(c constructs.IConstruct) error { func validateNewKubeComponentStatusParameters(scope constructs.Construct, id *string, props *KubeComponentStatusProps) error { return nil } + diff --git a/pods/imports/k8s/KubeConfigMap.go b/pods/imports/k8s/KubeConfigMap.go index 7d2e7327b..1e0efbda1 100644 --- a/pods/imports/k8s/KubeConfigMap.go +++ b/pods/imports/k8s/KubeConfigMap.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeConfigMap) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ConfigMap" API object. func NewKubeConfigMap(scope constructs.Construct, id *string, props *KubeConfigMapProps) KubeConfigMap { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeConfigMap) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeConfigMapList.go b/pods/imports/k8s/KubeConfigMapList.go index c87e7d8ae..6f8ed6587 100644 --- a/pods/imports/k8s/KubeConfigMapList.go +++ b/pods/imports/k8s/KubeConfigMapList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeConfigMapList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ConfigMapList" API object. func NewKubeConfigMapList(scope constructs.Construct, id *string, props *KubeConfigMapListProps) KubeConfigMapList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeConfigMapList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeConfigMapListProps.go b/pods/imports/k8s/KubeConfigMapListProps.go index 83e105910..4877c90bd 100644 --- a/pods/imports/k8s/KubeConfigMapListProps.go +++ b/pods/imports/k8s/KubeConfigMapListProps.go @@ -1,5 +1,6 @@ package k8s + // ConfigMapList is a resource containing a list of ConfigMap objects. type KubeConfigMapListProps struct { // Items is the list of ConfigMaps. @@ -7,3 +8,4 @@ type KubeConfigMapListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeConfigMapList__checks.go b/pods/imports/k8s/KubeConfigMapList__checks.go index 75c3e8252..ce4658a97 100644 --- a/pods/imports/k8s/KubeConfigMapList__checks.go +++ b/pods/imports/k8s/KubeConfigMapList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeConfigMapListParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeConfigMapList__no_checks.go b/pods/imports/k8s/KubeConfigMapList__no_checks.go index f3a8778f4..f546b0721 100644 --- a/pods/imports/k8s/KubeConfigMapList__no_checks.go +++ b/pods/imports/k8s/KubeConfigMapList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeConfigMapList_OfParameters(c constructs.IConstruct) error { func validateNewKubeConfigMapListParameters(scope constructs.Construct, id *string, props *KubeConfigMapListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeConfigMapProps.go b/pods/imports/k8s/KubeConfigMapProps.go index 32a80bc45..fd8bee567 100644 --- a/pods/imports/k8s/KubeConfigMapProps.go +++ b/pods/imports/k8s/KubeConfigMapProps.go @@ -1,5 +1,6 @@ package k8s + // ConfigMap holds configuration data for pods to consume. type KubeConfigMapProps struct { // BinaryData contains the binary data. @@ -19,3 +20,4 @@ type KubeConfigMapProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeConfigMap__checks.go b/pods/imports/k8s/KubeConfigMap__checks.go index 87ad268f5..19266587d 100644 --- a/pods/imports/k8s/KubeConfigMap__checks.go +++ b/pods/imports/k8s/KubeConfigMap__checks.go @@ -57,3 +57,4 @@ func validateNewKubeConfigMapParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeConfigMap__no_checks.go b/pods/imports/k8s/KubeConfigMap__no_checks.go index 83868e871..00487d05e 100644 --- a/pods/imports/k8s/KubeConfigMap__no_checks.go +++ b/pods/imports/k8s/KubeConfigMap__no_checks.go @@ -23,3 +23,4 @@ func validateKubeConfigMap_OfParameters(c constructs.IConstruct) error { func validateNewKubeConfigMapParameters(scope constructs.Construct, id *string, props *KubeConfigMapProps) error { return nil } + diff --git a/pods/imports/k8s/KubeControllerRevision.go b/pods/imports/k8s/KubeControllerRevision.go index dbfa6ad3a..0e2fca77d 100644 --- a/pods/imports/k8s/KubeControllerRevision.go +++ b/pods/imports/k8s/KubeControllerRevision.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeControllerRevision) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.ControllerRevision" API object. func NewKubeControllerRevision(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) KubeControllerRevision { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeControllerRevision) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeControllerRevisionList.go b/pods/imports/k8s/KubeControllerRevisionList.go index 888e8cb64..6ec7d5489 100644 --- a/pods/imports/k8s/KubeControllerRevisionList.go +++ b/pods/imports/k8s/KubeControllerRevisionList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeControllerRevisionList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.ControllerRevisionList" API object. func NewKubeControllerRevisionList(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) KubeControllerRevisionList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeControllerRevisionList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeControllerRevisionListProps.go b/pods/imports/k8s/KubeControllerRevisionListProps.go index d7516daa9..138673cc9 100644 --- a/pods/imports/k8s/KubeControllerRevisionListProps.go +++ b/pods/imports/k8s/KubeControllerRevisionListProps.go @@ -1,5 +1,6 @@ package k8s + // ControllerRevisionList is a resource containing a list of ControllerRevision objects. type KubeControllerRevisionListProps struct { // Items is the list of ControllerRevisions. @@ -7,3 +8,4 @@ type KubeControllerRevisionListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeControllerRevisionList__checks.go b/pods/imports/k8s/KubeControllerRevisionList__checks.go index 185a89714..c97468849 100644 --- a/pods/imports/k8s/KubeControllerRevisionList__checks.go +++ b/pods/imports/k8s/KubeControllerRevisionList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeControllerRevisionListParameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeControllerRevisionList__no_checks.go b/pods/imports/k8s/KubeControllerRevisionList__no_checks.go index b238f98c1..664184e90 100644 --- a/pods/imports/k8s/KubeControllerRevisionList__no_checks.go +++ b/pods/imports/k8s/KubeControllerRevisionList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeControllerRevisionList_OfParameters(c constructs.IConstruct) er func validateNewKubeControllerRevisionListParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeControllerRevisionProps.go b/pods/imports/k8s/KubeControllerRevisionProps.go index c54f13ab8..7c3e411d9 100644 --- a/pods/imports/k8s/KubeControllerRevisionProps.go +++ b/pods/imports/k8s/KubeControllerRevisionProps.go @@ -1,5 +1,6 @@ package k8s + // ControllerRevision implements an immutable snapshot of state data. // // Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers. @@ -13,3 +14,4 @@ type KubeControllerRevisionProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeControllerRevision__checks.go b/pods/imports/k8s/KubeControllerRevision__checks.go index 177c7a9bb..a7cc5ab57 100644 --- a/pods/imports/k8s/KubeControllerRevision__checks.go +++ b/pods/imports/k8s/KubeControllerRevision__checks.go @@ -63,3 +63,4 @@ func validateNewKubeControllerRevisionParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeControllerRevision__no_checks.go b/pods/imports/k8s/KubeControllerRevision__no_checks.go index 7abf26f6c..2583eb3f1 100644 --- a/pods/imports/k8s/KubeControllerRevision__no_checks.go +++ b/pods/imports/k8s/KubeControllerRevision__no_checks.go @@ -23,3 +23,4 @@ func validateKubeControllerRevision_OfParameters(c constructs.IConstruct) error func validateNewKubeControllerRevisionParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCronJob.go b/pods/imports/k8s/KubeCronJob.go index 7d4a38755..2c18342ea 100644 --- a/pods/imports/k8s/KubeCronJob.go +++ b/pods/imports/k8s/KubeCronJob.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCronJob) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.batch.v1.CronJob" API object. func NewKubeCronJob(scope constructs.Construct, id *string, props *KubeCronJobProps) KubeCronJob { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCronJob) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCronJobList.go b/pods/imports/k8s/KubeCronJobList.go index 369015559..7fbf7f29d 100644 --- a/pods/imports/k8s/KubeCronJobList.go +++ b/pods/imports/k8s/KubeCronJobList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCronJobList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.batch.v1.CronJobList" API object. func NewKubeCronJobList(scope constructs.Construct, id *string, props *KubeCronJobListProps) KubeCronJobList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCronJobList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCronJobListProps.go b/pods/imports/k8s/KubeCronJobListProps.go index 06053af41..737b787c6 100644 --- a/pods/imports/k8s/KubeCronJobListProps.go +++ b/pods/imports/k8s/KubeCronJobListProps.go @@ -1,5 +1,6 @@ package k8s + // CronJobList is a collection of cron jobs. type KubeCronJobListProps struct { // items is the list of CronJobs. @@ -9,3 +10,4 @@ type KubeCronJobListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCronJobList__checks.go b/pods/imports/k8s/KubeCronJobList__checks.go index 9b439e7c4..8a130daf9 100644 --- a/pods/imports/k8s/KubeCronJobList__checks.go +++ b/pods/imports/k8s/KubeCronJobList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCronJobListParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeCronJobList__no_checks.go b/pods/imports/k8s/KubeCronJobList__no_checks.go index fa16605cd..804fcdc37 100644 --- a/pods/imports/k8s/KubeCronJobList__no_checks.go +++ b/pods/imports/k8s/KubeCronJobList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCronJobList_OfParameters(c constructs.IConstruct) error { func validateNewKubeCronJobListParameters(scope constructs.Construct, id *string, props *KubeCronJobListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCronJobProps.go b/pods/imports/k8s/KubeCronJobProps.go index 14da7cd26..e243da615 100644 --- a/pods/imports/k8s/KubeCronJobProps.go +++ b/pods/imports/k8s/KubeCronJobProps.go @@ -1,5 +1,6 @@ package k8s + // CronJob represents the configuration of a single cron job. type KubeCronJobProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeCronJobProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *CronJobSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeCronJob__checks.go b/pods/imports/k8s/KubeCronJob__checks.go index 8c86238dd..1d39a309d 100644 --- a/pods/imports/k8s/KubeCronJob__checks.go +++ b/pods/imports/k8s/KubeCronJob__checks.go @@ -57,3 +57,4 @@ func validateNewKubeCronJobParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubeCronJob__no_checks.go b/pods/imports/k8s/KubeCronJob__no_checks.go index 2e3bce1c5..5c3f7a473 100644 --- a/pods/imports/k8s/KubeCronJob__no_checks.go +++ b/pods/imports/k8s/KubeCronJob__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCronJob_OfParameters(c constructs.IConstruct) error { func validateNewKubeCronJobParameters(scope constructs.Construct, id *string, props *KubeCronJobProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCsiDriver.go b/pods/imports/k8s/KubeCsiDriver.go index 703e5bf75..d7abe5504 100644 --- a/pods/imports/k8s/KubeCsiDriver.go +++ b/pods/imports/k8s/KubeCsiDriver.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeCsiDriver) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.CSIDriver" API object. func NewKubeCsiDriver(scope constructs.Construct, id *string, props *KubeCsiDriverProps) KubeCsiDriver { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeCsiDriver) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCsiDriverList.go b/pods/imports/k8s/KubeCsiDriverList.go index d0a3d4bb8..8bd5f92da 100644 --- a/pods/imports/k8s/KubeCsiDriverList.go +++ b/pods/imports/k8s/KubeCsiDriverList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCsiDriverList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.CSIDriverList" API object. func NewKubeCsiDriverList(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) KubeCsiDriverList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCsiDriverList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCsiDriverListProps.go b/pods/imports/k8s/KubeCsiDriverListProps.go index 96e0efa65..0dfe81c95 100644 --- a/pods/imports/k8s/KubeCsiDriverListProps.go +++ b/pods/imports/k8s/KubeCsiDriverListProps.go @@ -1,5 +1,6 @@ package k8s + // CSIDriverList is a collection of CSIDriver objects. type KubeCsiDriverListProps struct { // items is the list of CSIDriver. @@ -7,3 +8,4 @@ type KubeCsiDriverListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCsiDriverList__checks.go b/pods/imports/k8s/KubeCsiDriverList__checks.go index 39de60b30..f8cf32e01 100644 --- a/pods/imports/k8s/KubeCsiDriverList__checks.go +++ b/pods/imports/k8s/KubeCsiDriverList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCsiDriverListParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeCsiDriverList__no_checks.go b/pods/imports/k8s/KubeCsiDriverList__no_checks.go index 51669c822..6d21194c7 100644 --- a/pods/imports/k8s/KubeCsiDriverList__no_checks.go +++ b/pods/imports/k8s/KubeCsiDriverList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCsiDriverList_OfParameters(c constructs.IConstruct) error { func validateNewKubeCsiDriverListParameters(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCsiDriverProps.go b/pods/imports/k8s/KubeCsiDriverProps.go index 1dc4c6845..21516ebf3 100644 --- a/pods/imports/k8s/KubeCsiDriverProps.go +++ b/pods/imports/k8s/KubeCsiDriverProps.go @@ -1,5 +1,6 @@ package k8s + // CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. // // Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced. @@ -11,3 +12,4 @@ type KubeCsiDriverProps struct { // metadata.Name indicates the name of the CSI driver that this object refers to; it MUST be the same name returned by the CSI GetPluginName() call for that driver. The driver name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), dots (.), and alphanumerics between. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCsiDriver__checks.go b/pods/imports/k8s/KubeCsiDriver__checks.go index 36925cf53..d629f178f 100644 --- a/pods/imports/k8s/KubeCsiDriver__checks.go +++ b/pods/imports/k8s/KubeCsiDriver__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCsiDriverParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeCsiDriver__no_checks.go b/pods/imports/k8s/KubeCsiDriver__no_checks.go index deddc20fa..a5ecdbb8c 100644 --- a/pods/imports/k8s/KubeCsiDriver__no_checks.go +++ b/pods/imports/k8s/KubeCsiDriver__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCsiDriver_OfParameters(c constructs.IConstruct) error { func validateNewKubeCsiDriverParameters(scope constructs.Construct, id *string, props *KubeCsiDriverProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCsiNode.go b/pods/imports/k8s/KubeCsiNode.go index 600e94eb1..ce3da9508 100644 --- a/pods/imports/k8s/KubeCsiNode.go +++ b/pods/imports/k8s/KubeCsiNode.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeCsiNode) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.CSINode" API object. func NewKubeCsiNode(scope constructs.Construct, id *string, props *KubeCsiNodeProps) KubeCsiNode { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeCsiNode) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCsiNodeList.go b/pods/imports/k8s/KubeCsiNodeList.go index c17b26923..f6b6322cf 100644 --- a/pods/imports/k8s/KubeCsiNodeList.go +++ b/pods/imports/k8s/KubeCsiNodeList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCsiNodeList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.CSINodeList" API object. func NewKubeCsiNodeList(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) KubeCsiNodeList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCsiNodeList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCsiNodeListProps.go b/pods/imports/k8s/KubeCsiNodeListProps.go index f39edaeaa..587882db3 100644 --- a/pods/imports/k8s/KubeCsiNodeListProps.go +++ b/pods/imports/k8s/KubeCsiNodeListProps.go @@ -1,5 +1,6 @@ package k8s + // CSINodeList is a collection of CSINode objects. type KubeCsiNodeListProps struct { // items is the list of CSINode. @@ -7,3 +8,4 @@ type KubeCsiNodeListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCsiNodeList__checks.go b/pods/imports/k8s/KubeCsiNodeList__checks.go index 5725c65a9..f2f200b5c 100644 --- a/pods/imports/k8s/KubeCsiNodeList__checks.go +++ b/pods/imports/k8s/KubeCsiNodeList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCsiNodeListParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeCsiNodeList__no_checks.go b/pods/imports/k8s/KubeCsiNodeList__no_checks.go index 6fd212fba..3b1654bf1 100644 --- a/pods/imports/k8s/KubeCsiNodeList__no_checks.go +++ b/pods/imports/k8s/KubeCsiNodeList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCsiNodeList_OfParameters(c constructs.IConstruct) error { func validateNewKubeCsiNodeListParameters(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCsiNodeProps.go b/pods/imports/k8s/KubeCsiNodeProps.go index c0b685063..1a4b7a1a7 100644 --- a/pods/imports/k8s/KubeCsiNodeProps.go +++ b/pods/imports/k8s/KubeCsiNodeProps.go @@ -1,5 +1,6 @@ package k8s + // CSINode holds information about all CSI drivers installed on a node. // // CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object. @@ -11,3 +12,4 @@ type KubeCsiNodeProps struct { // metadata.name must be the Kubernetes node name. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCsiNode__checks.go b/pods/imports/k8s/KubeCsiNode__checks.go index fb1cafcc3..a0fcea39d 100644 --- a/pods/imports/k8s/KubeCsiNode__checks.go +++ b/pods/imports/k8s/KubeCsiNode__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCsiNodeParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubeCsiNode__no_checks.go b/pods/imports/k8s/KubeCsiNode__no_checks.go index ec00f542c..b00b7f343 100644 --- a/pods/imports/k8s/KubeCsiNode__no_checks.go +++ b/pods/imports/k8s/KubeCsiNode__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCsiNode_OfParameters(c constructs.IConstruct) error { func validateNewKubeCsiNodeParameters(scope constructs.Construct, id *string, props *KubeCsiNodeProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacity.go b/pods/imports/k8s/KubeCsiStorageCapacity.go index 089d7f152..ff2783580 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacity.go +++ b/pods/imports/k8s/KubeCsiStorageCapacity.go @@ -132,6 +132,7 @@ func (j *jsiiProxy_KubeCsiStorageCapacity) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.CSIStorageCapacity" API object. func NewKubeCsiStorageCapacity(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) KubeCsiStorageCapacity { _init_.Initialize() @@ -323,3 +324,4 @@ func (k *jsiiProxy_KubeCsiStorageCapacity) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList.go b/pods/imports/k8s/KubeCsiStorageCapacityList.go index 348c092ad..f0c4df2ef 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacityList.go +++ b/pods/imports/k8s/KubeCsiStorageCapacityList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCsiStorageCapacityList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.CSIStorageCapacityList" API object. func NewKubeCsiStorageCapacityList(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) KubeCsiStorageCapacityList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCsiStorageCapacityList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacityListProps.go b/pods/imports/k8s/KubeCsiStorageCapacityListProps.go index 159aefdd7..e0eba22cd 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacityListProps.go +++ b/pods/imports/k8s/KubeCsiStorageCapacityListProps.go @@ -1,5 +1,6 @@ package k8s + // CSIStorageCapacityList is a collection of CSIStorageCapacity objects. type KubeCsiStorageCapacityListProps struct { // items is the list of CSIStorageCapacity objects. @@ -7,3 +8,4 @@ type KubeCsiStorageCapacityListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go b/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go index c688ae9dc..69119b7a3 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go +++ b/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCsiStorageCapacityListParameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go b/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go index e8a31739a..3404d4aba 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go +++ b/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCsiStorageCapacityList_OfParameters(c constructs.IConstruct) er func validateNewKubeCsiStorageCapacityListParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacityProps.go b/pods/imports/k8s/KubeCsiStorageCapacityProps.go index 4b85037cf..113ee021a 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacityProps.go +++ b/pods/imports/k8s/KubeCsiStorageCapacityProps.go @@ -1,5 +1,6 @@ package k8s + // CSIStorageCapacity stores the result of one CSI GetCapacity call. // // For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes. @@ -37,3 +38,4 @@ type KubeCsiStorageCapacityProps struct { // If not set, the storage is not accessible from any node in the cluster. If empty, the storage is accessible from all nodes. This field is immutable. NodeTopology *LabelSelector `field:"optional" json:"nodeTopology" yaml:"nodeTopology"` } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacity__checks.go b/pods/imports/k8s/KubeCsiStorageCapacity__checks.go index 61f64dd1a..399689338 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacity__checks.go +++ b/pods/imports/k8s/KubeCsiStorageCapacity__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCsiStorageCapacityParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go b/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go index 20b92834d..01f797108 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go +++ b/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCsiStorageCapacity_OfParameters(c constructs.IConstruct) error func validateNewKubeCsiStorageCapacityParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinition.go b/pods/imports/k8s/KubeCustomResourceDefinition.go index c0bc4a67a..931f3f4ec 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinition.go +++ b/pods/imports/k8s/KubeCustomResourceDefinition.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeCustomResourceDefinition) Node() constructs.Node { return returns } + // Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" API object. func NewKubeCustomResourceDefinition(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) KubeCustomResourceDefinition { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeCustomResourceDefinition) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList.go b/pods/imports/k8s/KubeCustomResourceDefinitionList.go index ae69c207a..3da75b6b8 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList.go +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeCustomResourceDefinitionList) Node() constructs.Node { return returns } + // Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" API object. func NewKubeCustomResourceDefinitionList(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) KubeCustomResourceDefinitionList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeCustomResourceDefinitionList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go b/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go index 242d8ca7e..b27c1903c 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go +++ b/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceDefinitionList is a list of CustomResourceDefinition objects. type KubeCustomResourceDefinitionListProps struct { // items list individual CustomResourceDefinition objects. @@ -7,3 +8,4 @@ type KubeCustomResourceDefinitionListProps struct { // Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go b/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go index 1c152a7a1..d219f7172 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCustomResourceDefinitionListParameters(scope constructs.Cons return nil } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go b/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go index dc79c859a..8accd247e 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCustomResourceDefinitionList_OfParameters(c constructs.IConstru func validateNewKubeCustomResourceDefinitionListParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionProps.go b/pods/imports/k8s/KubeCustomResourceDefinitionProps.go index 4dd1068c3..fd8d00b61 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinitionProps.go +++ b/pods/imports/k8s/KubeCustomResourceDefinitionProps.go @@ -1,5 +1,6 @@ package k8s + // CustomResourceDefinition represents a resource that should be exposed on the API server. // // Its name MUST be in the format <.spec.name>.<.spec.group>. @@ -9,3 +10,4 @@ type KubeCustomResourceDefinitionProps struct { // Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinition__checks.go b/pods/imports/k8s/KubeCustomResourceDefinition__checks.go index a241195a4..e9b3548b7 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinition__checks.go +++ b/pods/imports/k8s/KubeCustomResourceDefinition__checks.go @@ -63,3 +63,4 @@ func validateNewKubeCustomResourceDefinitionParameters(scope constructs.Construc return nil } + diff --git a/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go b/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go index 3126c459a..fe474115c 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go +++ b/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go @@ -23,3 +23,4 @@ func validateKubeCustomResourceDefinition_OfParameters(c constructs.IConstruct) func validateNewKubeCustomResourceDefinitionParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) error { return nil } + diff --git a/pods/imports/k8s/KubeDaemonSet.go b/pods/imports/k8s/KubeDaemonSet.go index 294514635..32be55a19 100644 --- a/pods/imports/k8s/KubeDaemonSet.go +++ b/pods/imports/k8s/KubeDaemonSet.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeDaemonSet) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.DaemonSet" API object. func NewKubeDaemonSet(scope constructs.Construct, id *string, props *KubeDaemonSetProps) KubeDaemonSet { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeDaemonSet) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeDaemonSetList.go b/pods/imports/k8s/KubeDaemonSetList.go index 80442eba6..ebe6b4c82 100644 --- a/pods/imports/k8s/KubeDaemonSetList.go +++ b/pods/imports/k8s/KubeDaemonSetList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeDaemonSetList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.DaemonSetList" API object. func NewKubeDaemonSetList(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) KubeDaemonSetList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeDaemonSetList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeDaemonSetListProps.go b/pods/imports/k8s/KubeDaemonSetListProps.go index 0610e2393..83dded479 100644 --- a/pods/imports/k8s/KubeDaemonSetListProps.go +++ b/pods/imports/k8s/KubeDaemonSetListProps.go @@ -1,5 +1,6 @@ package k8s + // DaemonSetList is a collection of daemon sets. type KubeDaemonSetListProps struct { // A list of daemon sets. @@ -9,3 +10,4 @@ type KubeDaemonSetListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeDaemonSetList__checks.go b/pods/imports/k8s/KubeDaemonSetList__checks.go index 1b066ad60..351f5f43a 100644 --- a/pods/imports/k8s/KubeDaemonSetList__checks.go +++ b/pods/imports/k8s/KubeDaemonSetList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeDaemonSetListParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeDaemonSetList__no_checks.go b/pods/imports/k8s/KubeDaemonSetList__no_checks.go index 64e5dff73..a64774475 100644 --- a/pods/imports/k8s/KubeDaemonSetList__no_checks.go +++ b/pods/imports/k8s/KubeDaemonSetList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeDaemonSetList_OfParameters(c constructs.IConstruct) error { func validateNewKubeDaemonSetListParameters(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeDaemonSetProps.go b/pods/imports/k8s/KubeDaemonSetProps.go index 5f37c0d46..28b38c6a7 100644 --- a/pods/imports/k8s/KubeDaemonSetProps.go +++ b/pods/imports/k8s/KubeDaemonSetProps.go @@ -1,5 +1,6 @@ package k8s + // DaemonSet represents the configuration of a daemon set. type KubeDaemonSetProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeDaemonSetProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *DaemonSetSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeDaemonSet__checks.go b/pods/imports/k8s/KubeDaemonSet__checks.go index 084cbbc8c..11c6841e5 100644 --- a/pods/imports/k8s/KubeDaemonSet__checks.go +++ b/pods/imports/k8s/KubeDaemonSet__checks.go @@ -57,3 +57,4 @@ func validateNewKubeDaemonSetParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeDaemonSet__no_checks.go b/pods/imports/k8s/KubeDaemonSet__no_checks.go index 94d4edbb7..f2f3c21cd 100644 --- a/pods/imports/k8s/KubeDaemonSet__no_checks.go +++ b/pods/imports/k8s/KubeDaemonSet__no_checks.go @@ -23,3 +23,4 @@ func validateKubeDaemonSet_OfParameters(c constructs.IConstruct) error { func validateNewKubeDaemonSetParameters(scope constructs.Construct, id *string, props *KubeDaemonSetProps) error { return nil } + diff --git a/pods/imports/k8s/KubeDeployment.go b/pods/imports/k8s/KubeDeployment.go index 152b53bc9..86a13bd18 100644 --- a/pods/imports/k8s/KubeDeployment.go +++ b/pods/imports/k8s/KubeDeployment.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeDeployment) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.Deployment" API object. func NewKubeDeployment(scope constructs.Construct, id *string, props *KubeDeploymentProps) KubeDeployment { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeDeployment) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeDeploymentList.go b/pods/imports/k8s/KubeDeploymentList.go index 4fa377f17..f86956497 100644 --- a/pods/imports/k8s/KubeDeploymentList.go +++ b/pods/imports/k8s/KubeDeploymentList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeDeploymentList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.DeploymentList" API object. func NewKubeDeploymentList(scope constructs.Construct, id *string, props *KubeDeploymentListProps) KubeDeploymentList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeDeploymentList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeDeploymentListProps.go b/pods/imports/k8s/KubeDeploymentListProps.go index 01dbe4f4e..775f02a14 100644 --- a/pods/imports/k8s/KubeDeploymentListProps.go +++ b/pods/imports/k8s/KubeDeploymentListProps.go @@ -1,5 +1,6 @@ package k8s + // DeploymentList is a list of Deployments. type KubeDeploymentListProps struct { // Items is the list of Deployments. @@ -7,3 +8,4 @@ type KubeDeploymentListProps struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeDeploymentList__checks.go b/pods/imports/k8s/KubeDeploymentList__checks.go index 835dbbfb8..628fd6fe2 100644 --- a/pods/imports/k8s/KubeDeploymentList__checks.go +++ b/pods/imports/k8s/KubeDeploymentList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeDeploymentListParameters(scope constructs.Construct, id *str return nil } + diff --git a/pods/imports/k8s/KubeDeploymentList__no_checks.go b/pods/imports/k8s/KubeDeploymentList__no_checks.go index 27bba6f4d..076ae2e09 100644 --- a/pods/imports/k8s/KubeDeploymentList__no_checks.go +++ b/pods/imports/k8s/KubeDeploymentList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeDeploymentList_OfParameters(c constructs.IConstruct) error { func validateNewKubeDeploymentListParameters(scope constructs.Construct, id *string, props *KubeDeploymentListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeDeploymentProps.go b/pods/imports/k8s/KubeDeploymentProps.go index 6a4684732..0bae9486e 100644 --- a/pods/imports/k8s/KubeDeploymentProps.go +++ b/pods/imports/k8s/KubeDeploymentProps.go @@ -1,5 +1,6 @@ package k8s + // Deployment enables declarative updates for Pods and ReplicaSets. type KubeDeploymentProps struct { // Standard object's metadata. @@ -9,3 +10,4 @@ type KubeDeploymentProps struct { // Specification of the desired behavior of the Deployment. Spec *DeploymentSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeDeployment__checks.go b/pods/imports/k8s/KubeDeployment__checks.go index e6f101faa..333a0ea62 100644 --- a/pods/imports/k8s/KubeDeployment__checks.go +++ b/pods/imports/k8s/KubeDeployment__checks.go @@ -57,3 +57,4 @@ func validateNewKubeDeploymentParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeDeployment__no_checks.go b/pods/imports/k8s/KubeDeployment__no_checks.go index 7b85bcc5a..6d0946cd6 100644 --- a/pods/imports/k8s/KubeDeployment__no_checks.go +++ b/pods/imports/k8s/KubeDeployment__no_checks.go @@ -23,3 +23,4 @@ func validateKubeDeployment_OfParameters(c constructs.IConstruct) error { func validateNewKubeDeploymentParameters(scope constructs.Construct, id *string, props *KubeDeploymentProps) error { return nil } + diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go index 119f1c326..9fc48e59b 100644 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.resource.v1alpha3.DeviceClassList" API object. func NewKubeDeviceClassListV1Alpha3(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) KubeDeviceClassListV1Alpha3 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go index 918dcd3df..5bac2cc8a 100644 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // DeviceClassList is a collection of classes. type KubeDeviceClassListV1Alpha3Props struct { // Items is the list of resource classes. @@ -7,3 +8,4 @@ type KubeDeviceClassListV1Alpha3Props struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go index 42d081256..486d976ab 100644 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeDeviceClassListV1Alpha3Parameters(scope constructs.Construct return nil } + diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go index 7d8f334ba..9afd25ede 100644 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeDeviceClassListV1Alpha3_OfParameters(c constructs.IConstruct) e func validateNewKubeDeviceClassListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go deleted file mode 100644 index f013194a2..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Beta1Props.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - -// DeviceClassList is a collection of classes. -type KubeDeviceClassListV1Beta1Props struct { - // Items is the list of resource classes. - Items *[]*KubeDeviceClassV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go deleted file mode 100644 index c457e7a6c..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Beta1__checks.go +++ /dev/null @@ -1,65 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDeviceClassListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDeviceClassListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDeviceClassListV1Beta1_ManifestParameters(props *KubeDeviceClassListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDeviceClassListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDeviceClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go b/pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go deleted file mode 100644 index 81b165ffc..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDeviceClassListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDeviceClassListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDeviceClassListV1Beta1_ManifestParameters(props *KubeDeviceClassListV1Beta1Props) error { - return nil -} - -func validateKubeDeviceClassListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDeviceClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go index da41696d2..6b0b0a523 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go @@ -126,6 +126,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.resource.v1alpha3.DeviceClass" API object. func NewKubeDeviceClassV1Alpha3(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) KubeDeviceClassV1Alpha3 { _init_.Initialize() @@ -317,3 +318,4 @@ func (k *jsiiProxy_KubeDeviceClassV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go index ca2ea2d5b..15ff418b5 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. // // It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. @@ -15,3 +16,4 @@ type KubeDeviceClassV1Alpha3Props struct { // Standard object metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go index 0960e93f2..b26ca5164 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeDeviceClassV1Alpha3Parameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go index dc3d732c2..6ed049938 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeDeviceClassV1Alpha3_OfParameters(c constructs.IConstruct) error func validateNewKubeDeviceClassV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1Props.go b/pods/imports/k8s/KubeDeviceClassV1Beta1Props.go deleted file mode 100644 index 61823f512..000000000 --- a/pods/imports/k8s/KubeDeviceClassV1Beta1Props.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - -// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. -// -// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeDeviceClassV1Beta1Props struct { - // Spec defines what can be allocated and how to configure it. - // - // This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation. - // - // Changing the spec automatically increments the metadata.generation number. - Spec *DeviceClassSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go b/pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go deleted file mode 100644 index 0ea9764b0..000000000 --- a/pods/imports/k8s/KubeDeviceClassV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDeviceClassV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDeviceClassV1Beta1_ManifestParameters(props *KubeDeviceClassV1Beta1Props) error { - return nil -} - -func validateKubeDeviceClassV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDeviceClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeEndpointSlice.go b/pods/imports/k8s/KubeEndpointSlice.go index 3d5d21071..71a477b7a 100644 --- a/pods/imports/k8s/KubeEndpointSlice.go +++ b/pods/imports/k8s/KubeEndpointSlice.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeEndpointSlice) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.discovery.v1.EndpointSlice" API object. func NewKubeEndpointSlice(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) KubeEndpointSlice { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeEndpointSlice) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEndpointSliceList.go b/pods/imports/k8s/KubeEndpointSliceList.go index 729083d53..37d83b986 100644 --- a/pods/imports/k8s/KubeEndpointSliceList.go +++ b/pods/imports/k8s/KubeEndpointSliceList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeEndpointSliceList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.discovery.v1.EndpointSliceList" API object. func NewKubeEndpointSliceList(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) KubeEndpointSliceList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeEndpointSliceList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEndpointSliceListProps.go b/pods/imports/k8s/KubeEndpointSliceListProps.go index 436003410..a7016c90d 100644 --- a/pods/imports/k8s/KubeEndpointSliceListProps.go +++ b/pods/imports/k8s/KubeEndpointSliceListProps.go @@ -1,5 +1,6 @@ package k8s + // EndpointSliceList represents a list of endpoint slices. type KubeEndpointSliceListProps struct { // items is the list of endpoint slices. @@ -7,3 +8,4 @@ type KubeEndpointSliceListProps struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeEndpointSliceList__checks.go b/pods/imports/k8s/KubeEndpointSliceList__checks.go index 41761abbd..8b53ac49f 100644 --- a/pods/imports/k8s/KubeEndpointSliceList__checks.go +++ b/pods/imports/k8s/KubeEndpointSliceList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeEndpointSliceListParameters(scope constructs.Construct, id * return nil } + diff --git a/pods/imports/k8s/KubeEndpointSliceList__no_checks.go b/pods/imports/k8s/KubeEndpointSliceList__no_checks.go index 8dc49e1c5..d5e0209c8 100644 --- a/pods/imports/k8s/KubeEndpointSliceList__no_checks.go +++ b/pods/imports/k8s/KubeEndpointSliceList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEndpointSliceList_OfParameters(c constructs.IConstruct) error { func validateNewKubeEndpointSliceListParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeEndpointSliceProps.go b/pods/imports/k8s/KubeEndpointSliceProps.go index af976ba68..cf6b38e17 100644 --- a/pods/imports/k8s/KubeEndpointSliceProps.go +++ b/pods/imports/k8s/KubeEndpointSliceProps.go @@ -1,5 +1,6 @@ package k8s + // EndpointSlice represents a subset of the endpoints that implement a service. // // For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints. @@ -19,3 +20,4 @@ type KubeEndpointSliceProps struct { // Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports. Ports *[]*EndpointPort `field:"optional" json:"ports" yaml:"ports"` } + diff --git a/pods/imports/k8s/KubeEndpointSlice__checks.go b/pods/imports/k8s/KubeEndpointSlice__checks.go index ca5b56983..49bd561d1 100644 --- a/pods/imports/k8s/KubeEndpointSlice__checks.go +++ b/pods/imports/k8s/KubeEndpointSlice__checks.go @@ -63,3 +63,4 @@ func validateNewKubeEndpointSliceParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeEndpointSlice__no_checks.go b/pods/imports/k8s/KubeEndpointSlice__no_checks.go index f30d69f05..e7f9db289 100644 --- a/pods/imports/k8s/KubeEndpointSlice__no_checks.go +++ b/pods/imports/k8s/KubeEndpointSlice__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEndpointSlice_OfParameters(c constructs.IConstruct) error { func validateNewKubeEndpointSliceParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) error { return nil } + diff --git a/pods/imports/k8s/KubeEndpoints.go b/pods/imports/k8s/KubeEndpoints.go index 6aabae47d..c01358b8c 100644 --- a/pods/imports/k8s/KubeEndpoints.go +++ b/pods/imports/k8s/KubeEndpoints.go @@ -13,16 +13,14 @@ import ( // // Name: "mysvc", // Subsets: [ -// -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, // ]. type KubeEndpoints interface { cdk8s.ApiObject @@ -136,6 +134,7 @@ func (j *jsiiProxy_KubeEndpoints) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Endpoints" API object. func NewKubeEndpoints(scope constructs.Construct, id *string, props *KubeEndpointsProps) KubeEndpoints { _init_.Initialize() @@ -327,3 +326,4 @@ func (k *jsiiProxy_KubeEndpoints) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEndpointsList.go b/pods/imports/k8s/KubeEndpointsList.go index af208b9f3..d7d18ea5e 100644 --- a/pods/imports/k8s/KubeEndpointsList.go +++ b/pods/imports/k8s/KubeEndpointsList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeEndpointsList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.EndpointsList" API object. func NewKubeEndpointsList(scope constructs.Construct, id *string, props *KubeEndpointsListProps) KubeEndpointsList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeEndpointsList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEndpointsListProps.go b/pods/imports/k8s/KubeEndpointsListProps.go index 874003447..97543f00b 100644 --- a/pods/imports/k8s/KubeEndpointsListProps.go +++ b/pods/imports/k8s/KubeEndpointsListProps.go @@ -1,5 +1,6 @@ package k8s + // EndpointsList is a list of endpoints. type KubeEndpointsListProps struct { // List of endpoints. @@ -9,3 +10,4 @@ type KubeEndpointsListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeEndpointsList__checks.go b/pods/imports/k8s/KubeEndpointsList__checks.go index 1924241c5..36d3b42c1 100644 --- a/pods/imports/k8s/KubeEndpointsList__checks.go +++ b/pods/imports/k8s/KubeEndpointsList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeEndpointsListParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeEndpointsList__no_checks.go b/pods/imports/k8s/KubeEndpointsList__no_checks.go index 0802460a1..235610133 100644 --- a/pods/imports/k8s/KubeEndpointsList__no_checks.go +++ b/pods/imports/k8s/KubeEndpointsList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEndpointsList_OfParameters(c constructs.IConstruct) error { func validateNewKubeEndpointsListParameters(scope constructs.Construct, id *string, props *KubeEndpointsListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeEndpointsProps.go b/pods/imports/k8s/KubeEndpointsProps.go index 0ffcc06d5..a2293709d 100644 --- a/pods/imports/k8s/KubeEndpointsProps.go +++ b/pods/imports/k8s/KubeEndpointsProps.go @@ -1,5 +1,6 @@ package k8s + // Endpoints is a collection of endpoints that implement the actual service. Example:. // // Name: "mysvc", @@ -23,3 +24,4 @@ type KubeEndpointsProps struct { // Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service. Subsets *[]*EndpointSubset `field:"optional" json:"subsets" yaml:"subsets"` } + diff --git a/pods/imports/k8s/KubeEndpoints__checks.go b/pods/imports/k8s/KubeEndpoints__checks.go index df3208f13..e6a406e70 100644 --- a/pods/imports/k8s/KubeEndpoints__checks.go +++ b/pods/imports/k8s/KubeEndpoints__checks.go @@ -57,3 +57,4 @@ func validateNewKubeEndpointsParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeEndpoints__no_checks.go b/pods/imports/k8s/KubeEndpoints__no_checks.go index 9c6e66083..3ec5b855c 100644 --- a/pods/imports/k8s/KubeEndpoints__no_checks.go +++ b/pods/imports/k8s/KubeEndpoints__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEndpoints_OfParameters(c constructs.IConstruct) error { func validateNewKubeEndpointsParameters(scope constructs.Construct, id *string, props *KubeEndpointsProps) error { return nil } + diff --git a/pods/imports/k8s/KubeEvent.go b/pods/imports/k8s/KubeEvent.go index 8da281d7a..b61f00d0b 100644 --- a/pods/imports/k8s/KubeEvent.go +++ b/pods/imports/k8s/KubeEvent.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeEvent) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.events.v1.Event" API object. func NewKubeEvent(scope constructs.Construct, id *string, props *KubeEventProps) KubeEvent { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeEvent) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEventList.go b/pods/imports/k8s/KubeEventList.go index 80c4e532e..1695b8039 100644 --- a/pods/imports/k8s/KubeEventList.go +++ b/pods/imports/k8s/KubeEventList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeEventList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.events.v1.EventList" API object. func NewKubeEventList(scope constructs.Construct, id *string, props *KubeEventListProps) KubeEventList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeEventList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEventListProps.go b/pods/imports/k8s/KubeEventListProps.go index 60deef32d..baa1cb624 100644 --- a/pods/imports/k8s/KubeEventListProps.go +++ b/pods/imports/k8s/KubeEventListProps.go @@ -1,5 +1,6 @@ package k8s + // EventList is a list of Event objects. type KubeEventListProps struct { // items is a list of schema objects. @@ -9,3 +10,4 @@ type KubeEventListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeEventList__checks.go b/pods/imports/k8s/KubeEventList__checks.go index ef6848d6f..bd9054168 100644 --- a/pods/imports/k8s/KubeEventList__checks.go +++ b/pods/imports/k8s/KubeEventList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeEventListParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeEventList__no_checks.go b/pods/imports/k8s/KubeEventList__no_checks.go index 615823615..45303d4ab 100644 --- a/pods/imports/k8s/KubeEventList__no_checks.go +++ b/pods/imports/k8s/KubeEventList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEventList_OfParameters(c constructs.IConstruct) error { func validateNewKubeEventListParameters(scope constructs.Construct, id *string, props *KubeEventListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeEventProps.go b/pods/imports/k8s/KubeEventProps.go index cbb1aaf1d..b24dda95d 100644 --- a/pods/imports/k8s/KubeEventProps.go +++ b/pods/imports/k8s/KubeEventProps.go @@ -55,3 +55,4 @@ type KubeEventProps struct { // It is machine-readable. This field cannot be empty for new Events. Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/KubeEvent__checks.go b/pods/imports/k8s/KubeEvent__checks.go index 5ca538a50..877020e88 100644 --- a/pods/imports/k8s/KubeEvent__checks.go +++ b/pods/imports/k8s/KubeEvent__checks.go @@ -63,3 +63,4 @@ func validateNewKubeEventParameters(scope constructs.Construct, id *string, prop return nil } + diff --git a/pods/imports/k8s/KubeEvent__no_checks.go b/pods/imports/k8s/KubeEvent__no_checks.go index 1e91e3dcc..1276eb107 100644 --- a/pods/imports/k8s/KubeEvent__no_checks.go +++ b/pods/imports/k8s/KubeEvent__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEvent_OfParameters(c constructs.IConstruct) error { func validateNewKubeEventParameters(scope constructs.Construct, id *string, props *KubeEventProps) error { return nil } + diff --git a/pods/imports/k8s/KubeEviction.go b/pods/imports/k8s/KubeEviction.go index 2d9e241eb..bc1f2996e 100644 --- a/pods/imports/k8s/KubeEviction.go +++ b/pods/imports/k8s/KubeEviction.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeEviction) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.policy.v1.Eviction" API object. func NewKubeEviction(scope constructs.Construct, id *string, props *KubeEvictionProps) KubeEviction { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeEviction) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeEvictionProps.go b/pods/imports/k8s/KubeEvictionProps.go index 0778c5b71..e2f62c99f 100644 --- a/pods/imports/k8s/KubeEvictionProps.go +++ b/pods/imports/k8s/KubeEvictionProps.go @@ -1,5 +1,6 @@ package k8s + // Eviction evicts a pod from its node subject to certain policies and safety constraints. // // This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions. @@ -9,3 +10,4 @@ type KubeEvictionProps struct { // ObjectMeta describes the pod that is being evicted. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeEviction__checks.go b/pods/imports/k8s/KubeEviction__checks.go index e064ff355..b5f1638df 100644 --- a/pods/imports/k8s/KubeEviction__checks.go +++ b/pods/imports/k8s/KubeEviction__checks.go @@ -57,3 +57,4 @@ func validateNewKubeEvictionParameters(scope constructs.Construct, id *string, p return nil } + diff --git a/pods/imports/k8s/KubeEviction__no_checks.go b/pods/imports/k8s/KubeEviction__no_checks.go index 4b4146f1f..26a94dcd3 100644 --- a/pods/imports/k8s/KubeEviction__no_checks.go +++ b/pods/imports/k8s/KubeEviction__no_checks.go @@ -23,3 +23,4 @@ func validateKubeEviction_OfParameters(c constructs.IConstruct) error { func validateNewKubeEvictionParameters(scope constructs.Construct, id *string, props *KubeEvictionProps) error { return nil } + diff --git a/pods/imports/k8s/KubeFlowSchema.go b/pods/imports/k8s/KubeFlowSchema.go index 18e72b784..7cdb4806f 100644 --- a/pods/imports/k8s/KubeFlowSchema.go +++ b/pods/imports/k8s/KubeFlowSchema.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeFlowSchema) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.flowcontrol.v1.FlowSchema" API object. func NewKubeFlowSchema(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) KubeFlowSchema { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeFlowSchema) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeFlowSchemaList.go b/pods/imports/k8s/KubeFlowSchemaList.go index bd66f4649..7816e1f12 100644 --- a/pods/imports/k8s/KubeFlowSchemaList.go +++ b/pods/imports/k8s/KubeFlowSchemaList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeFlowSchemaList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.flowcontrol.v1.FlowSchemaList" API object. func NewKubeFlowSchemaList(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) KubeFlowSchemaList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeFlowSchemaList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeFlowSchemaListProps.go b/pods/imports/k8s/KubeFlowSchemaListProps.go index 488649d65..2ba5f1b3f 100644 --- a/pods/imports/k8s/KubeFlowSchemaListProps.go +++ b/pods/imports/k8s/KubeFlowSchemaListProps.go @@ -1,5 +1,6 @@ package k8s + // FlowSchemaList is a list of FlowSchema objects. type KubeFlowSchemaListProps struct { // `items` is a list of FlowSchemas. @@ -9,3 +10,4 @@ type KubeFlowSchemaListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeDeviceClassListV1Beta1.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go similarity index 66% rename from pods/imports/k8s/KubeDeviceClassListV1Beta1.go rename to pods/imports/k8s/KubeFlowSchemaListV1Beta3.go index 9cd482e4f..bfce20108 100644 --- a/pods/imports/k8s/KubeDeviceClassListV1Beta1.go +++ b/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go @@ -9,8 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// DeviceClassList is a collection of classes. -type KubeDeviceClassListV1Beta1 interface { +// FlowSchemaList is a list of FlowSchema objects. +type KubeFlowSchemaListV1Beta3 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeDeviceClassListV1Beta1 interface { ToString() *string } -// The jsii proxy struct for KubeDeviceClassListV1Beta1 -type jsiiProxy_KubeDeviceClassListV1Beta1 struct { +// The jsii proxy struct for KubeFlowSchemaListV1Beta3 +type jsiiProxy_KubeFlowSchemaListV1Beta3 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) ApiGroup() *string { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) ApiVersion() *string { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Kind() *string { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Kind() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Metadata() cdk8s.ApiObjectMetadat return returns } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Name() *string { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Name() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Node() constructs.Node { +func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeDeviceClassListV1Beta1) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.resource.v1beta1.DeviceClassList" API object. -func NewKubeDeviceClassListV1Beta1(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) KubeDeviceClassListV1Beta1 { + +// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList" API object. +func NewKubeFlowSchemaListV1Beta3(scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) KubeFlowSchemaListV1Beta3 { _init_.Initialize() - if err := validateNewKubeDeviceClassListV1Beta1Parameters(scope, id, props); err != nil { + if err := validateNewKubeFlowSchemaListV1Beta3Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeDeviceClassListV1Beta1{} + j := jsiiProxy_KubeFlowSchemaListV1Beta3{} _jsii_.Create( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeDeviceClassListV1Beta1(scope constructs.Construct, id *string, props return &j } -// Defines a "io.k8s.api.resource.v1beta1.DeviceClassList" API object. -func NewKubeDeviceClassListV1Beta1_Override(k KubeDeviceClassListV1Beta1, scope constructs.Construct, id *string, props *KubeDeviceClassListV1Beta1Props) { +// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList" API object. +func NewKubeFlowSchemaListV1Beta3_Override(k KubeFlowSchemaListV1Beta3, scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeDeviceClassListV1Beta1_Override(k KubeDeviceClassListV1Beta1, scope // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeDeviceClassListV1Beta1_IsApiObject(o interface{}) *bool { +func KubeFlowSchemaListV1Beta3_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeDeviceClassListV1Beta1_IsApiObjectParameters(o); err != nil { + if err := validateKubeFlowSchemaListV1Beta3_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeDeviceClassListV1Beta1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDeviceClassListV1Beta1_IsConstruct(x interface{}) *bool { +func KubeFlowSchemaListV1Beta3_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeDeviceClassListV1Beta1_IsConstructParameters(x); err != nil { + if err := validateKubeFlowSchemaListV1Beta3_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeDeviceClassListV1Beta1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.DeviceClassList". +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDeviceClassListV1Beta1_Manifest(props *KubeDeviceClassListV1Beta1Props) interface{} { +func KubeFlowSchemaListV1Beta3_Manifest(props *KubeFlowSchemaListV1Beta3Props) interface{} { _init_.Initialize() - if err := validateKubeDeviceClassListV1Beta1_ManifestParameters(props); err != nil { + if err := validateKubeFlowSchemaListV1Beta3_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeDeviceClassListV1Beta1_Manifest(props *KubeDeviceClassListV1Beta1Props) // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeDeviceClassListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeFlowSchemaListV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeDeviceClassListV1Beta1_OfParameters(c); err != nil { + if err := validateKubeFlowSchemaListV1Beta3_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeDeviceClassListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { return returns } -func KubeDeviceClassListV1Beta1_GVK() *cdk8s.GroupVersionKind { +func KubeFlowSchemaListV1Beta3_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeDeviceClassListV1Beta1", + "k8s.KubeFlowSchemaListV1Beta3", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeDeviceClassListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeDeviceClassListV1Beta1) AddDependency(dependencies ...con ) } -func (k *jsiiProxy_KubeDeviceClassListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeDeviceClassListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPat ) } -func (k *jsiiProxy_KubeDeviceClassListV1Beta1) ToJson() interface{} { +func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeDeviceClassListV1Beta1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeDeviceClassListV1Beta1) ToString() *string { +func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeDeviceClassListV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go new file mode 100644 index 000000000..e90a338f8 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go @@ -0,0 +1,13 @@ +package k8s + + +// FlowSchemaList is a list of FlowSchema objects. +type KubeFlowSchemaListV1Beta3Props struct { + // `items` is a list of FlowSchemas. + Items *[]*KubeFlowSchemaV1Beta3Props `field:"required" json:"items" yaml:"items"` + // `metadata` is the standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go similarity index 69% rename from pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go rename to pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go index bab1ff8bb..d7aa07711 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Beta1__checks.go +++ b/pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o interface{}) error { +func validateKubeFlowSchemaListV1Beta3_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o interface{}) error { return nil } -func validateKubeDeviceClassV1Beta1_IsConstructParameters(x interface{}) error { +func validateKubeFlowSchemaListV1Beta3_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeDeviceClassV1Beta1_IsConstructParameters(x interface{}) error { return nil } -func validateKubeDeviceClassV1Beta1_ManifestParameters(props *KubeDeviceClassV1Beta1Props) error { +func validateKubeFlowSchemaListV1Beta3_ManifestParameters(props *KubeFlowSchemaListV1Beta3Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeDeviceClassV1Beta1_ManifestParameters(props *KubeDeviceClassV1B return nil } -func validateKubeDeviceClassV1Beta1_OfParameters(c constructs.IConstruct) error { +func validateKubeFlowSchemaListV1Beta3_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeDeviceClassV1Beta1_OfParameters(c constructs.IConstruct) error return nil } -func validateNewKubeDeviceClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) error { +func validateNewKubeFlowSchemaListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeDeviceClassV1Beta1Parameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go new file mode 100644 index 000000000..a5cb3d2c1 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeFlowSchemaListV1Beta3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeFlowSchemaListV1Beta3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeFlowSchemaListV1Beta3_ManifestParameters(props *KubeFlowSchemaListV1Beta3Props) error { + return nil +} + +func validateKubeFlowSchemaListV1Beta3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeFlowSchemaListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeFlowSchemaList__checks.go b/pods/imports/k8s/KubeFlowSchemaList__checks.go index dc6e626b9..ae048e0ab 100644 --- a/pods/imports/k8s/KubeFlowSchemaList__checks.go +++ b/pods/imports/k8s/KubeFlowSchemaList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeFlowSchemaListParameters(scope constructs.Construct, id *str return nil } + diff --git a/pods/imports/k8s/KubeFlowSchemaList__no_checks.go b/pods/imports/k8s/KubeFlowSchemaList__no_checks.go index 5deee2da4..e5e257814 100644 --- a/pods/imports/k8s/KubeFlowSchemaList__no_checks.go +++ b/pods/imports/k8s/KubeFlowSchemaList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeFlowSchemaList_OfParameters(c constructs.IConstruct) error { func validateNewKubeFlowSchemaListParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeFlowSchemaProps.go b/pods/imports/k8s/KubeFlowSchemaProps.go index d9895117a..c5038c2ec 100644 --- a/pods/imports/k8s/KubeFlowSchemaProps.go +++ b/pods/imports/k8s/KubeFlowSchemaProps.go @@ -1,5 +1,6 @@ package k8s + // FlowSchema defines the schema of a group of flows. // // Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". @@ -13,3 +14,4 @@ type KubeFlowSchemaProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *FlowSchemaSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeDeviceClassV1Beta1.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3.go similarity index 65% rename from pods/imports/k8s/KubeDeviceClassV1Beta1.go rename to pods/imports/k8s/KubeFlowSchemaV1Beta3.go index 3943b127c..6a270e470 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Beta1.go +++ b/pods/imports/k8s/KubeFlowSchemaV1Beta3.go @@ -9,12 +9,10 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. +// FlowSchema defines the schema of a group of flows. // -// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeDeviceClassV1Beta1 interface { +// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". +type KubeFlowSchemaV1Beta3 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -51,12 +49,12 @@ type KubeDeviceClassV1Beta1 interface { ToString() *string } -// The jsii proxy struct for KubeDeviceClassV1Beta1 -type jsiiProxy_KubeDeviceClassV1Beta1 struct { +// The jsii proxy struct for KubeFlowSchemaV1Beta3 +type jsiiProxy_KubeFlowSchemaV1Beta3 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) ApiGroup() *string { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -66,7 +64,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) ApiVersion() *string { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -76,7 +74,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -86,7 +84,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) Kind() *string { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Kind() *string { var returns *string _jsii_.Get( j, @@ -96,7 +94,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) Kind() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -106,7 +104,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) Metadata() cdk8s.ApiObjectMetadataDef return returns } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) Name() *string { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Name() *string { var returns *string _jsii_.Get( j, @@ -116,7 +114,7 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) Name() *string { return returns } -func (j *jsiiProxy_KubeDeviceClassV1Beta1) Node() constructs.Node { +func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -126,17 +124,18 @@ func (j *jsiiProxy_KubeDeviceClassV1Beta1) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.resource.v1beta1.DeviceClass" API object. -func NewKubeDeviceClassV1Beta1(scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) KubeDeviceClassV1Beta1 { + +// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchema" API object. +func NewKubeFlowSchemaV1Beta3(scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) KubeFlowSchemaV1Beta3 { _init_.Initialize() - if err := validateNewKubeDeviceClassV1Beta1Parameters(scope, id, props); err != nil { + if err := validateNewKubeFlowSchemaV1Beta3Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeDeviceClassV1Beta1{} + j := jsiiProxy_KubeFlowSchemaV1Beta3{} _jsii_.Create( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", []interface{}{scope, id, props}, &j, ) @@ -144,12 +143,12 @@ func NewKubeDeviceClassV1Beta1(scope constructs.Construct, id *string, props *Ku return &j } -// Defines a "io.k8s.api.resource.v1beta1.DeviceClass" API object. -func NewKubeDeviceClassV1Beta1_Override(k KubeDeviceClassV1Beta1, scope constructs.Construct, id *string, props *KubeDeviceClassV1Beta1Props) { +// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchema" API object. +func NewKubeFlowSchemaV1Beta3_Override(k KubeFlowSchemaV1Beta3, scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", []interface{}{scope, id, props}, k, ) @@ -158,16 +157,16 @@ func NewKubeDeviceClassV1Beta1_Override(k KubeDeviceClassV1Beta1, scope construc // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeDeviceClassV1Beta1_IsApiObject(o interface{}) *bool { +func KubeFlowSchemaV1Beta3_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeDeviceClassV1Beta1_IsApiObjectParameters(o); err != nil { + if err := validateKubeFlowSchemaV1Beta3_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", "isApiObject", []interface{}{o}, &returns, @@ -193,16 +192,16 @@ func KubeDeviceClassV1Beta1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDeviceClassV1Beta1_IsConstruct(x interface{}) *bool { +func KubeFlowSchemaV1Beta3_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeDeviceClassV1Beta1_IsConstructParameters(x); err != nil { + if err := validateKubeFlowSchemaV1Beta3_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", "isConstruct", []interface{}{x}, &returns, @@ -211,19 +210,19 @@ func KubeDeviceClassV1Beta1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.DeviceClass". +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.FlowSchema". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDeviceClassV1Beta1_Manifest(props *KubeDeviceClassV1Beta1Props) interface{} { +func KubeFlowSchemaV1Beta3_Manifest(props *KubeFlowSchemaV1Beta3Props) interface{} { _init_.Initialize() - if err := validateKubeDeviceClassV1Beta1_ManifestParameters(props); err != nil { + if err := validateKubeFlowSchemaV1Beta3_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", "manifest", []interface{}{props}, &returns, @@ -237,16 +236,16 @@ func KubeDeviceClassV1Beta1_Manifest(props *KubeDeviceClassV1Beta1Props) interfa // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeDeviceClassV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeFlowSchemaV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeDeviceClassV1Beta1_OfParameters(c); err != nil { + if err := validateKubeFlowSchemaV1Beta3_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", "of", []interface{}{c}, &returns, @@ -255,18 +254,18 @@ func KubeDeviceClassV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { return returns } -func KubeDeviceClassV1Beta1_GVK() *cdk8s.GroupVersionKind { +func KubeFlowSchemaV1Beta3_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeDeviceClassV1Beta1", + "k8s.KubeFlowSchemaV1Beta3", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeDeviceClassV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeFlowSchemaV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -279,7 +278,7 @@ func (k *jsiiProxy_KubeDeviceClassV1Beta1) AddDependency(dependencies ...constru ) } -func (k *jsiiProxy_KubeDeviceClassV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeFlowSchemaV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -292,7 +291,7 @@ func (k *jsiiProxy_KubeDeviceClassV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) ) } -func (k *jsiiProxy_KubeDeviceClassV1Beta1) ToJson() interface{} { +func (k *jsiiProxy_KubeFlowSchemaV1Beta3) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -305,7 +304,7 @@ func (k *jsiiProxy_KubeDeviceClassV1Beta1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeDeviceClassV1Beta1) ToString() *string { +func (k *jsiiProxy_KubeFlowSchemaV1Beta3) ToString() *string { var returns *string _jsii_.Invoke( @@ -317,3 +316,4 @@ func (k *jsiiProxy_KubeDeviceClassV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go new file mode 100644 index 000000000..e9faf3a08 --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go @@ -0,0 +1,17 @@ +package k8s + + +// FlowSchema defines the schema of a group of flows. +// +// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". +type KubeFlowSchemaV1Beta3Props struct { + // `metadata` is the standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // `spec` is the specification of the desired behavior of a FlowSchema. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *FlowSchemaSpecV1Beta3 `field:"optional" json:"spec" yaml:"spec"` +} + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go similarity index 61% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go rename to pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go index eb55b1a2c..c2a34d2b0 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { +func validateKubeFlowSchemaV1Beta3_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interfa return nil } -func validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { +func validateKubeFlowSchemaV1Beta3_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interfa return nil } -func validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { +func validateKubeFlowSchemaV1Beta3_ManifestParameters(props *KubeFlowSchemaV1Beta3Props) error { if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { return err } @@ -34,7 +34,7 @@ func validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeM return nil } -func validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { +func validateKubeFlowSchemaV1Beta3_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -42,7 +42,7 @@ func validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.ICons return nil } -func validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { +func validateNewKubeFlowSchemaV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -57,3 +57,4 @@ func validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope constructs.C return nil } + diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go new file mode 100644 index 000000000..362d7d49c --- /dev/null +++ b/pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeFlowSchemaV1Beta3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeFlowSchemaV1Beta3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeFlowSchemaV1Beta3_ManifestParameters(props *KubeFlowSchemaV1Beta3Props) error { + return nil +} + +func validateKubeFlowSchemaV1Beta3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeFlowSchemaV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeFlowSchema__checks.go b/pods/imports/k8s/KubeFlowSchema__checks.go index 7207bfe7d..3fd62a2ca 100644 --- a/pods/imports/k8s/KubeFlowSchema__checks.go +++ b/pods/imports/k8s/KubeFlowSchema__checks.go @@ -57,3 +57,4 @@ func validateNewKubeFlowSchemaParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeFlowSchema__no_checks.go b/pods/imports/k8s/KubeFlowSchema__no_checks.go index 695656f6f..0322e93b4 100644 --- a/pods/imports/k8s/KubeFlowSchema__no_checks.go +++ b/pods/imports/k8s/KubeFlowSchema__no_checks.go @@ -23,3 +23,4 @@ func validateKubeFlowSchema_OfParameters(c constructs.IConstruct) error { func validateNewKubeFlowSchemaParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) error { return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go index 19ab78b03..ee22b80be 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" API object. func NewKubeHorizontalPodAutoscaler(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) KubeHorizontalPodAutoscaler { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeHorizontalPodAutoscaler) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go index 7904bbb7b..08980d006 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" API object. func NewKubeHorizontalPodAutoscalerList(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) KubeHorizontalPodAutoscalerList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go index 9d017df81..dd1d180b7 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go @@ -1,5 +1,6 @@ package k8s + // list of horizontal pod autoscaler objects. type KubeHorizontalPodAutoscalerListProps struct { // items is the list of horizontal pod autoscaler objects. @@ -7,3 +8,4 @@ type KubeHorizontalPodAutoscalerListProps struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go index 494028c77..2d8ec24b5 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" API object. func NewKubeHorizontalPodAutoscalerListV2(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) KubeHorizontalPodAutoscalerListV2 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go index afba88a72..d3503431d 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go @@ -1,5 +1,6 @@ package k8s + // HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. type KubeHorizontalPodAutoscalerListV2Props struct { // items is the list of horizontal pod autoscaler objects. @@ -7,3 +8,4 @@ type KubeHorizontalPodAutoscalerListV2Props struct { // metadata is the standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go index 9e5ca0630..4de48b106 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go @@ -63,3 +63,4 @@ func validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope constructs.Con return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go index 8bbca0aed..22323595a 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go @@ -23,3 +23,4 @@ func validateKubeHorizontalPodAutoscalerListV2_OfParameters(c constructs.IConstr func validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) error { return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go index 66acc784d..2228da986 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeHorizontalPodAutoscalerListParameters(scope constructs.Const return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go index 03542096d..c1e44c9d1 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeHorizontalPodAutoscalerList_OfParameters(c constructs.IConstruc func validateNewKubeHorizontalPodAutoscalerListParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go index 482dde1f8..6a2d79afc 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go @@ -1,5 +1,6 @@ package k8s + // configuration of a horizontal pod autoscaler. type KubeHorizontalPodAutoscalerProps struct { // Standard object metadata. @@ -11,3 +12,4 @@ type KubeHorizontalPodAutoscalerProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Spec *HorizontalPodAutoscalerSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go index c486ae3a7..ec4b60f29 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" API object. func NewKubeHorizontalPodAutoscalerV2(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) KubeHorizontalPodAutoscalerV2 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go index c08f7e076..42c3f4a45 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go @@ -1,5 +1,6 @@ package k8s + // HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified. type KubeHorizontalPodAutoscalerV2Props struct { // metadata is the standard object metadata. @@ -11,3 +12,4 @@ type KubeHorizontalPodAutoscalerV2Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Spec *HorizontalPodAutoscalerSpecV2 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go index f195ecd4a..3f9158f9b 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go @@ -57,3 +57,4 @@ func validateNewKubeHorizontalPodAutoscalerV2Parameters(scope constructs.Constru return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go index fcb64a7fd..752890c21 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go @@ -23,3 +23,4 @@ func validateKubeHorizontalPodAutoscalerV2_OfParameters(c constructs.IConstruct) func validateNewKubeHorizontalPodAutoscalerV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) error { return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go index af4e7a150..2fc45c67b 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go @@ -57,3 +57,4 @@ func validateNewKubeHorizontalPodAutoscalerParameters(scope constructs.Construct return nil } + diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go index 63a1ea9f9..851a362e0 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go @@ -23,3 +23,4 @@ func validateKubeHorizontalPodAutoscaler_OfParameters(c constructs.IConstruct) e func validateNewKubeHorizontalPodAutoscalerParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) error { return nil } + diff --git a/pods/imports/k8s/KubeIngress.go b/pods/imports/k8s/KubeIngress.go index 7bdbdc77e..d1346b94b 100644 --- a/pods/imports/k8s/KubeIngress.go +++ b/pods/imports/k8s/KubeIngress.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeIngress) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1.Ingress" API object. func NewKubeIngress(scope constructs.Construct, id *string, props *KubeIngressProps) KubeIngress { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeIngress) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeIngressClass.go b/pods/imports/k8s/KubeIngressClass.go index 9f54f81e3..62b8a0e09 100644 --- a/pods/imports/k8s/KubeIngressClass.go +++ b/pods/imports/k8s/KubeIngressClass.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeIngressClass) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1.IngressClass" API object. func NewKubeIngressClass(scope constructs.Construct, id *string, props *KubeIngressClassProps) KubeIngressClass { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeIngressClass) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeIngressClassList.go b/pods/imports/k8s/KubeIngressClassList.go index d9586591d..84a88d388 100644 --- a/pods/imports/k8s/KubeIngressClassList.go +++ b/pods/imports/k8s/KubeIngressClassList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeIngressClassList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1.IngressClassList" API object. func NewKubeIngressClassList(scope constructs.Construct, id *string, props *KubeIngressClassListProps) KubeIngressClassList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeIngressClassList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeIngressClassListProps.go b/pods/imports/k8s/KubeIngressClassListProps.go index b7db1ca76..091651504 100644 --- a/pods/imports/k8s/KubeIngressClassListProps.go +++ b/pods/imports/k8s/KubeIngressClassListProps.go @@ -1,5 +1,6 @@ package k8s + // IngressClassList is a collection of IngressClasses. type KubeIngressClassListProps struct { // items is the list of IngressClasses. @@ -7,3 +8,4 @@ type KubeIngressClassListProps struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeIngressClassList__checks.go b/pods/imports/k8s/KubeIngressClassList__checks.go index e93bffc3b..6d69425c8 100644 --- a/pods/imports/k8s/KubeIngressClassList__checks.go +++ b/pods/imports/k8s/KubeIngressClassList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeIngressClassListParameters(scope constructs.Construct, id *s return nil } + diff --git a/pods/imports/k8s/KubeIngressClassList__no_checks.go b/pods/imports/k8s/KubeIngressClassList__no_checks.go index 766f9626d..a8a73d776 100644 --- a/pods/imports/k8s/KubeIngressClassList__no_checks.go +++ b/pods/imports/k8s/KubeIngressClassList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeIngressClassList_OfParameters(c constructs.IConstruct) error { func validateNewKubeIngressClassListParameters(scope constructs.Construct, id *string, props *KubeIngressClassListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeIngressClassProps.go b/pods/imports/k8s/KubeIngressClassProps.go index 18884ac3b..e9f568b83 100644 --- a/pods/imports/k8s/KubeIngressClassProps.go +++ b/pods/imports/k8s/KubeIngressClassProps.go @@ -1,5 +1,6 @@ package k8s + // IngressClass represents the class of the Ingress, referenced by the Ingress Spec. // // The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class. @@ -13,3 +14,4 @@ type KubeIngressClassProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *IngressClassSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeIngressClass__checks.go b/pods/imports/k8s/KubeIngressClass__checks.go index d9801267d..ddd1acda4 100644 --- a/pods/imports/k8s/KubeIngressClass__checks.go +++ b/pods/imports/k8s/KubeIngressClass__checks.go @@ -57,3 +57,4 @@ func validateNewKubeIngressClassParameters(scope constructs.Construct, id *strin return nil } + diff --git a/pods/imports/k8s/KubeIngressClass__no_checks.go b/pods/imports/k8s/KubeIngressClass__no_checks.go index d2d3f154e..35717b768 100644 --- a/pods/imports/k8s/KubeIngressClass__no_checks.go +++ b/pods/imports/k8s/KubeIngressClass__no_checks.go @@ -23,3 +23,4 @@ func validateKubeIngressClass_OfParameters(c constructs.IConstruct) error { func validateNewKubeIngressClassParameters(scope constructs.Construct, id *string, props *KubeIngressClassProps) error { return nil } + diff --git a/pods/imports/k8s/KubeIngressList.go b/pods/imports/k8s/KubeIngressList.go index c3545b1a4..ac343453b 100644 --- a/pods/imports/k8s/KubeIngressList.go +++ b/pods/imports/k8s/KubeIngressList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeIngressList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1.IngressList" API object. func NewKubeIngressList(scope constructs.Construct, id *string, props *KubeIngressListProps) KubeIngressList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeIngressList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeIngressListProps.go b/pods/imports/k8s/KubeIngressListProps.go index 32c5ffe73..cea2dafab 100644 --- a/pods/imports/k8s/KubeIngressListProps.go +++ b/pods/imports/k8s/KubeIngressListProps.go @@ -1,5 +1,6 @@ package k8s + // IngressList is a collection of Ingress. type KubeIngressListProps struct { // items is the list of Ingress. @@ -9,3 +10,4 @@ type KubeIngressListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeIngressList__checks.go b/pods/imports/k8s/KubeIngressList__checks.go index daaae07c6..b18e6ad51 100644 --- a/pods/imports/k8s/KubeIngressList__checks.go +++ b/pods/imports/k8s/KubeIngressList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeIngressListParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeIngressList__no_checks.go b/pods/imports/k8s/KubeIngressList__no_checks.go index 376522756..e49a7e40f 100644 --- a/pods/imports/k8s/KubeIngressList__no_checks.go +++ b/pods/imports/k8s/KubeIngressList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeIngressList_OfParameters(c constructs.IConstruct) error { func validateNewKubeIngressListParameters(scope constructs.Construct, id *string, props *KubeIngressListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeIngressProps.go b/pods/imports/k8s/KubeIngressProps.go index ef7d7c0b7..6b7244129 100644 --- a/pods/imports/k8s/KubeIngressProps.go +++ b/pods/imports/k8s/KubeIngressProps.go @@ -1,5 +1,6 @@ package k8s + // Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. // // An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. @@ -13,3 +14,4 @@ type KubeIngressProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *IngressSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeIngress__checks.go b/pods/imports/k8s/KubeIngress__checks.go index 5abc227cf..c17d269f4 100644 --- a/pods/imports/k8s/KubeIngress__checks.go +++ b/pods/imports/k8s/KubeIngress__checks.go @@ -57,3 +57,4 @@ func validateNewKubeIngressParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubeIngress__no_checks.go b/pods/imports/k8s/KubeIngress__no_checks.go index b6e47a168..fe379efb1 100644 --- a/pods/imports/k8s/KubeIngress__no_checks.go +++ b/pods/imports/k8s/KubeIngress__no_checks.go @@ -23,3 +23,4 @@ func validateKubeIngress_OfParameters(c constructs.IConstruct) error { func validateNewKubeIngressParameters(scope constructs.Construct, id *string, props *KubeIngressProps) error { return nil } + diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1.go b/pods/imports/k8s/KubeIpAddressListV1Beta1.go index 67aab26b5..83af2cb0f 100644 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1.go +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeIpAddressListV1Beta1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1beta1.IPAddressList" API object. func NewKubeIpAddressListV1Beta1(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) KubeIpAddressListV1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeIpAddressListV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go b/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go index 28da4ec53..bd6cf69d7 100644 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // IPAddressList contains a list of IPAddress. type KubeIpAddressListV1Beta1Props struct { // items is the list of IPAddresses. @@ -9,3 +10,4 @@ type KubeIpAddressListV1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go b/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go index b971976c8..89ddfd325 100644 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeIpAddressListV1Beta1Parameters(scope constructs.Construct, i return nil } + diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go b/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go index 5ef243566..433e42d73 100644 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeIpAddressListV1Beta1_OfParameters(c constructs.IConstruct) erro func validateNewKubeIpAddressListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1.go b/pods/imports/k8s/KubeIpAddressV1Beta1.go index 1cc2b64a6..c37392ba3 100644 --- a/pods/imports/k8s/KubeIpAddressV1Beta1.go +++ b/pods/imports/k8s/KubeIpAddressV1Beta1.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeIpAddressV1Beta1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1beta1.IPAddress" API object. func NewKubeIpAddressV1Beta1(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) KubeIpAddressV1Beta1 { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeIpAddressV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1Props.go b/pods/imports/k8s/KubeIpAddressV1Beta1Props.go index 7d7df38e9..637184e84 100644 --- a/pods/imports/k8s/KubeIpAddressV1Beta1Props.go +++ b/pods/imports/k8s/KubeIpAddressV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // IPAddress represents a single IP of a single IP Family. // // The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 @@ -13,3 +14,4 @@ type KubeIpAddressV1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *IpAddressSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go b/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go index 7adf6948a..04989f301 100644 --- a/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go +++ b/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go @@ -57,3 +57,4 @@ func validateNewKubeIpAddressV1Beta1Parameters(scope constructs.Construct, id *s return nil } + diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go b/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go index 05d33fb0b..b8880328b 100644 --- a/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeIpAddressV1Beta1_OfParameters(c constructs.IConstruct) error { func validateNewKubeIpAddressV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeJob.go b/pods/imports/k8s/KubeJob.go index eefab2c04..00773a593 100644 --- a/pods/imports/k8s/KubeJob.go +++ b/pods/imports/k8s/KubeJob.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeJob) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.batch.v1.Job" API object. func NewKubeJob(scope constructs.Construct, id *string, props *KubeJobProps) KubeJob { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeJob) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeJobList.go b/pods/imports/k8s/KubeJobList.go index b3f750866..bdf16a2c1 100644 --- a/pods/imports/k8s/KubeJobList.go +++ b/pods/imports/k8s/KubeJobList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeJobList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.batch.v1.JobList" API object. func NewKubeJobList(scope constructs.Construct, id *string, props *KubeJobListProps) KubeJobList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeJobList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeJobListProps.go b/pods/imports/k8s/KubeJobListProps.go index 80629c719..c75fa6fe3 100644 --- a/pods/imports/k8s/KubeJobListProps.go +++ b/pods/imports/k8s/KubeJobListProps.go @@ -1,5 +1,6 @@ package k8s + // JobList is a collection of jobs. type KubeJobListProps struct { // items is the list of Jobs. @@ -9,3 +10,4 @@ type KubeJobListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeJobList__checks.go b/pods/imports/k8s/KubeJobList__checks.go index 85d9a274b..e082b07cf 100644 --- a/pods/imports/k8s/KubeJobList__checks.go +++ b/pods/imports/k8s/KubeJobList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeJobListParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubeJobList__no_checks.go b/pods/imports/k8s/KubeJobList__no_checks.go index 89c0d37f2..1c521c32c 100644 --- a/pods/imports/k8s/KubeJobList__no_checks.go +++ b/pods/imports/k8s/KubeJobList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeJobList_OfParameters(c constructs.IConstruct) error { func validateNewKubeJobListParameters(scope constructs.Construct, id *string, props *KubeJobListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeJobProps.go b/pods/imports/k8s/KubeJobProps.go index 39d0e9d47..0c1e1dbae 100644 --- a/pods/imports/k8s/KubeJobProps.go +++ b/pods/imports/k8s/KubeJobProps.go @@ -1,5 +1,6 @@ package k8s + // Job represents the configuration of a single job. type KubeJobProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeJobProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *JobSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeJob__checks.go b/pods/imports/k8s/KubeJob__checks.go index faf2dc485..d3181bbbd 100644 --- a/pods/imports/k8s/KubeJob__checks.go +++ b/pods/imports/k8s/KubeJob__checks.go @@ -57,3 +57,4 @@ func validateNewKubeJobParameters(scope constructs.Construct, id *string, props return nil } + diff --git a/pods/imports/k8s/KubeJob__no_checks.go b/pods/imports/k8s/KubeJob__no_checks.go index 9fe473628..4e00f4f17 100644 --- a/pods/imports/k8s/KubeJob__no_checks.go +++ b/pods/imports/k8s/KubeJob__no_checks.go @@ -23,3 +23,4 @@ func validateKubeJob_OfParameters(c constructs.IConstruct) error { func validateNewKubeJobParameters(scope constructs.Construct, id *string, props *KubeJobProps) error { return nil } + diff --git a/pods/imports/k8s/KubeLease.go b/pods/imports/k8s/KubeLease.go index 5c0ec2a5b..d9be5f348 100644 --- a/pods/imports/k8s/KubeLease.go +++ b/pods/imports/k8s/KubeLease.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeLease) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.coordination.v1.Lease" API object. func NewKubeLease(scope constructs.Construct, id *string, props *KubeLeaseProps) KubeLease { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeLease) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go similarity index 70% rename from pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go rename to pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go index 363a2df40..f47c96dac 100644 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2.go +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go @@ -10,7 +10,7 @@ import ( ) // LeaseCandidateList is a list of Lease objects. -type KubeLeaseCandidateListV1Alpha2 interface { +type KubeLeaseCandidateListV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeLeaseCandidateListV1Alpha2 interface { ToString() *string } -// The jsii proxy struct for KubeLeaseCandidateListV1Alpha2 -type jsiiProxy_KubeLeaseCandidateListV1Alpha2 struct { +// The jsii proxy struct for KubeLeaseCandidateListV1Alpha1 +type jsiiProxy_KubeLeaseCandidateListV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ApiGroup() *string { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ApiVersion() *string { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Kind() *string { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Kind() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Metadata() cdk8s.ApiObjectMet return returns } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Name() *string { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Name() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Node() constructs.Node { +func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha2) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidateList" API object. -func NewKubeLeaseCandidateListV1Alpha2(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) KubeLeaseCandidateListV1Alpha2 { + +// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidateList" API object. +func NewKubeLeaseCandidateListV1Alpha1(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) KubeLeaseCandidateListV1Alpha1 { _init_.Initialize() - if err := validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope, id, props); err != nil { + if err := validateNewKubeLeaseCandidateListV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeLeaseCandidateListV1Alpha2{} + j := jsiiProxy_KubeLeaseCandidateListV1Alpha1{} _jsii_.Create( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeLeaseCandidateListV1Alpha2(scope constructs.Construct, id *string, p return &j } -// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidateList" API object. -func NewKubeLeaseCandidateListV1Alpha2_Override(k KubeLeaseCandidateListV1Alpha2, scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) { +// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidateList" API object. +func NewKubeLeaseCandidateListV1Alpha1_Override(k KubeLeaseCandidateListV1Alpha1, scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeLeaseCandidateListV1Alpha2_Override(k KubeLeaseCandidateListV1Alpha2 // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeLeaseCandidateListV1Alpha2_IsApiObject(o interface{}) *bool { +func KubeLeaseCandidateListV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o); err != nil { + if err := validateKubeLeaseCandidateListV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeLeaseCandidateListV1Alpha2_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLeaseCandidateListV1Alpha2_IsConstruct(x interface{}) *bool { +func KubeLeaseCandidateListV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x); err != nil { + if err := validateKubeLeaseCandidateListV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeLeaseCandidateListV1Alpha2_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha2.LeaseCandidateList". +// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha1.LeaseCandidateList". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLeaseCandidateListV1Alpha2_Manifest(props *KubeLeaseCandidateListV1Alpha2Props) interface{} { +func KubeLeaseCandidateListV1Alpha1_Manifest(props *KubeLeaseCandidateListV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props); err != nil { + if err := validateKubeLeaseCandidateListV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeLeaseCandidateListV1Alpha2_Manifest(props *KubeLeaseCandidateListV1Alph // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeLeaseCandidateListV1Alpha2_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeLeaseCandidateListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeLeaseCandidateListV1Alpha2_OfParameters(c); err != nil { + if err := validateKubeLeaseCandidateListV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeLeaseCandidateListV1Alpha2_Of(c constructs.IConstruct) cdk8s.ApiObject return returns } -func KubeLeaseCandidateListV1Alpha2_GVK() *cdk8s.GroupVersionKind { +func KubeLeaseCandidateListV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeLeaseCandidateListV1Alpha2", + "k8s.KubeLeaseCandidateListV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) AddDependency(dependencies .. ) } -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) AddJsonPatch(ops ...cdk8s.Jso ) } -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ToJson() interface{} { +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ToString() *string { +func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha2) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go similarity index 74% rename from pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go rename to pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go index 7a8f1732e..e3d62a411 100644 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2Props.go +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go @@ -1,11 +1,13 @@ package k8s + // LeaseCandidateList is a list of Lease objects. -type KubeLeaseCandidateListV1Alpha2Props struct { +type KubeLeaseCandidateListV1Alpha1Props struct { // items is a list of schema objects. - Items *[]*KubeLeaseCandidateV1Alpha2Props `field:"required" json:"items" yaml:"items"` + Items *[]*KubeLeaseCandidateV1Alpha1Props `field:"required" json:"items" yaml:"items"` // Standard list metadata. // // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go similarity index 76% rename from pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go rename to pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go index 93f106609..9d4ab7479 100644 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__checks.go +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o interface{}) error { +func validateKubeLeaseCandidateListV1Alpha1_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o interface{}) return nil } -func validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x interface{}) error { +func validateKubeLeaseCandidateListV1Alpha1_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x interface{}) return nil } -func validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props *KubeLeaseCandidateListV1Alpha2Props) error { +func validateKubeLeaseCandidateListV1Alpha1_ManifestParameters(props *KubeLeaseCandidateListV1Alpha1Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props *KubeLeaseC return nil } -func validateKubeLeaseCandidateListV1Alpha2_OfParameters(c constructs.IConstruct) error { +func validateKubeLeaseCandidateListV1Alpha1_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeLeaseCandidateListV1Alpha2_OfParameters(c constructs.IConstruct return nil } -func validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) error { +func validateNewKubeLeaseCandidateListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope constructs.Constr return nil } + diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go new file mode 100644 index 000000000..db9e4e721 --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLeaseCandidateListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLeaseCandidateListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLeaseCandidateListV1Alpha1_ManifestParameters(props *KubeLeaseCandidateListV1Alpha1Props) error { + return nil +} + +func validateKubeLeaseCandidateListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLeaseCandidateListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go deleted file mode 100644 index 4611fe45a..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha2__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLeaseCandidateListV1Alpha2_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLeaseCandidateListV1Alpha2_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLeaseCandidateListV1Alpha2_ManifestParameters(props *KubeLeaseCandidateListV1Alpha2Props) error { - return nil -} - -func validateKubeLeaseCandidateListV1Alpha2_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLeaseCandidateListV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha2Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go similarity index 71% rename from pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go rename to pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go index bea257af3..c3ecfacad 100644 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2.go +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go @@ -12,7 +12,7 @@ import ( // LeaseCandidate defines a candidate for a Lease object. // // Candidates are created such that coordinated leader election will pick the best leader from the list of candidates. -type KubeLeaseCandidateV1Alpha2 interface { +type KubeLeaseCandidateV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -49,12 +49,12 @@ type KubeLeaseCandidateV1Alpha2 interface { ToString() *string } -// The jsii proxy struct for KubeLeaseCandidateV1Alpha2 -type jsiiProxy_KubeLeaseCandidateV1Alpha2 struct { +// The jsii proxy struct for KubeLeaseCandidateV1Alpha1 +type jsiiProxy_KubeLeaseCandidateV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) ApiGroup() *string { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -64,7 +64,7 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) ApiVersion() *string { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -74,7 +74,7 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -84,7 +84,7 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Kind() *string { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -94,7 +94,7 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Kind() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -104,7 +104,7 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Metadata() cdk8s.ApiObjectMetadat return returns } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Name() *string { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -114,7 +114,7 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Name() *string { return returns } -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Node() constructs.Node { +func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -124,17 +124,18 @@ func (j *jsiiProxy_KubeLeaseCandidateV1Alpha2) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidate" API object. -func NewKubeLeaseCandidateV1Alpha2(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) KubeLeaseCandidateV1Alpha2 { + +// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidate" API object. +func NewKubeLeaseCandidateV1Alpha1(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) KubeLeaseCandidateV1Alpha1 { _init_.Initialize() - if err := validateNewKubeLeaseCandidateV1Alpha2Parameters(scope, id, props); err != nil { + if err := validateNewKubeLeaseCandidateV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeLeaseCandidateV1Alpha2{} + j := jsiiProxy_KubeLeaseCandidateV1Alpha1{} _jsii_.Create( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -142,12 +143,12 @@ func NewKubeLeaseCandidateV1Alpha2(scope constructs.Construct, id *string, props return &j } -// Defines a "io.k8s.api.coordination.v1alpha2.LeaseCandidate" API object. -func NewKubeLeaseCandidateV1Alpha2_Override(k KubeLeaseCandidateV1Alpha2, scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) { +// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidate" API object. +func NewKubeLeaseCandidateV1Alpha1_Override(k KubeLeaseCandidateV1Alpha1, scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -156,16 +157,16 @@ func NewKubeLeaseCandidateV1Alpha2_Override(k KubeLeaseCandidateV1Alpha2, scope // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeLeaseCandidateV1Alpha2_IsApiObject(o interface{}) *bool { +func KubeLeaseCandidateV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o); err != nil { + if err := validateKubeLeaseCandidateV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -191,16 +192,16 @@ func KubeLeaseCandidateV1Alpha2_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLeaseCandidateV1Alpha2_IsConstruct(x interface{}) *bool { +func KubeLeaseCandidateV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x); err != nil { + if err := validateKubeLeaseCandidateV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -209,19 +210,19 @@ func KubeLeaseCandidateV1Alpha2_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha2.LeaseCandidate". +// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha1.LeaseCandidate". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLeaseCandidateV1Alpha2_Manifest(props *KubeLeaseCandidateV1Alpha2Props) interface{} { +func KubeLeaseCandidateV1Alpha1_Manifest(props *KubeLeaseCandidateV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props); err != nil { + if err := validateKubeLeaseCandidateV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -235,16 +236,16 @@ func KubeLeaseCandidateV1Alpha2_Manifest(props *KubeLeaseCandidateV1Alpha2Props) // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeLeaseCandidateV1Alpha2_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeLeaseCandidateV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeLeaseCandidateV1Alpha2_OfParameters(c); err != nil { + if err := validateKubeLeaseCandidateV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", "of", []interface{}{c}, &returns, @@ -253,18 +254,18 @@ func KubeLeaseCandidateV1Alpha2_Of(c constructs.IConstruct) cdk8s.ApiObject { return returns } -func KubeLeaseCandidateV1Alpha2_GVK() *cdk8s.GroupVersionKind { +func KubeLeaseCandidateV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeLeaseCandidateV1Alpha2", + "k8s.KubeLeaseCandidateV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -277,7 +278,7 @@ func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) AddDependency(dependencies ...con ) } -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -290,7 +291,7 @@ func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) AddJsonPatch(ops ...cdk8s.JsonPat ) } -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) ToJson() interface{} { +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -303,7 +304,7 @@ func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) ToString() *string { +func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeLeaseCandidateV1Alpha2) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go similarity index 83% rename from pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go rename to pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go index b44532a8e..10ea85432 100644 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2Props.go +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go @@ -1,13 +1,15 @@ package k8s + // LeaseCandidate defines a candidate for a Lease object. // // Candidates are created such that coordinated leader election will pick the best leader from the list of candidates. -type KubeLeaseCandidateV1Alpha2Props struct { +type KubeLeaseCandidateV1Alpha1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` // spec contains the specification of the Lease. // // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *LeaseCandidateSpecV1Alpha2 `field:"optional" json:"spec" yaml:"spec"` + Spec *LeaseCandidateSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go similarity index 70% rename from pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go rename to pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go index 6f3156fd5..6c6a23cfa 100644 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__checks.go +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o interface{}) error { +func validateKubeLeaseCandidateV1Alpha1_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o interface{}) err return nil } -func validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x interface{}) error { +func validateKubeLeaseCandidateV1Alpha1_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x interface{}) err return nil } -func validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props *KubeLeaseCandidateV1Alpha2Props) error { +func validateKubeLeaseCandidateV1Alpha1_ManifestParameters(props *KubeLeaseCandidateV1Alpha1Props) error { if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { return err } @@ -34,7 +34,7 @@ func validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props *KubeLeaseCandi return nil } -func validateKubeLeaseCandidateV1Alpha2_OfParameters(c constructs.IConstruct) error { +func validateKubeLeaseCandidateV1Alpha1_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -42,7 +42,7 @@ func validateKubeLeaseCandidateV1Alpha2_OfParameters(c constructs.IConstruct) er return nil } -func validateNewKubeLeaseCandidateV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) error { +func validateNewKubeLeaseCandidateV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -57,3 +57,4 @@ func validateNewKubeLeaseCandidateV1Alpha2Parameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go new file mode 100644 index 000000000..28059d67c --- /dev/null +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeLeaseCandidateV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeLeaseCandidateV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeLeaseCandidateV1Alpha1_ManifestParameters(props *KubeLeaseCandidateV1Alpha1Props) error { + return nil +} + +func validateKubeLeaseCandidateV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeLeaseCandidateV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go deleted file mode 100644 index 48fd68ace..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha2__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLeaseCandidateV1Alpha2_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLeaseCandidateV1Alpha2_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLeaseCandidateV1Alpha2_ManifestParameters(props *KubeLeaseCandidateV1Alpha2Props) error { - return nil -} - -func validateKubeLeaseCandidateV1Alpha2_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLeaseCandidateV1Alpha2Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha2Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeLeaseList.go b/pods/imports/k8s/KubeLeaseList.go index 0535494aa..5ba3169b7 100644 --- a/pods/imports/k8s/KubeLeaseList.go +++ b/pods/imports/k8s/KubeLeaseList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeLeaseList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.coordination.v1.LeaseList" API object. func NewKubeLeaseList(scope constructs.Construct, id *string, props *KubeLeaseListProps) KubeLeaseList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeLeaseList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLeaseListProps.go b/pods/imports/k8s/KubeLeaseListProps.go index 8fdfd1466..4539daee6 100644 --- a/pods/imports/k8s/KubeLeaseListProps.go +++ b/pods/imports/k8s/KubeLeaseListProps.go @@ -1,5 +1,6 @@ package k8s + // LeaseList is a list of Lease objects. type KubeLeaseListProps struct { // items is a list of schema objects. @@ -9,3 +10,4 @@ type KubeLeaseListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeLeaseList__checks.go b/pods/imports/k8s/KubeLeaseList__checks.go index d8a8f00a9..d0caa3b30 100644 --- a/pods/imports/k8s/KubeLeaseList__checks.go +++ b/pods/imports/k8s/KubeLeaseList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeLeaseListParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeLeaseList__no_checks.go b/pods/imports/k8s/KubeLeaseList__no_checks.go index b09eb7301..b0722cc76 100644 --- a/pods/imports/k8s/KubeLeaseList__no_checks.go +++ b/pods/imports/k8s/KubeLeaseList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeLeaseList_OfParameters(c constructs.IConstruct) error { func validateNewKubeLeaseListParameters(scope constructs.Construct, id *string, props *KubeLeaseListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeLeaseProps.go b/pods/imports/k8s/KubeLeaseProps.go index ab6a9de37..a7e4f56ca 100644 --- a/pods/imports/k8s/KubeLeaseProps.go +++ b/pods/imports/k8s/KubeLeaseProps.go @@ -1,5 +1,6 @@ package k8s + // Lease defines a lease concept. type KubeLeaseProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. @@ -9,3 +10,4 @@ type KubeLeaseProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *LeaseSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeLease__checks.go b/pods/imports/k8s/KubeLease__checks.go index 69c5af198..e9babb863 100644 --- a/pods/imports/k8s/KubeLease__checks.go +++ b/pods/imports/k8s/KubeLease__checks.go @@ -57,3 +57,4 @@ func validateNewKubeLeaseParameters(scope constructs.Construct, id *string, prop return nil } + diff --git a/pods/imports/k8s/KubeLease__no_checks.go b/pods/imports/k8s/KubeLease__no_checks.go index da5fb3577..480a64596 100644 --- a/pods/imports/k8s/KubeLease__no_checks.go +++ b/pods/imports/k8s/KubeLease__no_checks.go @@ -23,3 +23,4 @@ func validateKubeLease_OfParameters(c constructs.IConstruct) error { func validateNewKubeLeaseParameters(scope constructs.Construct, id *string, props *KubeLeaseProps) error { return nil } + diff --git a/pods/imports/k8s/KubeLimitRange.go b/pods/imports/k8s/KubeLimitRange.go index e0afa87af..e1c2bd0d5 100644 --- a/pods/imports/k8s/KubeLimitRange.go +++ b/pods/imports/k8s/KubeLimitRange.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeLimitRange) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.LimitRange" API object. func NewKubeLimitRange(scope constructs.Construct, id *string, props *KubeLimitRangeProps) KubeLimitRange { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeLimitRange) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLimitRangeList.go b/pods/imports/k8s/KubeLimitRangeList.go index 2a20b2793..87440d581 100644 --- a/pods/imports/k8s/KubeLimitRangeList.go +++ b/pods/imports/k8s/KubeLimitRangeList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeLimitRangeList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.LimitRangeList" API object. func NewKubeLimitRangeList(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) KubeLimitRangeList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeLimitRangeList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLimitRangeListProps.go b/pods/imports/k8s/KubeLimitRangeListProps.go index 4e91a48a7..1cb537ac6 100644 --- a/pods/imports/k8s/KubeLimitRangeListProps.go +++ b/pods/imports/k8s/KubeLimitRangeListProps.go @@ -1,5 +1,6 @@ package k8s + // LimitRangeList is a list of LimitRange items. type KubeLimitRangeListProps struct { // Items is a list of LimitRange objects. @@ -11,3 +12,4 @@ type KubeLimitRangeListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeLimitRangeList__checks.go b/pods/imports/k8s/KubeLimitRangeList__checks.go index f6083cac3..e455874c6 100644 --- a/pods/imports/k8s/KubeLimitRangeList__checks.go +++ b/pods/imports/k8s/KubeLimitRangeList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeLimitRangeListParameters(scope constructs.Construct, id *str return nil } + diff --git a/pods/imports/k8s/KubeLimitRangeList__no_checks.go b/pods/imports/k8s/KubeLimitRangeList__no_checks.go index fa7658331..baebb1e76 100644 --- a/pods/imports/k8s/KubeLimitRangeList__no_checks.go +++ b/pods/imports/k8s/KubeLimitRangeList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeLimitRangeList_OfParameters(c constructs.IConstruct) error { func validateNewKubeLimitRangeListParameters(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeLimitRangeProps.go b/pods/imports/k8s/KubeLimitRangeProps.go index 71d43ae1c..da800c204 100644 --- a/pods/imports/k8s/KubeLimitRangeProps.go +++ b/pods/imports/k8s/KubeLimitRangeProps.go @@ -1,5 +1,6 @@ package k8s + // LimitRange sets resource usage limits for each kind of resource in a Namespace. type KubeLimitRangeProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeLimitRangeProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *LimitRangeSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeLimitRange__checks.go b/pods/imports/k8s/KubeLimitRange__checks.go index 8d2b96927..d57dad1b9 100644 --- a/pods/imports/k8s/KubeLimitRange__checks.go +++ b/pods/imports/k8s/KubeLimitRange__checks.go @@ -57,3 +57,4 @@ func validateNewKubeLimitRangeParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeLimitRange__no_checks.go b/pods/imports/k8s/KubeLimitRange__no_checks.go index 27e315c61..39eb8ca5f 100644 --- a/pods/imports/k8s/KubeLimitRange__no_checks.go +++ b/pods/imports/k8s/KubeLimitRange__no_checks.go @@ -23,3 +23,4 @@ func validateKubeLimitRange_OfParameters(c constructs.IConstruct) error { func validateNewKubeLimitRangeParameters(scope constructs.Construct, id *string, props *KubeLimitRangeProps) error { return nil } + diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview.go b/pods/imports/k8s/KubeLocalSubjectAccessReview.go index 758e95ceb..947a8c37e 100644 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview.go +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeLocalSubjectAccessReview) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authorization.v1.LocalSubjectAccessReview" API object. func NewKubeLocalSubjectAccessReview(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) KubeLocalSubjectAccessReview { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeLocalSubjectAccessReview) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go b/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go index 6eebba280..8d801f11c 100644 --- a/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go +++ b/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go @@ -1,5 +1,6 @@ package k8s + // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. // // Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking. @@ -13,3 +14,4 @@ type KubeLocalSubjectAccessReviewProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go b/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go index 6118f2dae..c2d2f7e9b 100644 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go @@ -63,3 +63,4 @@ func validateNewKubeLocalSubjectAccessReviewParameters(scope constructs.Construc return nil } + diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go index 54fcc31f1..05022f1e8 100644 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go @@ -23,3 +23,4 @@ func validateKubeLocalSubjectAccessReview_OfParameters(c constructs.IConstruct) func validateNewKubeLocalSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) error { return nil } + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go deleted file mode 100644 index 78ac81789..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - -// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding. -type KubeMutatingAdmissionPolicyBindingListV1Alpha1Props struct { - // List of PolicyBinding. - Items *[]*KubeMutatingAdmissionPolicyBindingV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go deleted file mode 100644 index a31f6b85d..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go deleted file mode 100644 index a91831903..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1Props.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - -// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources. -// -// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget). -// -// Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeMutatingAdmissionPolicyBindingV1Alpha1Props struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the MutatingAdmissionPolicyBinding. - Spec *MutatingAdmissionPolicyBindingSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go deleted file mode 100644 index 42f57a25d..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go deleted file mode 100644 index d5a3d2bee..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__checks.go +++ /dev/null @@ -1,65 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeMutatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go deleted file mode 100644 index daac36a9f..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeMutatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go deleted file mode 100644 index 77be2c26d..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - -// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain. -type KubeMutatingAdmissionPolicyV1Alpha1Props struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the MutatingAdmissionPolicy. - Spec *MutatingAdmissionPolicySpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` -} diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go b/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go deleted file mode 100644 index 914d184cb..000000000 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { - return nil -} - -func validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go index 175e5073c..fa38ced5a 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" API object. func NewKubeMutatingWebhookConfiguration(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) KubeMutatingWebhookConfiguration { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeMutatingWebhookConfiguration) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go index becf0ef83..d1b1bbbb4 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Node() constructs.Node return returns } + // Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" API object. func NewKubeMutatingWebhookConfigurationList(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) KubeMutatingWebhookConfigurationList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go index dfbd8db43..9b6826ed5 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go @@ -1,5 +1,6 @@ package k8s + // MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration. type KubeMutatingWebhookConfigurationListProps struct { // List of MutatingWebhookConfiguration. @@ -9,3 +10,4 @@ type KubeMutatingWebhookConfigurationListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go index 7dad00365..19fe8dc42 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeMutatingWebhookConfigurationListParameters(scope constructs. return nil } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go index f4352f7ea..c27bf843b 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeMutatingWebhookConfigurationList_OfParameters(c constructs.ICon func validateNewKubeMutatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go index 461ebf843..30abc9e1d 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go @@ -1,5 +1,6 @@ package k8s + // MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. type KubeMutatingWebhookConfigurationProps struct { // Standard object metadata; @@ -9,3 +10,4 @@ type KubeMutatingWebhookConfigurationProps struct { // Webhooks is a list of webhooks and the affected resources and operations. Webhooks *[]*MutatingWebhook `field:"optional" json:"webhooks" yaml:"webhooks"` } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go index b5306acfd..8a9b15bdb 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go @@ -57,3 +57,4 @@ func validateNewKubeMutatingWebhookConfigurationParameters(scope constructs.Cons return nil } + diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go index 1dbe0c8b7..c4dc177a7 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go @@ -23,3 +23,4 @@ func validateKubeMutatingWebhookConfiguration_OfParameters(c constructs.IConstru func validateNewKubeMutatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) error { return nil } + diff --git a/pods/imports/k8s/KubeNamespace.go b/pods/imports/k8s/KubeNamespace.go index 252a2ae3a..602b4a7dc 100644 --- a/pods/imports/k8s/KubeNamespace.go +++ b/pods/imports/k8s/KubeNamespace.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeNamespace) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Namespace" API object. func NewKubeNamespace(scope constructs.Construct, id *string, props *KubeNamespaceProps) KubeNamespace { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeNamespace) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeNamespaceList.go b/pods/imports/k8s/KubeNamespaceList.go index 29d8d680c..5c6960626 100644 --- a/pods/imports/k8s/KubeNamespaceList.go +++ b/pods/imports/k8s/KubeNamespaceList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeNamespaceList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.NamespaceList" API object. func NewKubeNamespaceList(scope constructs.Construct, id *string, props *KubeNamespaceListProps) KubeNamespaceList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeNamespaceList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeNamespaceListProps.go b/pods/imports/k8s/KubeNamespaceListProps.go index 76032e1ca..0c765df40 100644 --- a/pods/imports/k8s/KubeNamespaceListProps.go +++ b/pods/imports/k8s/KubeNamespaceListProps.go @@ -1,5 +1,6 @@ package k8s + // NamespaceList is a list of Namespaces. type KubeNamespaceListProps struct { // Items is the list of Namespace objects in the list. @@ -11,3 +12,4 @@ type KubeNamespaceListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeNamespaceList__checks.go b/pods/imports/k8s/KubeNamespaceList__checks.go index c913feafd..05dec1404 100644 --- a/pods/imports/k8s/KubeNamespaceList__checks.go +++ b/pods/imports/k8s/KubeNamespaceList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeNamespaceListParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeNamespaceList__no_checks.go b/pods/imports/k8s/KubeNamespaceList__no_checks.go index d00326d2b..b1a2c9971 100644 --- a/pods/imports/k8s/KubeNamespaceList__no_checks.go +++ b/pods/imports/k8s/KubeNamespaceList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeNamespaceList_OfParameters(c constructs.IConstruct) error { func validateNewKubeNamespaceListParameters(scope constructs.Construct, id *string, props *KubeNamespaceListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeNamespaceProps.go b/pods/imports/k8s/KubeNamespaceProps.go index e1d545dc4..14fbd94fb 100644 --- a/pods/imports/k8s/KubeNamespaceProps.go +++ b/pods/imports/k8s/KubeNamespaceProps.go @@ -1,5 +1,6 @@ package k8s + // Namespace provides a scope for Names. // // Use of multiple namespaces is optional. @@ -13,3 +14,4 @@ type KubeNamespaceProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *NamespaceSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeNamespace__checks.go b/pods/imports/k8s/KubeNamespace__checks.go index 32ed1a4d6..84c3e608a 100644 --- a/pods/imports/k8s/KubeNamespace__checks.go +++ b/pods/imports/k8s/KubeNamespace__checks.go @@ -57,3 +57,4 @@ func validateNewKubeNamespaceParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeNamespace__no_checks.go b/pods/imports/k8s/KubeNamespace__no_checks.go index acb93ea5f..3483e14e1 100644 --- a/pods/imports/k8s/KubeNamespace__no_checks.go +++ b/pods/imports/k8s/KubeNamespace__no_checks.go @@ -23,3 +23,4 @@ func validateKubeNamespace_OfParameters(c constructs.IConstruct) error { func validateNewKubeNamespaceParameters(scope constructs.Construct, id *string, props *KubeNamespaceProps) error { return nil } + diff --git a/pods/imports/k8s/KubeNetworkPolicy.go b/pods/imports/k8s/KubeNetworkPolicy.go index 3a9e0fe8d..ca2faf278 100644 --- a/pods/imports/k8s/KubeNetworkPolicy.go +++ b/pods/imports/k8s/KubeNetworkPolicy.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeNetworkPolicy) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1.NetworkPolicy" API object. func NewKubeNetworkPolicy(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) KubeNetworkPolicy { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeNetworkPolicy) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeNetworkPolicyList.go b/pods/imports/k8s/KubeNetworkPolicyList.go index d64b50fd1..035c5ed07 100644 --- a/pods/imports/k8s/KubeNetworkPolicyList.go +++ b/pods/imports/k8s/KubeNetworkPolicyList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeNetworkPolicyList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1.NetworkPolicyList" API object. func NewKubeNetworkPolicyList(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) KubeNetworkPolicyList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeNetworkPolicyList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeNetworkPolicyListProps.go b/pods/imports/k8s/KubeNetworkPolicyListProps.go index 07ba093a1..85e1598ca 100644 --- a/pods/imports/k8s/KubeNetworkPolicyListProps.go +++ b/pods/imports/k8s/KubeNetworkPolicyListProps.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicyList is a list of NetworkPolicy objects. type KubeNetworkPolicyListProps struct { // items is a list of schema objects. @@ -9,3 +10,4 @@ type KubeNetworkPolicyListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeNetworkPolicyList__checks.go b/pods/imports/k8s/KubeNetworkPolicyList__checks.go index d02c8376c..d08fcfca7 100644 --- a/pods/imports/k8s/KubeNetworkPolicyList__checks.go +++ b/pods/imports/k8s/KubeNetworkPolicyList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeNetworkPolicyListParameters(scope constructs.Construct, id * return nil } + diff --git a/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go b/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go index dceaeb487..25435787b 100644 --- a/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go +++ b/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeNetworkPolicyList_OfParameters(c constructs.IConstruct) error { func validateNewKubeNetworkPolicyListParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeNetworkPolicyProps.go b/pods/imports/k8s/KubeNetworkPolicyProps.go index 5a1bd6467..b4a13e4aa 100644 --- a/pods/imports/k8s/KubeNetworkPolicyProps.go +++ b/pods/imports/k8s/KubeNetworkPolicyProps.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicy describes what network traffic is allowed for a set of Pods. type KubeNetworkPolicyProps struct { // Standard object's metadata. @@ -9,3 +10,4 @@ type KubeNetworkPolicyProps struct { // spec represents the specification of the desired behavior for this NetworkPolicy. Spec *NetworkPolicySpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeNetworkPolicy__checks.go b/pods/imports/k8s/KubeNetworkPolicy__checks.go index b3ae652cc..a8a8edaeb 100644 --- a/pods/imports/k8s/KubeNetworkPolicy__checks.go +++ b/pods/imports/k8s/KubeNetworkPolicy__checks.go @@ -57,3 +57,4 @@ func validateNewKubeNetworkPolicyParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeNetworkPolicy__no_checks.go b/pods/imports/k8s/KubeNetworkPolicy__no_checks.go index 20af7c73b..6693b2022 100644 --- a/pods/imports/k8s/KubeNetworkPolicy__no_checks.go +++ b/pods/imports/k8s/KubeNetworkPolicy__no_checks.go @@ -23,3 +23,4 @@ func validateKubeNetworkPolicy_OfParameters(c constructs.IConstruct) error { func validateNewKubeNetworkPolicyParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) error { return nil } + diff --git a/pods/imports/k8s/KubeNode.go b/pods/imports/k8s/KubeNode.go index 1cd341a0e..107ec5b88 100644 --- a/pods/imports/k8s/KubeNode.go +++ b/pods/imports/k8s/KubeNode.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeNode) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Node" API object. func NewKubeNode(scope constructs.Construct, id *string, props *KubeNodeProps) KubeNode { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeNode) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeNodeList.go b/pods/imports/k8s/KubeNodeList.go index 83b3c79aa..92cee96d9 100644 --- a/pods/imports/k8s/KubeNodeList.go +++ b/pods/imports/k8s/KubeNodeList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeNodeList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.NodeList" API object. func NewKubeNodeList(scope constructs.Construct, id *string, props *KubeNodeListProps) KubeNodeList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeNodeList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeNodeListProps.go b/pods/imports/k8s/KubeNodeListProps.go index b6268b21d..ad657bdca 100644 --- a/pods/imports/k8s/KubeNodeListProps.go +++ b/pods/imports/k8s/KubeNodeListProps.go @@ -1,5 +1,6 @@ package k8s + // NodeList is the whole list of all Nodes which have been registered with master. type KubeNodeListProps struct { // List of nodes. @@ -9,3 +10,4 @@ type KubeNodeListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeNodeList__checks.go b/pods/imports/k8s/KubeNodeList__checks.go index 4750d47c4..94e4facc1 100644 --- a/pods/imports/k8s/KubeNodeList__checks.go +++ b/pods/imports/k8s/KubeNodeList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeNodeListParameters(scope constructs.Construct, id *string, p return nil } + diff --git a/pods/imports/k8s/KubeNodeList__no_checks.go b/pods/imports/k8s/KubeNodeList__no_checks.go index 9f227870c..bd785c429 100644 --- a/pods/imports/k8s/KubeNodeList__no_checks.go +++ b/pods/imports/k8s/KubeNodeList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeNodeList_OfParameters(c constructs.IConstruct) error { func validateNewKubeNodeListParameters(scope constructs.Construct, id *string, props *KubeNodeListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeNodeProps.go b/pods/imports/k8s/KubeNodeProps.go index e306be73b..707d5f5dc 100644 --- a/pods/imports/k8s/KubeNodeProps.go +++ b/pods/imports/k8s/KubeNodeProps.go @@ -1,5 +1,6 @@ package k8s + // Node is a worker node in Kubernetes. // // Each node will have a unique identifier in the cache (i.e. in etcd). @@ -13,3 +14,4 @@ type KubeNodeProps struct { // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *NodeSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeNode__checks.go b/pods/imports/k8s/KubeNode__checks.go index e69002a33..d1ad26841 100644 --- a/pods/imports/k8s/KubeNode__checks.go +++ b/pods/imports/k8s/KubeNode__checks.go @@ -57,3 +57,4 @@ func validateNewKubeNodeParameters(scope constructs.Construct, id *string, props return nil } + diff --git a/pods/imports/k8s/KubeNode__no_checks.go b/pods/imports/k8s/KubeNode__no_checks.go index 235cbeb56..09e22a78b 100644 --- a/pods/imports/k8s/KubeNode__no_checks.go +++ b/pods/imports/k8s/KubeNode__no_checks.go @@ -23,3 +23,4 @@ func validateKubeNode_OfParameters(c constructs.IConstruct) error { func validateNewKubeNodeParameters(scope constructs.Construct, id *string, props *KubeNodeProps) error { return nil } + diff --git a/pods/imports/k8s/KubePersistentVolume.go b/pods/imports/k8s/KubePersistentVolume.go index ab4e52d96..a3bbe9618 100644 --- a/pods/imports/k8s/KubePersistentVolume.go +++ b/pods/imports/k8s/KubePersistentVolume.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubePersistentVolume) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PersistentVolume" API object. func NewKubePersistentVolume(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) KubePersistentVolume { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubePersistentVolume) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaim.go b/pods/imports/k8s/KubePersistentVolumeClaim.go index 1a4ee038b..07c7b10c5 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaim.go +++ b/pods/imports/k8s/KubePersistentVolumeClaim.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePersistentVolumeClaim) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PersistentVolumeClaim" API object. func NewKubePersistentVolumeClaim(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) KubePersistentVolumeClaim { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePersistentVolumeClaim) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList.go b/pods/imports/k8s/KubePersistentVolumeClaimList.go index cb30fd294..fe5febc4e 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaimList.go +++ b/pods/imports/k8s/KubePersistentVolumeClaimList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePersistentVolumeClaimList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PersistentVolumeClaimList" API object. func NewKubePersistentVolumeClaimList(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) KubePersistentVolumeClaimList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePersistentVolumeClaimList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaimListProps.go b/pods/imports/k8s/KubePersistentVolumeClaimListProps.go index 23214fd03..dd685a184 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaimListProps.go +++ b/pods/imports/k8s/KubePersistentVolumeClaimListProps.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeClaimList is a list of PersistentVolumeClaim items. type KubePersistentVolumeClaimListProps struct { // items is a list of persistent volume claims. @@ -11,3 +12,4 @@ type KubePersistentVolumeClaimListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go b/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go index c06e25109..5ff8dcf47 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go +++ b/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePersistentVolumeClaimListParameters(scope constructs.Constru return nil } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go b/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go index fb2f5cb93..e7dfc666a 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go +++ b/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePersistentVolumeClaimList_OfParameters(c constructs.IConstruct) func validateNewKubePersistentVolumeClaimListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaimProps.go b/pods/imports/k8s/KubePersistentVolumeClaimProps.go index cf920009e..861f51d93 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaimProps.go +++ b/pods/imports/k8s/KubePersistentVolumeClaimProps.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeClaim is a user's request for and claim to a persistent volume. type KubePersistentVolumeClaimProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubePersistentVolumeClaimProps struct { // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims Spec *PersistentVolumeClaimSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaim__checks.go b/pods/imports/k8s/KubePersistentVolumeClaim__checks.go index e7bfef198..7d6984065 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaim__checks.go +++ b/pods/imports/k8s/KubePersistentVolumeClaim__checks.go @@ -57,3 +57,4 @@ func validateNewKubePersistentVolumeClaimParameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go b/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go index cb4366ad2..b480d507e 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go +++ b/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go @@ -23,3 +23,4 @@ func validateKubePersistentVolumeClaim_OfParameters(c constructs.IConstruct) err func validateNewKubePersistentVolumeClaimParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) error { return nil } + diff --git a/pods/imports/k8s/KubePersistentVolumeList.go b/pods/imports/k8s/KubePersistentVolumeList.go index d4e38a7a3..286098a78 100644 --- a/pods/imports/k8s/KubePersistentVolumeList.go +++ b/pods/imports/k8s/KubePersistentVolumeList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePersistentVolumeList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PersistentVolumeList" API object. func NewKubePersistentVolumeList(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) KubePersistentVolumeList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePersistentVolumeList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePersistentVolumeListProps.go b/pods/imports/k8s/KubePersistentVolumeListProps.go index a4d676804..4596fb343 100644 --- a/pods/imports/k8s/KubePersistentVolumeListProps.go +++ b/pods/imports/k8s/KubePersistentVolumeListProps.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeList is a list of PersistentVolume items. type KubePersistentVolumeListProps struct { // items is a list of persistent volumes. @@ -11,3 +12,4 @@ type KubePersistentVolumeListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubePersistentVolumeList__checks.go b/pods/imports/k8s/KubePersistentVolumeList__checks.go index 623e21129..f361133c3 100644 --- a/pods/imports/k8s/KubePersistentVolumeList__checks.go +++ b/pods/imports/k8s/KubePersistentVolumeList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePersistentVolumeListParameters(scope constructs.Construct, i return nil } + diff --git a/pods/imports/k8s/KubePersistentVolumeList__no_checks.go b/pods/imports/k8s/KubePersistentVolumeList__no_checks.go index a3dca366f..9f04c34ee 100644 --- a/pods/imports/k8s/KubePersistentVolumeList__no_checks.go +++ b/pods/imports/k8s/KubePersistentVolumeList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePersistentVolumeList_OfParameters(c constructs.IConstruct) erro func validateNewKubePersistentVolumeListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePersistentVolumeProps.go b/pods/imports/k8s/KubePersistentVolumeProps.go index 71b274276..bd8e60804 100644 --- a/pods/imports/k8s/KubePersistentVolumeProps.go +++ b/pods/imports/k8s/KubePersistentVolumeProps.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolume (PV) is a storage resource provisioned by an administrator. // // It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes @@ -13,3 +14,4 @@ type KubePersistentVolumeProps struct { // Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes Spec *PersistentVolumeSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubePersistentVolume__checks.go b/pods/imports/k8s/KubePersistentVolume__checks.go index 1b25adfeb..8aef631fb 100644 --- a/pods/imports/k8s/KubePersistentVolume__checks.go +++ b/pods/imports/k8s/KubePersistentVolume__checks.go @@ -57,3 +57,4 @@ func validateNewKubePersistentVolumeParameters(scope constructs.Construct, id *s return nil } + diff --git a/pods/imports/k8s/KubePersistentVolume__no_checks.go b/pods/imports/k8s/KubePersistentVolume__no_checks.go index 153ef9fd1..bfc59d958 100644 --- a/pods/imports/k8s/KubePersistentVolume__no_checks.go +++ b/pods/imports/k8s/KubePersistentVolume__no_checks.go @@ -23,3 +23,4 @@ func validateKubePersistentVolume_OfParameters(c constructs.IConstruct) error { func validateNewKubePersistentVolumeParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) error { return nil } + diff --git a/pods/imports/k8s/KubePod.go b/pods/imports/k8s/KubePod.go index b630eae9f..f3e24f5cd 100644 --- a/pods/imports/k8s/KubePod.go +++ b/pods/imports/k8s/KubePod.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubePod) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Pod" API object. func NewKubePod(scope constructs.Construct, id *string, props *KubePodProps) KubePod { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubePod) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodDisruptionBudget.go b/pods/imports/k8s/KubePodDisruptionBudget.go index d05417814..7bfa00d14 100644 --- a/pods/imports/k8s/KubePodDisruptionBudget.go +++ b/pods/imports/k8s/KubePodDisruptionBudget.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePodDisruptionBudget) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.policy.v1.PodDisruptionBudget" API object. func NewKubePodDisruptionBudget(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) KubePodDisruptionBudget { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePodDisruptionBudget) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList.go b/pods/imports/k8s/KubePodDisruptionBudgetList.go index f153fbc4b..e287ea530 100644 --- a/pods/imports/k8s/KubePodDisruptionBudgetList.go +++ b/pods/imports/k8s/KubePodDisruptionBudgetList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePodDisruptionBudgetList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.policy.v1.PodDisruptionBudgetList" API object. func NewKubePodDisruptionBudgetList(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) KubePodDisruptionBudgetList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePodDisruptionBudgetList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodDisruptionBudgetListProps.go b/pods/imports/k8s/KubePodDisruptionBudgetListProps.go index 75bf6d71c..c0030f5fb 100644 --- a/pods/imports/k8s/KubePodDisruptionBudgetListProps.go +++ b/pods/imports/k8s/KubePodDisruptionBudgetListProps.go @@ -1,5 +1,6 @@ package k8s + // PodDisruptionBudgetList is a collection of PodDisruptionBudgets. type KubePodDisruptionBudgetListProps struct { // Items is a list of PodDisruptionBudgets. @@ -9,3 +10,4 @@ type KubePodDisruptionBudgetListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go b/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go index d8d49030c..92ee0cb6c 100644 --- a/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go +++ b/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePodDisruptionBudgetListParameters(scope constructs.Construct return nil } + diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go b/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go index a32aa2db3..61e1865bd 100644 --- a/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go +++ b/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePodDisruptionBudgetList_OfParameters(c constructs.IConstruct) e func validateNewKubePodDisruptionBudgetListParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePodDisruptionBudgetProps.go b/pods/imports/k8s/KubePodDisruptionBudgetProps.go index 355dfa924..13ee18be9 100644 --- a/pods/imports/k8s/KubePodDisruptionBudgetProps.go +++ b/pods/imports/k8s/KubePodDisruptionBudgetProps.go @@ -1,5 +1,6 @@ package k8s + // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods. type KubePodDisruptionBudgetProps struct { // Standard object's metadata. @@ -9,3 +10,4 @@ type KubePodDisruptionBudgetProps struct { // Specification of the desired behavior of the PodDisruptionBudget. Spec *PodDisruptionBudgetSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubePodDisruptionBudget__checks.go b/pods/imports/k8s/KubePodDisruptionBudget__checks.go index bb280631a..4839e969f 100644 --- a/pods/imports/k8s/KubePodDisruptionBudget__checks.go +++ b/pods/imports/k8s/KubePodDisruptionBudget__checks.go @@ -57,3 +57,4 @@ func validateNewKubePodDisruptionBudgetParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go b/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go index 2dd7dbdf8..e412aaec6 100644 --- a/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go +++ b/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go @@ -23,3 +23,4 @@ func validateKubePodDisruptionBudget_OfParameters(c constructs.IConstruct) error func validateNewKubePodDisruptionBudgetParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) error { return nil } + diff --git a/pods/imports/k8s/KubePodList.go b/pods/imports/k8s/KubePodList.go index acc93b191..45ac54eff 100644 --- a/pods/imports/k8s/KubePodList.go +++ b/pods/imports/k8s/KubePodList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePodList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PodList" API object. func NewKubePodList(scope constructs.Construct, id *string, props *KubePodListProps) KubePodList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePodList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodListProps.go b/pods/imports/k8s/KubePodListProps.go index 00dc1bbf4..9a4616969 100644 --- a/pods/imports/k8s/KubePodListProps.go +++ b/pods/imports/k8s/KubePodListProps.go @@ -1,5 +1,6 @@ package k8s + // PodList is a list of Pods. type KubePodListProps struct { // List of pods. @@ -11,3 +12,4 @@ type KubePodListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubePodList__checks.go b/pods/imports/k8s/KubePodList__checks.go index fceb14041..6524a0ba6 100644 --- a/pods/imports/k8s/KubePodList__checks.go +++ b/pods/imports/k8s/KubePodList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePodListParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubePodList__no_checks.go b/pods/imports/k8s/KubePodList__no_checks.go index 1d2ec331b..dd0e9a26d 100644 --- a/pods/imports/k8s/KubePodList__no_checks.go +++ b/pods/imports/k8s/KubePodList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePodList_OfParameters(c constructs.IConstruct) error { func validateNewKubePodListParameters(scope constructs.Construct, id *string, props *KubePodListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePodProps.go b/pods/imports/k8s/KubePodProps.go index c98e533c9..4ebec5301 100644 --- a/pods/imports/k8s/KubePodProps.go +++ b/pods/imports/k8s/KubePodProps.go @@ -1,5 +1,6 @@ package k8s + // Pod is a collection of containers that can run on a host. // // This resource is created by clients and scheduled onto hosts. @@ -13,3 +14,4 @@ type KubePodProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *PodSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go similarity index 68% rename from pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go rename to pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go index 232aa7cc5..8b43dae8b 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1.go +++ b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go @@ -9,8 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// ResourceClaimTemplateList is a collection of claim templates. -type KubeResourceClaimTemplateListV1Beta1 interface { +// PodSchedulingContextList is a collection of Pod scheduling objects. +type KubePodSchedulingContextListV1Alpha3 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeResourceClaimTemplateListV1Beta1 interface { ToString() *string } -// The jsii proxy struct for KubeResourceClaimTemplateListV1Beta1 -type jsiiProxy_KubeResourceClaimTemplateListV1Beta1 struct { +// The jsii proxy struct for KubePodSchedulingContextListV1Alpha3 +type jsiiProxy_KubePodSchedulingContextListV1Alpha3 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ApiGroup() *string { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ApiVersion() *string { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Kind() *string { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Kind() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Metadata() cdk8s.ApiObj return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Name() *string { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Name() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Node() constructs.Node { +func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) Node() constructs.Node return returns } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplateList" API object. -func NewKubeResourceClaimTemplateListV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) KubeResourceClaimTemplateListV1Beta1 { + +// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContextList" API object. +func NewKubePodSchedulingContextListV1Alpha3(scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) KubePodSchedulingContextListV1Alpha3 { _init_.Initialize() - if err := validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope, id, props); err != nil { + if err := validateNewKubePodSchedulingContextListV1Alpha3Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeResourceClaimTemplateListV1Beta1{} + j := jsiiProxy_KubePodSchedulingContextListV1Alpha3{} _jsii_.Create( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeResourceClaimTemplateListV1Beta1(scope constructs.Construct, id *str return &j } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplateList" API object. -func NewKubeResourceClaimTemplateListV1Beta1_Override(k KubeResourceClaimTemplateListV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) { +// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContextList" API object. +func NewKubePodSchedulingContextListV1Alpha3_Override(k KubePodSchedulingContextListV1Alpha3, scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeResourceClaimTemplateListV1Beta1_Override(k KubeResourceClaimTemplat // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimTemplateListV1Beta1_IsApiObject(o interface{}) *bool { +func KubePodSchedulingContextListV1Alpha3_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o); err != nil { + if err := validateKubePodSchedulingContextListV1Alpha3_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeResourceClaimTemplateListV1Beta1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimTemplateListV1Beta1_IsConstruct(x interface{}) *bool { +func KubePodSchedulingContextListV1Alpha3_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x); err != nil { + if err := validateKubePodSchedulingContextListV1Alpha3_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeResourceClaimTemplateListV1Beta1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaimTemplateList". +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.PodSchedulingContextList". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimTemplateListV1Beta1_Manifest(props *KubeResourceClaimTemplateListV1Beta1Props) interface{} { +func KubePodSchedulingContextListV1Alpha3_Manifest(props *KubePodSchedulingContextListV1Alpha3Props) interface{} { _init_.Initialize() - if err := validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props); err != nil { + if err := validateKubePodSchedulingContextListV1Alpha3_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeResourceClaimTemplateListV1Beta1_Manifest(props *KubeResourceClaimTempl // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeResourceClaimTemplateListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubePodSchedulingContextListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c); err != nil { + if err := validateKubePodSchedulingContextListV1Alpha3_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeResourceClaimTemplateListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiO return returns } -func KubeResourceClaimTemplateListV1Beta1_GVK() *cdk8s.GroupVersionKind { +func KubePodSchedulingContextListV1Alpha3_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeResourceClaimTemplateListV1Beta1", + "k8s.KubePodSchedulingContextListV1Alpha3", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) AddDependency(dependenc ) } -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) AddJsonPatch(ops ...cdk ) } -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ToJson() interface{} { +func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ToString() *string { +func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeResourceClaimTemplateListV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go new file mode 100644 index 000000000..c3f9b7198 --- /dev/null +++ b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go @@ -0,0 +1,11 @@ +package k8s + + +// PodSchedulingContextList is a collection of Pod scheduling objects. +type KubePodSchedulingContextListV1Alpha3Props struct { + // Items is the list of PodSchedulingContext objects. + Items *[]*KubePodSchedulingContextV1Alpha3Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go similarity index 71% rename from pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go rename to pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go index 3c434baab..a93c5f02d 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__checks.go +++ b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o interface{}) error { +func validateKubePodSchedulingContextListV1Alpha3_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o interf return nil } -func validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x interface{}) error { +func validateKubePodSchedulingContextListV1Alpha3_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x interf return nil } -func validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateListV1Beta1Props) error { +func validateKubePodSchedulingContextListV1Alpha3_ManifestParameters(props *KubePodSchedulingContextListV1Alpha3Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props *Kube return nil } -func validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c constructs.IConstruct) error { +func validateKubePodSchedulingContextListV1Alpha3_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c constructs.ICon return nil } -func validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) error { +func validateNewKubePodSchedulingContextListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope constructs. return nil } + diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go new file mode 100644 index 000000000..22c795eb4 --- /dev/null +++ b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodSchedulingContextListV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodSchedulingContextListV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodSchedulingContextListV1Alpha3_ManifestParameters(props *KubePodSchedulingContextListV1Alpha3Props) error { + return nil +} + +func validateKubePodSchedulingContextListV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodSchedulingContextListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go similarity index 67% rename from pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go rename to pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go index b5c46a9e2..9dbd1d122 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1.go +++ b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go @@ -9,10 +9,10 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// ResourceClaimTemplate is used to produce ResourceClaim objects. +// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode. // -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimTemplateV1Beta1 interface { +// This is an alpha type and requires enabling the DRAControlPlaneController feature gate. +type KubePodSchedulingContextV1Alpha3 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -49,12 +49,12 @@ type KubeResourceClaimTemplateV1Beta1 interface { ToString() *string } -// The jsii proxy struct for KubeResourceClaimTemplateV1Beta1 -type jsiiProxy_KubeResourceClaimTemplateV1Beta1 struct { +// The jsii proxy struct for KubePodSchedulingContextV1Alpha3 +type jsiiProxy_KubePodSchedulingContextV1Alpha3 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ApiGroup() *string { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -64,7 +64,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ApiVersion() *string { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -74,7 +74,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -84,7 +84,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Kind() *string { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Kind() *string { var returns *string _jsii_.Get( j, @@ -94,7 +94,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Kind() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -104,7 +104,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Metadata() cdk8s.ApiObjectM return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Name() *string { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Name() *string { var returns *string _jsii_.Get( j, @@ -114,7 +114,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Name() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Node() constructs.Node { +func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -124,17 +124,18 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Beta1) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplate" API object. -func NewKubeResourceClaimTemplateV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) KubeResourceClaimTemplateV1Beta1 { + +// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContext" API object. +func NewKubePodSchedulingContextV1Alpha3(scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) KubePodSchedulingContextV1Alpha3 { _init_.Initialize() - if err := validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope, id, props); err != nil { + if err := validateNewKubePodSchedulingContextV1Alpha3Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeResourceClaimTemplateV1Beta1{} + j := jsiiProxy_KubePodSchedulingContextV1Alpha3{} _jsii_.Create( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", []interface{}{scope, id, props}, &j, ) @@ -142,12 +143,12 @@ func NewKubeResourceClaimTemplateV1Beta1(scope constructs.Construct, id *string, return &j } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimTemplate" API object. -func NewKubeResourceClaimTemplateV1Beta1_Override(k KubeResourceClaimTemplateV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) { +// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContext" API object. +func NewKubePodSchedulingContextV1Alpha3_Override(k KubePodSchedulingContextV1Alpha3, scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", []interface{}{scope, id, props}, k, ) @@ -156,16 +157,16 @@ func NewKubeResourceClaimTemplateV1Beta1_Override(k KubeResourceClaimTemplateV1B // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimTemplateV1Beta1_IsApiObject(o interface{}) *bool { +func KubePodSchedulingContextV1Alpha3_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o); err != nil { + if err := validateKubePodSchedulingContextV1Alpha3_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", "isApiObject", []interface{}{o}, &returns, @@ -191,16 +192,16 @@ func KubeResourceClaimTemplateV1Beta1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimTemplateV1Beta1_IsConstruct(x interface{}) *bool { +func KubePodSchedulingContextV1Alpha3_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x); err != nil { + if err := validateKubePodSchedulingContextV1Alpha3_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", "isConstruct", []interface{}{x}, &returns, @@ -209,19 +210,19 @@ func KubeResourceClaimTemplateV1Beta1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaimTemplate". +// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.PodSchedulingContext". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimTemplateV1Beta1_Manifest(props *KubeResourceClaimTemplateV1Beta1Props) interface{} { +func KubePodSchedulingContextV1Alpha3_Manifest(props *KubePodSchedulingContextV1Alpha3Props) interface{} { _init_.Initialize() - if err := validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props); err != nil { + if err := validateKubePodSchedulingContextV1Alpha3_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", "manifest", []interface{}{props}, &returns, @@ -235,16 +236,16 @@ func KubeResourceClaimTemplateV1Beta1_Manifest(props *KubeResourceClaimTemplateV // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeResourceClaimTemplateV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubePodSchedulingContextV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeResourceClaimTemplateV1Beta1_OfParameters(c); err != nil { + if err := validateKubePodSchedulingContextV1Alpha3_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", "of", []interface{}{c}, &returns, @@ -253,18 +254,18 @@ func KubeResourceClaimTemplateV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObjec return returns } -func KubeResourceClaimTemplateV1Beta1_GVK() *cdk8s.GroupVersionKind { +func KubePodSchedulingContextV1Alpha3_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeResourceClaimTemplateV1Beta1", + "k8s.KubePodSchedulingContextV1Alpha3", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -277,7 +278,7 @@ func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) AddDependency(dependencies ) } -func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -290,7 +291,7 @@ func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) AddJsonPatch(ops ...cdk8s.J ) } -func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ToJson() interface{} { +func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -303,7 +304,7 @@ func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ToString() *string { +func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) ToString() *string { var returns *string _jsii_.Invoke( @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeResourceClaimTemplateV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go new file mode 100644 index 000000000..089c9a1ac --- /dev/null +++ b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go @@ -0,0 +1,13 @@ +package k8s + + +// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode. +// +// This is an alpha type and requires enabling the DRAControlPlaneController feature gate. +type KubePodSchedulingContextV1Alpha3Props struct { + // Spec describes where resources for the Pod are needed. + Spec *PodSchedulingContextSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` + // Standard object metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go similarity index 71% rename from pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go rename to pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go index 4f86674da..c81cb3989 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__checks.go +++ b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o interface{}) error { +func validateKubePodSchedulingContextV1Alpha3_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o interface{ return nil } -func validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x interface{}) error { +func validateKubePodSchedulingContextV1Alpha3_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x interface{ return nil } -func validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateV1Beta1Props) error { +func validateKubePodSchedulingContextV1Alpha3_ManifestParameters(props *KubePodSchedulingContextV1Alpha3Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props *KubeReso return nil } -func validateKubeResourceClaimTemplateV1Beta1_OfParameters(c constructs.IConstruct) error { +func validateKubePodSchedulingContextV1Alpha3_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeResourceClaimTemplateV1Beta1_OfParameters(c constructs.IConstru return nil } -func validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) error { +func validateNewKubePodSchedulingContextV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope constructs.Cons return nil } + diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go new file mode 100644 index 000000000..4fa76cad5 --- /dev/null +++ b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePodSchedulingContextV1Alpha3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePodSchedulingContextV1Alpha3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePodSchedulingContextV1Alpha3_ManifestParameters(props *KubePodSchedulingContextV1Alpha3Props) error { + return nil +} + +func validateKubePodSchedulingContextV1Alpha3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePodSchedulingContextV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubePodTemplate.go b/pods/imports/k8s/KubePodTemplate.go index 5d42ac74e..9a94f9c20 100644 --- a/pods/imports/k8s/KubePodTemplate.go +++ b/pods/imports/k8s/KubePodTemplate.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePodTemplate) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PodTemplate" API object. func NewKubePodTemplate(scope constructs.Construct, id *string, props *KubePodTemplateProps) KubePodTemplate { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePodTemplate) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodTemplateList.go b/pods/imports/k8s/KubePodTemplateList.go index a857643cb..84b958a1a 100644 --- a/pods/imports/k8s/KubePodTemplateList.go +++ b/pods/imports/k8s/KubePodTemplateList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePodTemplateList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.PodTemplateList" API object. func NewKubePodTemplateList(scope constructs.Construct, id *string, props *KubePodTemplateListProps) KubePodTemplateList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePodTemplateList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePodTemplateListProps.go b/pods/imports/k8s/KubePodTemplateListProps.go index 2ec5c8e5c..3b6da5501 100644 --- a/pods/imports/k8s/KubePodTemplateListProps.go +++ b/pods/imports/k8s/KubePodTemplateListProps.go @@ -1,5 +1,6 @@ package k8s + // PodTemplateList is a list of PodTemplates. type KubePodTemplateListProps struct { // List of pod templates. @@ -9,3 +10,4 @@ type KubePodTemplateListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubePodTemplateList__checks.go b/pods/imports/k8s/KubePodTemplateList__checks.go index bc7da1503..d9c4a067f 100644 --- a/pods/imports/k8s/KubePodTemplateList__checks.go +++ b/pods/imports/k8s/KubePodTemplateList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePodTemplateListParameters(scope constructs.Construct, id *st return nil } + diff --git a/pods/imports/k8s/KubePodTemplateList__no_checks.go b/pods/imports/k8s/KubePodTemplateList__no_checks.go index 1347545c0..5e4d028ab 100644 --- a/pods/imports/k8s/KubePodTemplateList__no_checks.go +++ b/pods/imports/k8s/KubePodTemplateList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePodTemplateList_OfParameters(c constructs.IConstruct) error { func validateNewKubePodTemplateListParameters(scope constructs.Construct, id *string, props *KubePodTemplateListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePodTemplateProps.go b/pods/imports/k8s/KubePodTemplateProps.go index e85e4355f..772308a9b 100644 --- a/pods/imports/k8s/KubePodTemplateProps.go +++ b/pods/imports/k8s/KubePodTemplateProps.go @@ -1,5 +1,6 @@ package k8s + // PodTemplate describes a template for creating copies of a predefined pod. type KubePodTemplateProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubePodTemplateProps struct { // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` } + diff --git a/pods/imports/k8s/KubePodTemplate__checks.go b/pods/imports/k8s/KubePodTemplate__checks.go index 42f77b93e..483487be4 100644 --- a/pods/imports/k8s/KubePodTemplate__checks.go +++ b/pods/imports/k8s/KubePodTemplate__checks.go @@ -57,3 +57,4 @@ func validateNewKubePodTemplateParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubePodTemplate__no_checks.go b/pods/imports/k8s/KubePodTemplate__no_checks.go index 72ff7156a..c436668c0 100644 --- a/pods/imports/k8s/KubePodTemplate__no_checks.go +++ b/pods/imports/k8s/KubePodTemplate__no_checks.go @@ -23,3 +23,4 @@ func validateKubePodTemplate_OfParameters(c constructs.IConstruct) error { func validateNewKubePodTemplateParameters(scope constructs.Construct, id *string, props *KubePodTemplateProps) error { return nil } + diff --git a/pods/imports/k8s/KubePod__checks.go b/pods/imports/k8s/KubePod__checks.go index e70337403..9714490bc 100644 --- a/pods/imports/k8s/KubePod__checks.go +++ b/pods/imports/k8s/KubePod__checks.go @@ -57,3 +57,4 @@ func validateNewKubePodParameters(scope constructs.Construct, id *string, props return nil } + diff --git a/pods/imports/k8s/KubePod__no_checks.go b/pods/imports/k8s/KubePod__no_checks.go index 37224b400..5f55f5f9e 100644 --- a/pods/imports/k8s/KubePod__no_checks.go +++ b/pods/imports/k8s/KubePod__no_checks.go @@ -23,3 +23,4 @@ func validateKubePod_OfParameters(c constructs.IConstruct) error { func validateNewKubePodParameters(scope constructs.Construct, id *string, props *KubePodProps) error { return nil } + diff --git a/pods/imports/k8s/KubePriorityClass.go b/pods/imports/k8s/KubePriorityClass.go index dfac3e62f..e039310fe 100644 --- a/pods/imports/k8s/KubePriorityClass.go +++ b/pods/imports/k8s/KubePriorityClass.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubePriorityClass) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.scheduling.v1.PriorityClass" API object. func NewKubePriorityClass(scope constructs.Construct, id *string, props *KubePriorityClassProps) KubePriorityClass { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubePriorityClass) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePriorityClassList.go b/pods/imports/k8s/KubePriorityClassList.go index 25aaa9a47..4dc78bcae 100644 --- a/pods/imports/k8s/KubePriorityClassList.go +++ b/pods/imports/k8s/KubePriorityClassList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePriorityClassList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.scheduling.v1.PriorityClassList" API object. func NewKubePriorityClassList(scope constructs.Construct, id *string, props *KubePriorityClassListProps) KubePriorityClassList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePriorityClassList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePriorityClassListProps.go b/pods/imports/k8s/KubePriorityClassListProps.go index 736b738ee..7f017a59f 100644 --- a/pods/imports/k8s/KubePriorityClassListProps.go +++ b/pods/imports/k8s/KubePriorityClassListProps.go @@ -1,5 +1,6 @@ package k8s + // PriorityClassList is a collection of priority classes. type KubePriorityClassListProps struct { // items is the list of PriorityClasses. @@ -7,3 +8,4 @@ type KubePriorityClassListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubePriorityClassList__checks.go b/pods/imports/k8s/KubePriorityClassList__checks.go index d8a15bddf..3127fee8e 100644 --- a/pods/imports/k8s/KubePriorityClassList__checks.go +++ b/pods/imports/k8s/KubePriorityClassList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePriorityClassListParameters(scope constructs.Construct, id * return nil } + diff --git a/pods/imports/k8s/KubePriorityClassList__no_checks.go b/pods/imports/k8s/KubePriorityClassList__no_checks.go index b2fdb5469..241fb9c21 100644 --- a/pods/imports/k8s/KubePriorityClassList__no_checks.go +++ b/pods/imports/k8s/KubePriorityClassList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePriorityClassList_OfParameters(c constructs.IConstruct) error { func validateNewKubePriorityClassListParameters(scope constructs.Construct, id *string, props *KubePriorityClassListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePriorityClassProps.go b/pods/imports/k8s/KubePriorityClassProps.go index cb1d90db4..c1d1c24f9 100644 --- a/pods/imports/k8s/KubePriorityClassProps.go +++ b/pods/imports/k8s/KubePriorityClassProps.go @@ -1,5 +1,6 @@ package k8s + // PriorityClass defines mapping from a priority class name to the priority integer value. // // The value can be any valid integer. @@ -25,3 +26,4 @@ type KubePriorityClassProps struct { // PreemptionPolicy *string `field:"optional" json:"preemptionPolicy" yaml:"preemptionPolicy"` } + diff --git a/pods/imports/k8s/KubePriorityClass__checks.go b/pods/imports/k8s/KubePriorityClass__checks.go index 5fa8c6d56..55b8128b2 100644 --- a/pods/imports/k8s/KubePriorityClass__checks.go +++ b/pods/imports/k8s/KubePriorityClass__checks.go @@ -63,3 +63,4 @@ func validateNewKubePriorityClassParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubePriorityClass__no_checks.go b/pods/imports/k8s/KubePriorityClass__no_checks.go index d2fd488ee..7897f67aa 100644 --- a/pods/imports/k8s/KubePriorityClass__no_checks.go +++ b/pods/imports/k8s/KubePriorityClass__no_checks.go @@ -23,3 +23,4 @@ func validateKubePriorityClass_OfParameters(c constructs.IConstruct) error { func validateNewKubePriorityClassParameters(scope constructs.Construct, id *string, props *KubePriorityClassProps) error { return nil } + diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration.go b/pods/imports/k8s/KubePriorityLevelConfiguration.go index 680dd16dd..285fe84bf 100644 --- a/pods/imports/k8s/KubePriorityLevelConfiguration.go +++ b/pods/imports/k8s/KubePriorityLevelConfiguration.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePriorityLevelConfiguration) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" API object. func NewKubePriorityLevelConfiguration(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) KubePriorityLevelConfiguration { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePriorityLevelConfiguration) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList.go b/pods/imports/k8s/KubePriorityLevelConfigurationList.go index d59dc1db8..97451c92e 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubePriorityLevelConfigurationList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" API object. func NewKubePriorityLevelConfigurationList(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) KubePriorityLevelConfigurationList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubePriorityLevelConfigurationList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go b/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go index 76b19185a..05331c000 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go @@ -1,5 +1,6 @@ package k8s + // PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. type KubePriorityLevelConfigurationListProps struct { // `items` is a list of request-priorities. @@ -9,3 +10,4 @@ type KubePriorityLevelConfigurationListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go similarity index 61% rename from pods/imports/k8s/KubeResourceClaimListV1Beta1.go rename to pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go index 44d754d8f..77f1aa5f5 100644 --- a/pods/imports/k8s/KubeResourceClaimListV1Beta1.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go @@ -9,8 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// ResourceClaimList is a collection of claims. -type KubeResourceClaimListV1Beta1 interface { +// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. +type KubePriorityLevelConfigurationListV1Beta3 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeResourceClaimListV1Beta1 interface { ToString() *string } -// The jsii proxy struct for KubeResourceClaimListV1Beta1 -type jsiiProxy_KubeResourceClaimListV1Beta1 struct { +// The jsii proxy struct for KubePriorityLevelConfigurationListV1Beta3 +type jsiiProxy_KubePriorityLevelConfigurationListV1Beta3 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) ApiGroup() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) ApiVersion() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Kind() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Kind() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Metadata() cdk8s.ApiObjectMetad return returns } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Name() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Name() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Node() constructs.Node { +func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeResourceClaimListV1Beta1) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimList" API object. -func NewKubeResourceClaimListV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) KubeResourceClaimListV1Beta1 { + +// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList" API object. +func NewKubePriorityLevelConfigurationListV1Beta3(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) KubePriorityLevelConfigurationListV1Beta3 { _init_.Initialize() - if err := validateNewKubeResourceClaimListV1Beta1Parameters(scope, id, props); err != nil { + if err := validateNewKubePriorityLevelConfigurationListV1Beta3Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeResourceClaimListV1Beta1{} + j := jsiiProxy_KubePriorityLevelConfigurationListV1Beta3{} _jsii_.Create( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeResourceClaimListV1Beta1(scope constructs.Construct, id *string, pro return &j } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaimList" API object. -func NewKubeResourceClaimListV1Beta1_Override(k KubeResourceClaimListV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) { +// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList" API object. +func NewKubePriorityLevelConfigurationListV1Beta3_Override(k KubePriorityLevelConfigurationListV1Beta3, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeResourceClaimListV1Beta1_Override(k KubeResourceClaimListV1Beta1, sc // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimListV1Beta1_IsApiObject(o interface{}) *bool { +func KubePriorityLevelConfigurationListV1Beta3_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimListV1Beta1_IsApiObjectParameters(o); err != nil { + if err := validateKubePriorityLevelConfigurationListV1Beta3_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeResourceClaimListV1Beta1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimListV1Beta1_IsConstruct(x interface{}) *bool { +func KubePriorityLevelConfigurationListV1Beta3_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimListV1Beta1_IsConstructParameters(x); err != nil { + if err := validateKubePriorityLevelConfigurationListV1Beta3_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeResourceClaimListV1Beta1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaimList". +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimListV1Beta1_Manifest(props *KubeResourceClaimListV1Beta1Props) interface{} { +func KubePriorityLevelConfigurationListV1Beta3_Manifest(props *KubePriorityLevelConfigurationListV1Beta3Props) interface{} { _init_.Initialize() - if err := validateKubeResourceClaimListV1Beta1_ManifestParameters(props); err != nil { + if err := validateKubePriorityLevelConfigurationListV1Beta3_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeResourceClaimListV1Beta1_Manifest(props *KubeResourceClaimListV1Beta1Pr // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeResourceClaimListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubePriorityLevelConfigurationListV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeResourceClaimListV1Beta1_OfParameters(c); err != nil { + if err := validateKubePriorityLevelConfigurationListV1Beta3_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeResourceClaimListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { return returns } -func KubeResourceClaimListV1Beta1_GVK() *cdk8s.GroupVersionKind { +func KubePriorityLevelConfigurationListV1Beta3_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeResourceClaimListV1Beta1", + "k8s.KubePriorityLevelConfigurationListV1Beta3", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeResourceClaimListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeResourceClaimListV1Beta1) AddDependency(dependencies ...c ) } -func (k *jsiiProxy_KubeResourceClaimListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeResourceClaimListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonP ) } -func (k *jsiiProxy_KubeResourceClaimListV1Beta1) ToJson() interface{} { +func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeResourceClaimListV1Beta1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeResourceClaimListV1Beta1) ToString() *string { +func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeResourceClaimListV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go new file mode 100644 index 000000000..c2e06258a --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go @@ -0,0 +1,13 @@ +package k8s + + +// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. +type KubePriorityLevelConfigurationListV1Beta3Props struct { + // `items` is a list of request-priorities. + Items *[]*KubePriorityLevelConfigurationV1Beta3Props `field:"required" json:"items" yaml:"items"` + // `metadata` is the standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go similarity index 65% rename from pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go rename to pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go index a774fd041..d600b6cc4 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Beta1__checks.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o interface{}) error { +func validateKubePriorityLevelConfigurationListV1Beta3_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o interface{}) error return nil } -func validateKubeResourceClaimV1Beta1_IsConstructParameters(x interface{}) error { +func validateKubePriorityLevelConfigurationListV1Beta3_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeResourceClaimV1Beta1_IsConstructParameters(x interface{}) error return nil } -func validateKubeResourceClaimV1Beta1_ManifestParameters(props *KubeResourceClaimV1Beta1Props) error { +func validateKubePriorityLevelConfigurationListV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationListV1Beta3Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeResourceClaimV1Beta1_ManifestParameters(props *KubeResourceClai return nil } -func validateKubeResourceClaimV1Beta1_OfParameters(c constructs.IConstruct) error { +func validateKubePriorityLevelConfigurationListV1Beta3_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeResourceClaimV1Beta1_OfParameters(c constructs.IConstruct) erro return nil } -func validateNewKubeResourceClaimV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) error { +func validateNewKubePriorityLevelConfigurationListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimV1Beta1Parameters(scope constructs.Construct, i return nil } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go new file mode 100644 index 000000000..bf40cca55 --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePriorityLevelConfigurationListV1Beta3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePriorityLevelConfigurationListV1Beta3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePriorityLevelConfigurationListV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationListV1Beta3Props) error { + return nil +} + +func validateKubePriorityLevelConfigurationListV1Beta3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePriorityLevelConfigurationListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go index 2f9c8c90f..1d7259204 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go @@ -63,3 +63,4 @@ func validateNewKubePriorityLevelConfigurationListParameters(scope constructs.Co return nil } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go index 89aac0087..228d1bdfb 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go @@ -23,3 +23,4 @@ func validateKubePriorityLevelConfigurationList_OfParameters(c constructs.IConst func validateNewKubePriorityLevelConfigurationListParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) error { return nil } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationProps.go b/pods/imports/k8s/KubePriorityLevelConfigurationProps.go index ebbb83bcf..e129833a7 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationProps.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationProps.go @@ -1,5 +1,6 @@ package k8s + // PriorityLevelConfiguration represents the configuration of a priority level. type KubePriorityLevelConfigurationProps struct { // `metadata` is the standard object's metadata. @@ -11,3 +12,4 @@ type KubePriorityLevelConfigurationProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *PriorityLevelConfigurationSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go similarity index 62% rename from pods/imports/k8s/KubeResourceClaimV1Beta1.go rename to pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go index c8f86c478..b13261e34 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Beta1.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go @@ -9,12 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. -// -// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimV1Beta1 interface { +// PriorityLevelConfiguration represents the configuration of a priority level. +type KubePriorityLevelConfigurationV1Beta3 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -51,12 +47,12 @@ type KubeResourceClaimV1Beta1 interface { ToString() *string } -// The jsii proxy struct for KubeResourceClaimV1Beta1 -type jsiiProxy_KubeResourceClaimV1Beta1 struct { +// The jsii proxy struct for KubePriorityLevelConfigurationV1Beta3 +type jsiiProxy_KubePriorityLevelConfigurationV1Beta3 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) ApiGroup() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -66,7 +62,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) ApiVersion() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -76,7 +72,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -86,7 +82,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) Kind() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Kind() *string { var returns *string _jsii_.Get( j, @@ -96,7 +92,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) Kind() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -106,7 +102,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) Metadata() cdk8s.ApiObjectMetadataD return returns } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) Name() *string { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Name() *string { var returns *string _jsii_.Get( j, @@ -116,7 +112,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) Name() *string { return returns } -func (j *jsiiProxy_KubeResourceClaimV1Beta1) Node() constructs.Node { +func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -126,17 +122,18 @@ func (j *jsiiProxy_KubeResourceClaimV1Beta1) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaim" API object. -func NewKubeResourceClaimV1Beta1(scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) KubeResourceClaimV1Beta1 { + +// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" API object. +func NewKubePriorityLevelConfigurationV1Beta3(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) KubePriorityLevelConfigurationV1Beta3 { _init_.Initialize() - if err := validateNewKubeResourceClaimV1Beta1Parameters(scope, id, props); err != nil { + if err := validateNewKubePriorityLevelConfigurationV1Beta3Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeResourceClaimV1Beta1{} + j := jsiiProxy_KubePriorityLevelConfigurationV1Beta3{} _jsii_.Create( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", []interface{}{scope, id, props}, &j, ) @@ -144,12 +141,12 @@ func NewKubeResourceClaimV1Beta1(scope constructs.Construct, id *string, props * return &j } -// Defines a "io.k8s.api.resource.v1beta1.ResourceClaim" API object. -func NewKubeResourceClaimV1Beta1_Override(k KubeResourceClaimV1Beta1, scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) { +// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" API object. +func NewKubePriorityLevelConfigurationV1Beta3_Override(k KubePriorityLevelConfigurationV1Beta3, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", []interface{}{scope, id, props}, k, ) @@ -158,16 +155,16 @@ func NewKubeResourceClaimV1Beta1_Override(k KubeResourceClaimV1Beta1, scope cons // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimV1Beta1_IsApiObject(o interface{}) *bool { +func KubePriorityLevelConfigurationV1Beta3_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o); err != nil { + if err := validateKubePriorityLevelConfigurationV1Beta3_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", "isApiObject", []interface{}{o}, &returns, @@ -193,16 +190,16 @@ func KubeResourceClaimV1Beta1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimV1Beta1_IsConstruct(x interface{}) *bool { +func KubePriorityLevelConfigurationV1Beta3_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceClaimV1Beta1_IsConstructParameters(x); err != nil { + if err := validateKubePriorityLevelConfigurationV1Beta3_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", "isConstruct", []interface{}{x}, &returns, @@ -211,19 +208,19 @@ func KubeResourceClaimV1Beta1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceClaim". +// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimV1Beta1_Manifest(props *KubeResourceClaimV1Beta1Props) interface{} { +func KubePriorityLevelConfigurationV1Beta3_Manifest(props *KubePriorityLevelConfigurationV1Beta3Props) interface{} { _init_.Initialize() - if err := validateKubeResourceClaimV1Beta1_ManifestParameters(props); err != nil { + if err := validateKubePriorityLevelConfigurationV1Beta3_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", "manifest", []interface{}{props}, &returns, @@ -237,16 +234,16 @@ func KubeResourceClaimV1Beta1_Manifest(props *KubeResourceClaimV1Beta1Props) int // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeResourceClaimV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubePriorityLevelConfigurationV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeResourceClaimV1Beta1_OfParameters(c); err != nil { + if err := validateKubePriorityLevelConfigurationV1Beta3_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", "of", []interface{}{c}, &returns, @@ -255,18 +252,18 @@ func KubeResourceClaimV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { return returns } -func KubeResourceClaimV1Beta1_GVK() *cdk8s.GroupVersionKind { +func KubePriorityLevelConfigurationV1Beta3_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeResourceClaimV1Beta1", + "k8s.KubePriorityLevelConfigurationV1Beta3", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeResourceClaimV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -279,7 +276,7 @@ func (k *jsiiProxy_KubeResourceClaimV1Beta1) AddDependency(dependencies ...const ) } -func (k *jsiiProxy_KubeResourceClaimV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -292,7 +289,7 @@ func (k *jsiiProxy_KubeResourceClaimV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch ) } -func (k *jsiiProxy_KubeResourceClaimV1Beta1) ToJson() interface{} { +func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -305,7 +302,7 @@ func (k *jsiiProxy_KubeResourceClaimV1Beta1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeResourceClaimV1Beta1) ToString() *string { +func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ToString() *string { var returns *string _jsii_.Invoke( @@ -317,3 +314,4 @@ func (k *jsiiProxy_KubeResourceClaimV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go new file mode 100644 index 000000000..9b13d61ac --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go @@ -0,0 +1,15 @@ +package k8s + + +// PriorityLevelConfiguration represents the configuration of a priority level. +type KubePriorityLevelConfigurationV1Beta3Props struct { + // `metadata` is the standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // `spec` is the specification of the desired behavior of a "request-priority". + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + Spec *PriorityLevelConfigurationSpecV1Beta3 `field:"optional" json:"spec" yaml:"spec"` +} + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go similarity index 59% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go rename to pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go index e19c40577..d58bdc619 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1__checks.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { +func validateKubePriorityLevelConfigurationV1Beta3_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o return nil } -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { +func validateKubePriorityLevelConfigurationV1Beta3_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x return nil } -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { +func validateKubePriorityLevelConfigurationV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationV1Beta3Props) error { if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { return err } @@ -34,7 +34,7 @@ func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props return nil } -func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { +func validateKubePriorityLevelConfigurationV1Beta3_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -42,7 +42,7 @@ func validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c construct return nil } -func validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) error { +func validateNewKubePriorityLevelConfigurationV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -57,3 +57,4 @@ func validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope const return nil } + diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go new file mode 100644 index 000000000..e396725b2 --- /dev/null +++ b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubePriorityLevelConfigurationV1Beta3_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubePriorityLevelConfigurationV1Beta3_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubePriorityLevelConfigurationV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationV1Beta3Props) error { + return nil +} + +func validateKubePriorityLevelConfigurationV1Beta3_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubePriorityLevelConfigurationV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go b/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go index e32b91c04..07c44ca8a 100644 --- a/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go +++ b/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go @@ -57,3 +57,4 @@ func validateNewKubePriorityLevelConfigurationParameters(scope constructs.Constr return nil } + diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go index fbdf3a645..f5a92c168 100644 --- a/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go +++ b/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go @@ -23,3 +23,4 @@ func validateKubePriorityLevelConfiguration_OfParameters(c constructs.IConstruct func validateNewKubePriorityLevelConfigurationParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) error { return nil } + diff --git a/pods/imports/k8s/KubeReplicaSet.go b/pods/imports/k8s/KubeReplicaSet.go index 4e5b22d80..367f162c7 100644 --- a/pods/imports/k8s/KubeReplicaSet.go +++ b/pods/imports/k8s/KubeReplicaSet.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeReplicaSet) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.ReplicaSet" API object. func NewKubeReplicaSet(scope constructs.Construct, id *string, props *KubeReplicaSetProps) KubeReplicaSet { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeReplicaSet) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeReplicaSetList.go b/pods/imports/k8s/KubeReplicaSetList.go index 6fcac2a44..8c85bb294 100644 --- a/pods/imports/k8s/KubeReplicaSetList.go +++ b/pods/imports/k8s/KubeReplicaSetList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeReplicaSetList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.ReplicaSetList" API object. func NewKubeReplicaSetList(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) KubeReplicaSetList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeReplicaSetList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeReplicaSetListProps.go b/pods/imports/k8s/KubeReplicaSetListProps.go index 7a9375925..fbfa95219 100644 --- a/pods/imports/k8s/KubeReplicaSetListProps.go +++ b/pods/imports/k8s/KubeReplicaSetListProps.go @@ -1,5 +1,6 @@ package k8s + // ReplicaSetList is a collection of ReplicaSets. type KubeReplicaSetListProps struct { // List of ReplicaSets. @@ -11,3 +12,4 @@ type KubeReplicaSetListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeReplicaSetList__checks.go b/pods/imports/k8s/KubeReplicaSetList__checks.go index bd0ea87fd..36f37f838 100644 --- a/pods/imports/k8s/KubeReplicaSetList__checks.go +++ b/pods/imports/k8s/KubeReplicaSetList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeReplicaSetListParameters(scope constructs.Construct, id *str return nil } + diff --git a/pods/imports/k8s/KubeReplicaSetList__no_checks.go b/pods/imports/k8s/KubeReplicaSetList__no_checks.go index 11ec2ef28..5ab7a4ebb 100644 --- a/pods/imports/k8s/KubeReplicaSetList__no_checks.go +++ b/pods/imports/k8s/KubeReplicaSetList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeReplicaSetList_OfParameters(c constructs.IConstruct) error { func validateNewKubeReplicaSetListParameters(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeReplicaSetProps.go b/pods/imports/k8s/KubeReplicaSetProps.go index f6964773e..0e1c3fdf5 100644 --- a/pods/imports/k8s/KubeReplicaSetProps.go +++ b/pods/imports/k8s/KubeReplicaSetProps.go @@ -1,5 +1,6 @@ package k8s + // ReplicaSet ensures that a specified number of pod replicas are running at any given time. type KubeReplicaSetProps struct { // If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. @@ -11,3 +12,4 @@ type KubeReplicaSetProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *ReplicaSetSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeReplicaSet__checks.go b/pods/imports/k8s/KubeReplicaSet__checks.go index 7647dcd2e..3fb182432 100644 --- a/pods/imports/k8s/KubeReplicaSet__checks.go +++ b/pods/imports/k8s/KubeReplicaSet__checks.go @@ -57,3 +57,4 @@ func validateNewKubeReplicaSetParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeReplicaSet__no_checks.go b/pods/imports/k8s/KubeReplicaSet__no_checks.go index 1e3221556..539e53deb 100644 --- a/pods/imports/k8s/KubeReplicaSet__no_checks.go +++ b/pods/imports/k8s/KubeReplicaSet__no_checks.go @@ -23,3 +23,4 @@ func validateKubeReplicaSet_OfParameters(c constructs.IConstruct) error { func validateNewKubeReplicaSetParameters(scope constructs.Construct, id *string, props *KubeReplicaSetProps) error { return nil } + diff --git a/pods/imports/k8s/KubeReplicationController.go b/pods/imports/k8s/KubeReplicationController.go index 3d89c696b..ded7d8ba4 100644 --- a/pods/imports/k8s/KubeReplicationController.go +++ b/pods/imports/k8s/KubeReplicationController.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeReplicationController) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ReplicationController" API object. func NewKubeReplicationController(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) KubeReplicationController { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeReplicationController) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeReplicationControllerList.go b/pods/imports/k8s/KubeReplicationControllerList.go index fddf9121c..58a59c28e 100644 --- a/pods/imports/k8s/KubeReplicationControllerList.go +++ b/pods/imports/k8s/KubeReplicationControllerList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeReplicationControllerList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ReplicationControllerList" API object. func NewKubeReplicationControllerList(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) KubeReplicationControllerList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeReplicationControllerList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeReplicationControllerListProps.go b/pods/imports/k8s/KubeReplicationControllerListProps.go index 20389f1db..cb9674324 100644 --- a/pods/imports/k8s/KubeReplicationControllerListProps.go +++ b/pods/imports/k8s/KubeReplicationControllerListProps.go @@ -1,5 +1,6 @@ package k8s + // ReplicationControllerList is a collection of replication controllers. type KubeReplicationControllerListProps struct { // List of replication controllers. @@ -11,3 +12,4 @@ type KubeReplicationControllerListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeReplicationControllerList__checks.go b/pods/imports/k8s/KubeReplicationControllerList__checks.go index 866dddd8f..8d4f7e3bc 100644 --- a/pods/imports/k8s/KubeReplicationControllerList__checks.go +++ b/pods/imports/k8s/KubeReplicationControllerList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeReplicationControllerListParameters(scope constructs.Constru return nil } + diff --git a/pods/imports/k8s/KubeReplicationControllerList__no_checks.go b/pods/imports/k8s/KubeReplicationControllerList__no_checks.go index 29a832a0e..7246962f7 100644 --- a/pods/imports/k8s/KubeReplicationControllerList__no_checks.go +++ b/pods/imports/k8s/KubeReplicationControllerList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeReplicationControllerList_OfParameters(c constructs.IConstruct) func validateNewKubeReplicationControllerListParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeReplicationControllerProps.go b/pods/imports/k8s/KubeReplicationControllerProps.go index fbfb72b98..a6086573d 100644 --- a/pods/imports/k8s/KubeReplicationControllerProps.go +++ b/pods/imports/k8s/KubeReplicationControllerProps.go @@ -1,5 +1,6 @@ package k8s + // ReplicationController represents the configuration of a replication controller. type KubeReplicationControllerProps struct { // If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. @@ -11,3 +12,4 @@ type KubeReplicationControllerProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *ReplicationControllerSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeReplicationController__checks.go b/pods/imports/k8s/KubeReplicationController__checks.go index e835e37c4..279a34a9f 100644 --- a/pods/imports/k8s/KubeReplicationController__checks.go +++ b/pods/imports/k8s/KubeReplicationController__checks.go @@ -57,3 +57,4 @@ func validateNewKubeReplicationControllerParameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeReplicationController__no_checks.go b/pods/imports/k8s/KubeReplicationController__no_checks.go index 3ada28106..cd75cd26c 100644 --- a/pods/imports/k8s/KubeReplicationController__no_checks.go +++ b/pods/imports/k8s/KubeReplicationController__no_checks.go @@ -23,3 +23,4 @@ func validateKubeReplicationController_OfParameters(c constructs.IConstruct) err func validateNewKubeReplicationControllerParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go index 9687bf449..c8eb72b2a 100644 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimList" API object. func NewKubeResourceClaimListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) KubeResourceClaimListV1Alpha3 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go index b02bed03b..0bba3d1b0 100644 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // ResourceClaimList is a collection of claims. type KubeResourceClaimListV1Alpha3Props struct { // Items is the list of resource claims. @@ -7,3 +8,4 @@ type KubeResourceClaimListV1Alpha3Props struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go index 48e4b7ad1..564517f61 100644 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimListV1Alpha3Parameters(scope constructs.Constru return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go index aa49927cf..bfbef57a4 100644 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceClaimListV1Alpha3_OfParameters(c constructs.IConstruct) func validateNewKubeResourceClaimListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go deleted file mode 100644 index e8b40208f..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Beta1Props.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - -// ResourceClaimList is a collection of claims. -type KubeResourceClaimListV1Beta1Props struct { - // Items is the list of resource claims. - Items *[]*KubeResourceClaimV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go deleted file mode 100644 index 078e22eb7..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Beta1__checks.go +++ /dev/null @@ -1,65 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceClaimListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimListV1Beta1_ManifestParameters(props *KubeResourceClaimListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceClaimListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceClaimListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} diff --git a/pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go deleted file mode 100644 index 65a1ae019..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimListV1Beta1_ManifestParameters(props *KubeResourceClaimListV1Beta1Props) error { - return nil -} - -func validateKubeResourceClaimListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go index 56783a003..4d991d90d 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Node() constructs.Node return returns } + // Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList" API object. func NewKubeResourceClaimTemplateListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) KubeResourceClaimTemplateListV1Alpha3 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go index 57eacb054..63a104f9b 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // ResourceClaimTemplateList is a collection of claim templates. type KubeResourceClaimTemplateListV1Alpha3Props struct { // Items is the list of resource claim templates. @@ -7,3 +8,4 @@ type KubeResourceClaimTemplateListV1Alpha3Props struct { // Standard list metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go index 61b7a19c6..4dde6ed62 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope constructs return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go index f52c218ab..13c32c654 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c constructs.ICo func validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go deleted file mode 100644 index fa0303ee5..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1Props.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - -// ResourceClaimTemplateList is a collection of claim templates. -type KubeResourceClaimTemplateListV1Beta1Props struct { - // Items is the list of resource claim templates. - Items *[]*KubeResourceClaimTemplateV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go deleted file mode 100644 index c879edb89..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimTemplateListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateListV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateListV1Beta1Props) error { - return nil -} - -func validateKubeResourceClaimTemplateListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimTemplateListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go index 3c2cec4a3..53c482578 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate" API object. func NewKubeResourceClaimTemplateV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) KubeResourceClaimTemplateV1Alpha3 { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go index b4319ae14..84a534528 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // ResourceClaimTemplate is used to produce ResourceClaim objects. // // This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. @@ -11,3 +12,4 @@ type KubeResourceClaimTemplateV1Alpha3Props struct { // Standard object metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go index 6d4a9ac4d..6a2e2623a 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope constructs.Con return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go index 52002d24f..647885110 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c constructs.IConstr func validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go deleted file mode 100644 index aa83da803..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - -// ResourceClaimTemplate is used to produce ResourceClaim objects. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimTemplateV1Beta1Props struct { - // Describes the ResourceClaim that is to be generated. - // - // This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore. - Spec *ResourceClaimTemplateSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go deleted file mode 100644 index 174891e67..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimTemplateV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateV1Beta1_ManifestParameters(props *KubeResourceClaimTemplateV1Beta1Props) error { - return nil -} - -func validateKubeResourceClaimTemplateV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimTemplateV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go index 1dc08283f..2cf040efc 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go @@ -126,6 +126,7 @@ func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.resource.v1alpha3.ResourceClaim" API object. func NewKubeResourceClaimV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) KubeResourceClaimV1Alpha3 { _init_.Initialize() @@ -317,3 +318,4 @@ func (k *jsiiProxy_KubeResourceClaimV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go index 270e88e75..3e6127843 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // ResourceClaim describes a request for access to resources in the cluster, for use by workloads. // // For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. @@ -13,3 +14,4 @@ type KubeResourceClaimV1Alpha3Props struct { // Standard object metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go index 9b4273f6c..2bef07789 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeResourceClaimV1Alpha3Parameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go index 30e465b7f..4249c9eb4 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceClaimV1Alpha3_OfParameters(c constructs.IConstruct) err func validateNewKubeResourceClaimV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1Props.go b/pods/imports/k8s/KubeResourceClaimV1Beta1Props.go deleted file mode 100644 index dbdf933fd..000000000 --- a/pods/imports/k8s/KubeResourceClaimV1Beta1Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - -// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. -// -// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimV1Beta1Props struct { - // Spec describes what is being requested and how to configure it. - // - // The spec is immutable. - Spec *ResourceClaimSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go deleted file mode 100644 index 97177e6a8..000000000 --- a/pods/imports/k8s/KubeResourceClaimV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimV1Beta1_ManifestParameters(props *KubeResourceClaimV1Beta1Props) error { - return nil -} - -func validateKubeResourceClaimV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeResourceQuota.go b/pods/imports/k8s/KubeResourceQuota.go index 5a830fd72..af782ae80 100644 --- a/pods/imports/k8s/KubeResourceQuota.go +++ b/pods/imports/k8s/KubeResourceQuota.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeResourceQuota) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ResourceQuota" API object. func NewKubeResourceQuota(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) KubeResourceQuota { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeResourceQuota) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceQuotaList.go b/pods/imports/k8s/KubeResourceQuotaList.go index 6fcbea325..bab845ea3 100644 --- a/pods/imports/k8s/KubeResourceQuotaList.go +++ b/pods/imports/k8s/KubeResourceQuotaList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeResourceQuotaList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ResourceQuotaList" API object. func NewKubeResourceQuotaList(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) KubeResourceQuotaList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeResourceQuotaList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceQuotaListProps.go b/pods/imports/k8s/KubeResourceQuotaListProps.go index ee17eeba4..c9efde984 100644 --- a/pods/imports/k8s/KubeResourceQuotaListProps.go +++ b/pods/imports/k8s/KubeResourceQuotaListProps.go @@ -1,5 +1,6 @@ package k8s + // ResourceQuotaList is a list of ResourceQuota items. type KubeResourceQuotaListProps struct { // Items is a list of ResourceQuota objects. @@ -11,3 +12,4 @@ type KubeResourceQuotaListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceQuotaList__checks.go b/pods/imports/k8s/KubeResourceQuotaList__checks.go index 38571bd7f..c011cb644 100644 --- a/pods/imports/k8s/KubeResourceQuotaList__checks.go +++ b/pods/imports/k8s/KubeResourceQuotaList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeResourceQuotaListParameters(scope constructs.Construct, id * return nil } + diff --git a/pods/imports/k8s/KubeResourceQuotaList__no_checks.go b/pods/imports/k8s/KubeResourceQuotaList__no_checks.go index ac11f0606..367e30c2c 100644 --- a/pods/imports/k8s/KubeResourceQuotaList__no_checks.go +++ b/pods/imports/k8s/KubeResourceQuotaList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceQuotaList_OfParameters(c constructs.IConstruct) error { func validateNewKubeResourceQuotaListParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceQuotaProps.go b/pods/imports/k8s/KubeResourceQuotaProps.go index ae1495b3a..6f0d5da0a 100644 --- a/pods/imports/k8s/KubeResourceQuotaProps.go +++ b/pods/imports/k8s/KubeResourceQuotaProps.go @@ -1,5 +1,6 @@ package k8s + // ResourceQuota sets aggregate quota restrictions enforced per namespace. type KubeResourceQuotaProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeResourceQuotaProps struct { // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *ResourceQuotaSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeResourceQuota__checks.go b/pods/imports/k8s/KubeResourceQuota__checks.go index 69f8227c8..c0c977ef1 100644 --- a/pods/imports/k8s/KubeResourceQuota__checks.go +++ b/pods/imports/k8s/KubeResourceQuota__checks.go @@ -57,3 +57,4 @@ func validateNewKubeResourceQuotaParameters(scope constructs.Construct, id *stri return nil } + diff --git a/pods/imports/k8s/KubeResourceQuota__no_checks.go b/pods/imports/k8s/KubeResourceQuota__no_checks.go index b0a4317bd..e1c248575 100644 --- a/pods/imports/k8s/KubeResourceQuota__no_checks.go +++ b/pods/imports/k8s/KubeResourceQuota__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceQuota_OfParameters(c constructs.IConstruct) error { func validateNewKubeResourceQuotaParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go deleted file mode 100644 index 029be890c..000000000 --- a/pods/imports/k8s/KubeResourceSliceListV1Alpha3Props.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - -// ResourceSliceList is a collection of ResourceSlices. -type KubeResourceSliceListV1Alpha3Props struct { - // Items is the list of resource ResourceSlices. - Items *[]*KubeResourceSliceV1Alpha3Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go deleted file mode 100644 index 2c62ed91d..000000000 --- a/pods/imports/k8s/KubeResourceSliceListV1Alpha3__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceSliceListV1Alpha3_ManifestParameters(props *KubeResourceSliceListV1Alpha3Props) error { - return nil -} - -func validateKubeResourceSliceListV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceSliceListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1.go deleted file mode 100644 index f16f4492d..000000000 --- a/pods/imports/k8s/KubeResourceSliceListV1Beta1.go +++ /dev/null @@ -1,315 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" -) - -// ResourceSliceList is a collection of ResourceSlices. -type KubeResourceSliceListV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceSliceListV1Beta1 -type jsiiProxy_KubeResourceSliceListV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceListV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - -// Defines a "io.k8s.api.resource.v1beta1.ResourceSliceList" API object. -func NewKubeResourceSliceListV1Beta1(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) KubeResourceSliceListV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeResourceSliceListV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceSliceListV1Beta1{} - - _jsii_.Create( - "k8s.KubeResourceSliceListV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1beta1.ResourceSliceList" API object. -func NewKubeResourceSliceListV1Beta1_Override(k KubeResourceSliceListV1Beta1, scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceSliceListV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceSliceListV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceSliceListV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceSliceListV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceSliceListV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceSliceList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceSliceListV1Beta1_Manifest(props *KubeResourceSliceListV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceSliceListV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceSliceListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceSliceListV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceSliceListV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceSliceListV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceSliceListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceSliceListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceSliceListV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceSliceListV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go deleted file mode 100644 index d6461f992..000000000 --- a/pods/imports/k8s/KubeResourceSliceListV1Beta1Props.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - -// ResourceSliceList is a collection of ResourceSlices. -type KubeResourceSliceListV1Beta1Props struct { - // Items is the list of resource ResourceSlices. - Items *[]*KubeResourceSliceV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go deleted file mode 100644 index af0059449..000000000 --- a/pods/imports/k8s/KubeResourceSliceListV1Beta1__checks.go +++ /dev/null @@ -1,65 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceSliceListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceSliceListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceSliceListV1Beta1_ManifestParameters(props *KubeResourceSliceListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceSliceListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceSliceListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} diff --git a/pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go deleted file mode 100644 index 5eaffe46d..000000000 --- a/pods/imports/k8s/KubeResourceSliceListV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceSliceListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceSliceListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceSliceListV1Beta1_ManifestParameters(props *KubeResourceSliceListV1Beta1Props) error { - return nil -} - -func validateKubeResourceSliceListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceSliceListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go index 253bdeab5..12aeb20e3 100644 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go @@ -134,6 +134,7 @@ func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.resource.v1alpha3.ResourceSlice" API object. func NewKubeResourceSliceV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) KubeResourceSliceV1Alpha3 { _init_.Initialize() @@ -325,3 +326,4 @@ func (k *jsiiProxy_KubeResourceSliceV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go index 2648973a9..0ab03da07 100644 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go @@ -1,5 +1,6 @@ package k8s + // ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. // // A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. @@ -21,3 +22,4 @@ type KubeResourceSliceV1Alpha3Props struct { // Standard object metadata. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go index c1f82f89e..c67b9ced2 100644 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go @@ -63,3 +63,4 @@ func validateNewKubeResourceSliceV1Alpha3Parameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go index 4ba654a98..14fc63023 100644 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go @@ -23,3 +23,4 @@ func validateKubeResourceSliceV1Alpha3_OfParameters(c constructs.IConstruct) err func validateNewKubeResourceSliceV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) error { return nil } + diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1.go b/pods/imports/k8s/KubeResourceSliceV1Beta1.go deleted file mode 100644 index 6124cd566..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Beta1.go +++ /dev/null @@ -1,327 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" -) - -// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. -// -// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. -// -// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . -// -// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. -// -// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. -// -// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceSliceV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceSliceV1Beta1 -type jsiiProxy_KubeResourceSliceV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - -// Defines a "io.k8s.api.resource.v1beta1.ResourceSlice" API object. -func NewKubeResourceSliceV1Beta1(scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) KubeResourceSliceV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeResourceSliceV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceSliceV1Beta1{} - - _jsii_.Create( - "k8s.KubeResourceSliceV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1beta1.ResourceSlice" API object. -func NewKubeResourceSliceV1Beta1_Override(k KubeResourceSliceV1Beta1, scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceSliceV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceSliceV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceSliceV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1beta1.ResourceSlice". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceSliceV1Beta1_Manifest(props *KubeResourceSliceV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceSliceV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceSliceV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceSliceV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceSliceV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceSliceV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceSliceV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceSliceV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1Props.go b/pods/imports/k8s/KubeResourceSliceV1Beta1Props.go deleted file mode 100644 index a05349ce2..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Beta1Props.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - -// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. -// -// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. -// -// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . -// -// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. -// -// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. -// -// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceSliceV1Beta1Props struct { - // Contains the information published by the driver. - // - // Changing the spec automatically increments the metadata.generation number. - Spec *ResourceSliceSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go b/pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go deleted file mode 100644 index f0973fd82..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Beta1__no_checks.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceSliceV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceSliceV1Beta1_ManifestParameters(props *KubeResourceSliceV1Beta1Props) error { - return nil -} - -func validateKubeResourceSliceV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceSliceV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) error { - return nil -} diff --git a/pods/imports/k8s/KubeRole.go b/pods/imports/k8s/KubeRole.go index b4de3eb1c..3ec3b8a2d 100644 --- a/pods/imports/k8s/KubeRole.go +++ b/pods/imports/k8s/KubeRole.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeRole) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.Role" API object. func NewKubeRole(scope constructs.Construct, id *string, props *KubeRoleProps) KubeRole { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeRole) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeRoleBinding.go b/pods/imports/k8s/KubeRoleBinding.go index 8dcc4f162..d14f05fb0 100644 --- a/pods/imports/k8s/KubeRoleBinding.go +++ b/pods/imports/k8s/KubeRoleBinding.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeRoleBinding) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.RoleBinding" API object. func NewKubeRoleBinding(scope constructs.Construct, id *string, props *KubeRoleBindingProps) KubeRoleBinding { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeRoleBinding) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeRoleBindingList.go b/pods/imports/k8s/KubeRoleBindingList.go index bc50add94..ff965400a 100644 --- a/pods/imports/k8s/KubeRoleBindingList.go +++ b/pods/imports/k8s/KubeRoleBindingList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeRoleBindingList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.RoleBindingList" API object. func NewKubeRoleBindingList(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) KubeRoleBindingList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeRoleBindingList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeRoleBindingListProps.go b/pods/imports/k8s/KubeRoleBindingListProps.go index 2c9b2b8d0..db4566b17 100644 --- a/pods/imports/k8s/KubeRoleBindingListProps.go +++ b/pods/imports/k8s/KubeRoleBindingListProps.go @@ -1,5 +1,6 @@ package k8s + // RoleBindingList is a collection of RoleBindings. type KubeRoleBindingListProps struct { // Items is a list of RoleBindings. @@ -7,3 +8,4 @@ type KubeRoleBindingListProps struct { // Standard object's metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeRoleBindingList__checks.go b/pods/imports/k8s/KubeRoleBindingList__checks.go index 5723e2fad..ad0271dee 100644 --- a/pods/imports/k8s/KubeRoleBindingList__checks.go +++ b/pods/imports/k8s/KubeRoleBindingList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeRoleBindingListParameters(scope constructs.Construct, id *st return nil } + diff --git a/pods/imports/k8s/KubeRoleBindingList__no_checks.go b/pods/imports/k8s/KubeRoleBindingList__no_checks.go index 1edf108c2..92f742358 100644 --- a/pods/imports/k8s/KubeRoleBindingList__no_checks.go +++ b/pods/imports/k8s/KubeRoleBindingList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeRoleBindingList_OfParameters(c constructs.IConstruct) error { func validateNewKubeRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeRoleBindingProps.go b/pods/imports/k8s/KubeRoleBindingProps.go index 026fd8978..9650513f4 100644 --- a/pods/imports/k8s/KubeRoleBindingProps.go +++ b/pods/imports/k8s/KubeRoleBindingProps.go @@ -1,5 +1,6 @@ package k8s + // RoleBinding references a role, but does not contain it. // // It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. @@ -13,3 +14,4 @@ type KubeRoleBindingProps struct { // Subjects holds references to the objects the role applies to. Subjects *[]*Subject `field:"optional" json:"subjects" yaml:"subjects"` } + diff --git a/pods/imports/k8s/KubeRoleBinding__checks.go b/pods/imports/k8s/KubeRoleBinding__checks.go index 4bb888ba1..18456a4e3 100644 --- a/pods/imports/k8s/KubeRoleBinding__checks.go +++ b/pods/imports/k8s/KubeRoleBinding__checks.go @@ -63,3 +63,4 @@ func validateNewKubeRoleBindingParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeRoleBinding__no_checks.go b/pods/imports/k8s/KubeRoleBinding__no_checks.go index 64f3ce1d0..1b5c7b050 100644 --- a/pods/imports/k8s/KubeRoleBinding__no_checks.go +++ b/pods/imports/k8s/KubeRoleBinding__no_checks.go @@ -23,3 +23,4 @@ func validateKubeRoleBinding_OfParameters(c constructs.IConstruct) error { func validateNewKubeRoleBindingParameters(scope constructs.Construct, id *string, props *KubeRoleBindingProps) error { return nil } + diff --git a/pods/imports/k8s/KubeRoleList.go b/pods/imports/k8s/KubeRoleList.go index b16154a12..26d096794 100644 --- a/pods/imports/k8s/KubeRoleList.go +++ b/pods/imports/k8s/KubeRoleList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeRoleList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.rbac.v1.RoleList" API object. func NewKubeRoleList(scope constructs.Construct, id *string, props *KubeRoleListProps) KubeRoleList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeRoleList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeRoleListProps.go b/pods/imports/k8s/KubeRoleListProps.go index e91932b8b..f90d4e5b7 100644 --- a/pods/imports/k8s/KubeRoleListProps.go +++ b/pods/imports/k8s/KubeRoleListProps.go @@ -1,5 +1,6 @@ package k8s + // RoleList is a collection of Roles. type KubeRoleListProps struct { // Items is a list of Roles. @@ -7,3 +8,4 @@ type KubeRoleListProps struct { // Standard object's metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeRoleList__checks.go b/pods/imports/k8s/KubeRoleList__checks.go index 2f0e901bb..ced0b0bbc 100644 --- a/pods/imports/k8s/KubeRoleList__checks.go +++ b/pods/imports/k8s/KubeRoleList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeRoleListParameters(scope constructs.Construct, id *string, p return nil } + diff --git a/pods/imports/k8s/KubeRoleList__no_checks.go b/pods/imports/k8s/KubeRoleList__no_checks.go index 33e4af397..69b766666 100644 --- a/pods/imports/k8s/KubeRoleList__no_checks.go +++ b/pods/imports/k8s/KubeRoleList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeRoleList_OfParameters(c constructs.IConstruct) error { func validateNewKubeRoleListParameters(scope constructs.Construct, id *string, props *KubeRoleListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeRoleProps.go b/pods/imports/k8s/KubeRoleProps.go index 60dac4e1a..0b089c9d9 100644 --- a/pods/imports/k8s/KubeRoleProps.go +++ b/pods/imports/k8s/KubeRoleProps.go @@ -1,5 +1,6 @@ package k8s + // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. type KubeRoleProps struct { // Standard object's metadata. @@ -7,3 +8,4 @@ type KubeRoleProps struct { // Rules holds all the PolicyRules for this Role. Rules *[]*PolicyRule `field:"optional" json:"rules" yaml:"rules"` } + diff --git a/pods/imports/k8s/KubeRole__checks.go b/pods/imports/k8s/KubeRole__checks.go index f1410b701..25b759fb7 100644 --- a/pods/imports/k8s/KubeRole__checks.go +++ b/pods/imports/k8s/KubeRole__checks.go @@ -57,3 +57,4 @@ func validateNewKubeRoleParameters(scope constructs.Construct, id *string, props return nil } + diff --git a/pods/imports/k8s/KubeRole__no_checks.go b/pods/imports/k8s/KubeRole__no_checks.go index 05e0629f3..12ff29994 100644 --- a/pods/imports/k8s/KubeRole__no_checks.go +++ b/pods/imports/k8s/KubeRole__no_checks.go @@ -23,3 +23,4 @@ func validateKubeRole_OfParameters(c constructs.IConstruct) error { func validateNewKubeRoleParameters(scope constructs.Construct, id *string, props *KubeRoleProps) error { return nil } + diff --git a/pods/imports/k8s/KubeRuntimeClass.go b/pods/imports/k8s/KubeRuntimeClass.go index 7ce0c5f4f..f15396ad7 100644 --- a/pods/imports/k8s/KubeRuntimeClass.go +++ b/pods/imports/k8s/KubeRuntimeClass.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeRuntimeClass) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.node.v1.RuntimeClass" API object. func NewKubeRuntimeClass(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) KubeRuntimeClass { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeRuntimeClass) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeRuntimeClassList.go b/pods/imports/k8s/KubeRuntimeClassList.go index 86f09be45..0d2f7110e 100644 --- a/pods/imports/k8s/KubeRuntimeClassList.go +++ b/pods/imports/k8s/KubeRuntimeClassList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeRuntimeClassList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.node.v1.RuntimeClassList" API object. func NewKubeRuntimeClassList(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) KubeRuntimeClassList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeRuntimeClassList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeRuntimeClassListProps.go b/pods/imports/k8s/KubeRuntimeClassListProps.go index 2119a0cce..04a16a67d 100644 --- a/pods/imports/k8s/KubeRuntimeClassListProps.go +++ b/pods/imports/k8s/KubeRuntimeClassListProps.go @@ -1,5 +1,6 @@ package k8s + // RuntimeClassList is a list of RuntimeClass objects. type KubeRuntimeClassListProps struct { // items is a list of schema objects. @@ -9,3 +10,4 @@ type KubeRuntimeClassListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeRuntimeClassList__checks.go b/pods/imports/k8s/KubeRuntimeClassList__checks.go index 59be36ce1..7e2e13732 100644 --- a/pods/imports/k8s/KubeRuntimeClassList__checks.go +++ b/pods/imports/k8s/KubeRuntimeClassList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeRuntimeClassListParameters(scope constructs.Construct, id *s return nil } + diff --git a/pods/imports/k8s/KubeRuntimeClassList__no_checks.go b/pods/imports/k8s/KubeRuntimeClassList__no_checks.go index 60f387985..b60decea5 100644 --- a/pods/imports/k8s/KubeRuntimeClassList__no_checks.go +++ b/pods/imports/k8s/KubeRuntimeClassList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeRuntimeClassList_OfParameters(c constructs.IConstruct) error { func validateNewKubeRuntimeClassListParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeRuntimeClassProps.go b/pods/imports/k8s/KubeRuntimeClassProps.go index e3ea3df1f..bb7baaa35 100644 --- a/pods/imports/k8s/KubeRuntimeClassProps.go +++ b/pods/imports/k8s/KubeRuntimeClassProps.go @@ -1,5 +1,6 @@ package k8s + // RuntimeClass defines a class of container runtime supported in the cluster. // // The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/ @@ -20,3 +21,4 @@ type KubeRuntimeClassProps struct { // If scheduling is nil, this RuntimeClass is assumed to be supported by all nodes. Scheduling *Scheduling `field:"optional" json:"scheduling" yaml:"scheduling"` } + diff --git a/pods/imports/k8s/KubeRuntimeClass__checks.go b/pods/imports/k8s/KubeRuntimeClass__checks.go index adac637ad..9bb23dfd6 100644 --- a/pods/imports/k8s/KubeRuntimeClass__checks.go +++ b/pods/imports/k8s/KubeRuntimeClass__checks.go @@ -63,3 +63,4 @@ func validateNewKubeRuntimeClassParameters(scope constructs.Construct, id *strin return nil } + diff --git a/pods/imports/k8s/KubeRuntimeClass__no_checks.go b/pods/imports/k8s/KubeRuntimeClass__no_checks.go index 12ad3efb3..63c9045a9 100644 --- a/pods/imports/k8s/KubeRuntimeClass__no_checks.go +++ b/pods/imports/k8s/KubeRuntimeClass__no_checks.go @@ -23,3 +23,4 @@ func validateKubeRuntimeClass_OfParameters(c constructs.IConstruct) error { func validateNewKubeRuntimeClassParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) error { return nil } + diff --git a/pods/imports/k8s/KubeScale.go b/pods/imports/k8s/KubeScale.go index da43c8a3c..2aa994ed7 100644 --- a/pods/imports/k8s/KubeScale.go +++ b/pods/imports/k8s/KubeScale.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeScale) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.autoscaling.v1.Scale" API object. func NewKubeScale(scope constructs.Construct, id *string, props *KubeScaleProps) KubeScale { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeScale) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeScaleProps.go b/pods/imports/k8s/KubeScaleProps.go index ff7a06523..0aa506415 100644 --- a/pods/imports/k8s/KubeScaleProps.go +++ b/pods/imports/k8s/KubeScaleProps.go @@ -1,5 +1,6 @@ package k8s + // Scale represents a scaling request for a resource. type KubeScaleProps struct { // Standard object metadata; @@ -11,3 +12,4 @@ type KubeScaleProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Spec *ScaleSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeScale__checks.go b/pods/imports/k8s/KubeScale__checks.go index 57ab509dd..0c4c591f7 100644 --- a/pods/imports/k8s/KubeScale__checks.go +++ b/pods/imports/k8s/KubeScale__checks.go @@ -57,3 +57,4 @@ func validateNewKubeScaleParameters(scope constructs.Construct, id *string, prop return nil } + diff --git a/pods/imports/k8s/KubeScale__no_checks.go b/pods/imports/k8s/KubeScale__no_checks.go index cd4e11010..3afdbbf79 100644 --- a/pods/imports/k8s/KubeScale__no_checks.go +++ b/pods/imports/k8s/KubeScale__no_checks.go @@ -23,3 +23,4 @@ func validateKubeScale_OfParameters(c constructs.IConstruct) error { func validateNewKubeScaleParameters(scope constructs.Construct, id *string, props *KubeScaleProps) error { return nil } + diff --git a/pods/imports/k8s/KubeSecret.go b/pods/imports/k8s/KubeSecret.go index a94ca928f..121002370 100644 --- a/pods/imports/k8s/KubeSecret.go +++ b/pods/imports/k8s/KubeSecret.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeSecret) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Secret" API object. func NewKubeSecret(scope constructs.Construct, id *string, props *KubeSecretProps) KubeSecret { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeSecret) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSecretList.go b/pods/imports/k8s/KubeSecretList.go index a31ce7e4d..ea7283b42 100644 --- a/pods/imports/k8s/KubeSecretList.go +++ b/pods/imports/k8s/KubeSecretList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeSecretList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.SecretList" API object. func NewKubeSecretList(scope constructs.Construct, id *string, props *KubeSecretListProps) KubeSecretList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeSecretList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSecretListProps.go b/pods/imports/k8s/KubeSecretListProps.go index dd2e728a7..dc539e8b0 100644 --- a/pods/imports/k8s/KubeSecretListProps.go +++ b/pods/imports/k8s/KubeSecretListProps.go @@ -1,5 +1,6 @@ package k8s + // SecretList is a list of Secret. type KubeSecretListProps struct { // Items is a list of secret objects. @@ -11,3 +12,4 @@ type KubeSecretListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeSecretList__checks.go b/pods/imports/k8s/KubeSecretList__checks.go index dc115794f..fb7ecade4 100644 --- a/pods/imports/k8s/KubeSecretList__checks.go +++ b/pods/imports/k8s/KubeSecretList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeSecretListParameters(scope constructs.Construct, id *string, return nil } + diff --git a/pods/imports/k8s/KubeSecretList__no_checks.go b/pods/imports/k8s/KubeSecretList__no_checks.go index 76fa0cfb9..7240e5164 100644 --- a/pods/imports/k8s/KubeSecretList__no_checks.go +++ b/pods/imports/k8s/KubeSecretList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSecretList_OfParameters(c constructs.IConstruct) error { func validateNewKubeSecretListParameters(scope constructs.Construct, id *string, props *KubeSecretListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeSecretProps.go b/pods/imports/k8s/KubeSecretProps.go index a19f3988e..d63426fe3 100644 --- a/pods/imports/k8s/KubeSecretProps.go +++ b/pods/imports/k8s/KubeSecretProps.go @@ -1,5 +1,6 @@ package k8s + // Secret holds secret data of a certain type. // // The total bytes of the values in the Data field must be less than MaxSecretSize bytes. @@ -25,3 +26,4 @@ type KubeSecretProps struct { // More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/KubeSecret__checks.go b/pods/imports/k8s/KubeSecret__checks.go index 423b07ab9..15c2bafdb 100644 --- a/pods/imports/k8s/KubeSecret__checks.go +++ b/pods/imports/k8s/KubeSecret__checks.go @@ -57,3 +57,4 @@ func validateNewKubeSecretParameters(scope constructs.Construct, id *string, pro return nil } + diff --git a/pods/imports/k8s/KubeSecret__no_checks.go b/pods/imports/k8s/KubeSecret__no_checks.go index 49a7df947..f40d1cbb0 100644 --- a/pods/imports/k8s/KubeSecret__no_checks.go +++ b/pods/imports/k8s/KubeSecret__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSecret_OfParameters(c constructs.IConstruct) error { func validateNewKubeSecretParameters(scope constructs.Construct, id *string, props *KubeSecretProps) error { return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview.go b/pods/imports/k8s/KubeSelfSubjectAccessReview.go index 3e53433ed..6bbb1a811 100644 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview.go +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeSelfSubjectAccessReview) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authorization.v1.SelfSubjectAccessReview" API object. func NewKubeSelfSubjectAccessReview(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) KubeSelfSubjectAccessReview { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeSelfSubjectAccessReview) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go b/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go index b5dadf366..dc4e53a9b 100644 --- a/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go +++ b/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go @@ -1,5 +1,6 @@ package k8s + // SelfSubjectAccessReview checks whether or the current user can perform an action. // // Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action @@ -13,3 +14,4 @@ type KubeSelfSubjectAccessReviewProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go b/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go index 9ca16c41f..9e018f1f8 100644 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go @@ -63,3 +63,4 @@ func validateNewKubeSelfSubjectAccessReviewParameters(scope constructs.Construct return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go index bb9e9f36c..34cafd6af 100644 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSelfSubjectAccessReview_OfParameters(c constructs.IConstruct) e func validateNewKubeSelfSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) error { return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectReview.go b/pods/imports/k8s/KubeSelfSubjectReview.go index 7d0389138..465ccffa7 100644 --- a/pods/imports/k8s/KubeSelfSubjectReview.go +++ b/pods/imports/k8s/KubeSelfSubjectReview.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeSelfSubjectReview) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authentication.v1.SelfSubjectReview" API object. func NewKubeSelfSubjectReview(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) KubeSelfSubjectReview { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeSelfSubjectReview) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewProps.go b/pods/imports/k8s/KubeSelfSubjectReviewProps.go index cc5d3417c..c3c9fe931 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewProps.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewProps.go @@ -1,5 +1,6 @@ package k8s + // SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. // // When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. @@ -9,3 +10,4 @@ type KubeSelfSubjectReviewProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go similarity index 66% rename from pods/imports/k8s/KubeResourceSliceListV1Alpha3.go rename to pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go index bab68c852..4d86947d4 100644 --- a/pods/imports/k8s/KubeResourceSliceListV1Alpha3.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go @@ -9,8 +9,10 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// ResourceSliceList is a collection of ResourceSlices. -type KubeResourceSliceListV1Alpha3 interface { +// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. +// +// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. +type KubeSelfSubjectReviewV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +49,12 @@ type KubeResourceSliceListV1Alpha3 interface { ToString() *string } -// The jsii proxy struct for KubeResourceSliceListV1Alpha3 -type jsiiProxy_KubeResourceSliceListV1Alpha3 struct { +// The jsii proxy struct for KubeSelfSubjectReviewV1Alpha1 +type jsiiProxy_KubeSelfSubjectReviewV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) ApiGroup() *string { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +64,7 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) ApiVersion() *string { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +74,7 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +84,7 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Kind() *string { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +94,7 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Kind() *string { return returns } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +104,7 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Metadata() cdk8s.ApiObjectMeta return returns } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Name() *string { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +114,7 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Name() *string { return returns } -func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Node() constructs.Node { +func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +124,18 @@ func (j *jsiiProxy_KubeResourceSliceListV1Alpha3) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.resource.v1alpha3.ResourceSliceList" API object. -func NewKubeResourceSliceListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) KubeResourceSliceListV1Alpha3 { + +// Defines a "io.k8s.api.authentication.v1alpha1.SelfSubjectReview" API object. +func NewKubeSelfSubjectReviewV1Alpha1(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) KubeSelfSubjectReviewV1Alpha1 { _init_.Initialize() - if err := validateNewKubeResourceSliceListV1Alpha3Parameters(scope, id, props); err != nil { + if err := validateNewKubeSelfSubjectReviewV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeResourceSliceListV1Alpha3{} + j := jsiiProxy_KubeSelfSubjectReviewV1Alpha1{} _jsii_.Create( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -140,12 +143,12 @@ func NewKubeResourceSliceListV1Alpha3(scope constructs.Construct, id *string, pr return &j } -// Defines a "io.k8s.api.resource.v1alpha3.ResourceSliceList" API object. -func NewKubeResourceSliceListV1Alpha3_Override(k KubeResourceSliceListV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) { +// Defines a "io.k8s.api.authentication.v1alpha1.SelfSubjectReview" API object. +func NewKubeSelfSubjectReviewV1Alpha1_Override(k KubeSelfSubjectReviewV1Alpha1, scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -154,16 +157,16 @@ func NewKubeResourceSliceListV1Alpha3_Override(k KubeResourceSliceListV1Alpha3, // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceSliceListV1Alpha3_IsApiObject(o interface{}) *bool { +func KubeSelfSubjectReviewV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o); err != nil { + if err := validateKubeSelfSubjectReviewV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +192,16 @@ func KubeResourceSliceListV1Alpha3_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceSliceListV1Alpha3_IsConstruct(x interface{}) *bool { +func KubeSelfSubjectReviewV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x); err != nil { + if err := validateKubeSelfSubjectReviewV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +210,19 @@ func KubeResourceSliceListV1Alpha3_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceSliceList". +// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1alpha1.SelfSubjectReview". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceSliceListV1Alpha3_Manifest(props *KubeResourceSliceListV1Alpha3Props) interface{} { +func KubeSelfSubjectReviewV1Alpha1_Manifest(props *KubeSelfSubjectReviewV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeResourceSliceListV1Alpha3_ManifestParameters(props); err != nil { + if err := validateKubeSelfSubjectReviewV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -233,16 +236,16 @@ func KubeResourceSliceListV1Alpha3_Manifest(props *KubeResourceSliceListV1Alpha3 // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeResourceSliceListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeSelfSubjectReviewV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeResourceSliceListV1Alpha3_OfParameters(c); err != nil { + if err := validateKubeSelfSubjectReviewV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", "of", []interface{}{c}, &returns, @@ -251,18 +254,18 @@ func KubeResourceSliceListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { return returns } -func KubeResourceSliceListV1Alpha3_GVK() *cdk8s.GroupVersionKind { +func KubeSelfSubjectReviewV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeResourceSliceListV1Alpha3", + "k8s.KubeSelfSubjectReviewV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +278,7 @@ func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) AddDependency(dependencies ... ) } -func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +291,7 @@ func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) AddJsonPatch(ops ...cdk8s.Json ) } -func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) ToJson() interface{} { +func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +304,7 @@ func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) ToString() *string { +func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +316,4 @@ func (k *jsiiProxy_KubeResourceSliceListV1Alpha3) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go new file mode 100644 index 000000000..b12e5c275 --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go @@ -0,0 +1,13 @@ +package k8s + + +// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. +// +// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. +type KubeSelfSubjectReviewV1Alpha1Props struct { + // Standard object's metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go similarity index 60% rename from pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go rename to pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go index 15ef16ad6..3ef9a2b74 100644 --- a/pods/imports/k8s/KubeResourceSliceListV1Alpha3__checks.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o interface{}) error { +func validateKubeSelfSubjectReviewV1Alpha1_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeResourceSliceListV1Alpha3_IsApiObjectParameters(o interface{}) return nil } -func validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x interface{}) error { +func validateKubeSelfSubjectReviewV1Alpha1_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,10 +26,7 @@ func validateKubeResourceSliceListV1Alpha3_IsConstructParameters(x interface{}) return nil } -func validateKubeResourceSliceListV1Alpha3_ManifestParameters(props *KubeResourceSliceListV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } +func validateKubeSelfSubjectReviewV1Alpha1_ManifestParameters(props *KubeSelfSubjectReviewV1Alpha1Props) error { if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { return err } @@ -37,7 +34,7 @@ func validateKubeResourceSliceListV1Alpha3_ManifestParameters(props *KubeResourc return nil } -func validateKubeResourceSliceListV1Alpha3_OfParameters(c constructs.IConstruct) error { +func validateKubeSelfSubjectReviewV1Alpha1_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +42,7 @@ func validateKubeResourceSliceListV1Alpha3_OfParameters(c constructs.IConstruct) return nil } -func validateNewKubeResourceSliceListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceListV1Alpha3Props) error { +func validateNewKubeSelfSubjectReviewV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -54,12 +51,10 @@ func validateNewKubeResourceSliceListV1Alpha3Parameters(scope constructs.Constru return fmt.Errorf("parameter id is required, but nil was provided") } - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { return err } return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go new file mode 100644 index 000000000..67731034b --- /dev/null +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeSelfSubjectReviewV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeSelfSubjectReviewV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeSelfSubjectReviewV1Alpha1_ManifestParameters(props *KubeSelfSubjectReviewV1Alpha1Props) error { + return nil +} + +func validateKubeSelfSubjectReviewV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeSelfSubjectReviewV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go index 71ce76298..a9a715033 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authentication.v1beta1.SelfSubjectReview" API object. func NewKubeSelfSubjectReviewV1Beta1(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) KubeSelfSubjectReviewV1Beta1 { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go index 7f1c24dbf..5d6b8d4ea 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. // // When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. @@ -9,3 +10,4 @@ type KubeSelfSubjectReviewV1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go index 8a1172c1a..1ea7bb36e 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go @@ -57,3 +57,4 @@ func validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope constructs.Construc return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go index 1d102c229..3330d63f4 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSelfSubjectReviewV1Beta1_OfParameters(c constructs.IConstruct) func validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectReview__checks.go b/pods/imports/k8s/KubeSelfSubjectReview__checks.go index b43d43f32..6d3c9cc6a 100644 --- a/pods/imports/k8s/KubeSelfSubjectReview__checks.go +++ b/pods/imports/k8s/KubeSelfSubjectReview__checks.go @@ -57,3 +57,4 @@ func validateNewKubeSelfSubjectReviewParameters(scope constructs.Construct, id * return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go index e90480388..a67744f43 100644 --- a/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go +++ b/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSelfSubjectReview_OfParameters(c constructs.IConstruct) error { func validateNewKubeSelfSubjectReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) error { return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview.go b/pods/imports/k8s/KubeSelfSubjectRulesReview.go index 5187d58d9..b0b3215c5 100644 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview.go +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeSelfSubjectRulesReview) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authorization.v1.SelfSubjectRulesReview" API object. func NewKubeSelfSubjectRulesReview(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) KubeSelfSubjectRulesReview { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeSelfSubjectRulesReview) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go b/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go index 7358953c5..5853b1590 100644 --- a/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go +++ b/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go @@ -1,5 +1,6 @@ package k8s + // SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. // // The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. @@ -11,3 +12,4 @@ type KubeSelfSubjectRulesReviewProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go b/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go index fd4870166..2cf52f9ba 100644 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go @@ -63,3 +63,4 @@ func validateNewKubeSelfSubjectRulesReviewParameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go index ba8a31c96..8617c9320 100644 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSelfSubjectRulesReview_OfParameters(c constructs.IConstruct) er func validateNewKubeSelfSubjectRulesReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) error { return nil } + diff --git a/pods/imports/k8s/KubeService.go b/pods/imports/k8s/KubeService.go index bd5e9ab05..f00d817d2 100644 --- a/pods/imports/k8s/KubeService.go +++ b/pods/imports/k8s/KubeService.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeService) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.Service" API object. func NewKubeService(scope constructs.Construct, id *string, props *KubeServiceProps) KubeService { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeService) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeServiceAccount.go b/pods/imports/k8s/KubeServiceAccount.go index dfca2aa15..133a2c6d5 100644 --- a/pods/imports/k8s/KubeServiceAccount.go +++ b/pods/imports/k8s/KubeServiceAccount.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeServiceAccount) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ServiceAccount" API object. func NewKubeServiceAccount(scope constructs.Construct, id *string, props *KubeServiceAccountProps) KubeServiceAccount { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeServiceAccount) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeServiceAccountList.go b/pods/imports/k8s/KubeServiceAccountList.go index 6212f33c8..2e5f279b1 100644 --- a/pods/imports/k8s/KubeServiceAccountList.go +++ b/pods/imports/k8s/KubeServiceAccountList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeServiceAccountList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ServiceAccountList" API object. func NewKubeServiceAccountList(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) KubeServiceAccountList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeServiceAccountList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeServiceAccountListProps.go b/pods/imports/k8s/KubeServiceAccountListProps.go index 609701727..2237b29e8 100644 --- a/pods/imports/k8s/KubeServiceAccountListProps.go +++ b/pods/imports/k8s/KubeServiceAccountListProps.go @@ -1,5 +1,6 @@ package k8s + // ServiceAccountList is a list of ServiceAccount objects. type KubeServiceAccountListProps struct { // List of ServiceAccounts. @@ -11,3 +12,4 @@ type KubeServiceAccountListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeServiceAccountList__checks.go b/pods/imports/k8s/KubeServiceAccountList__checks.go index 3d2b4058e..b6af31c9a 100644 --- a/pods/imports/k8s/KubeServiceAccountList__checks.go +++ b/pods/imports/k8s/KubeServiceAccountList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeServiceAccountListParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeServiceAccountList__no_checks.go b/pods/imports/k8s/KubeServiceAccountList__no_checks.go index 597e8f1a9..82df03e9c 100644 --- a/pods/imports/k8s/KubeServiceAccountList__no_checks.go +++ b/pods/imports/k8s/KubeServiceAccountList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeServiceAccountList_OfParameters(c constructs.IConstruct) error func validateNewKubeServiceAccountListParameters(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeServiceAccountProps.go b/pods/imports/k8s/KubeServiceAccountProps.go index 36f801322..a0037f5bf 100644 --- a/pods/imports/k8s/KubeServiceAccountProps.go +++ b/pods/imports/k8s/KubeServiceAccountProps.go @@ -1,5 +1,6 @@ package k8s + // ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets. type KubeServiceAccountProps struct { // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. @@ -16,6 +17,7 @@ type KubeServiceAccountProps struct { Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` // Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. // - // Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true". The "kubernetes.io/enforce-mountable-secrets" annotation is deprecated since v1.32. Prefer separate namespaces to isolate access to mounted secrets. This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret + // Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret Secrets *[]*ObjectReference `field:"optional" json:"secrets" yaml:"secrets"` } + diff --git a/pods/imports/k8s/KubeServiceAccount__checks.go b/pods/imports/k8s/KubeServiceAccount__checks.go index 4f5bd03f0..0392ed8c1 100644 --- a/pods/imports/k8s/KubeServiceAccount__checks.go +++ b/pods/imports/k8s/KubeServiceAccount__checks.go @@ -57,3 +57,4 @@ func validateNewKubeServiceAccountParameters(scope constructs.Construct, id *str return nil } + diff --git a/pods/imports/k8s/KubeServiceAccount__no_checks.go b/pods/imports/k8s/KubeServiceAccount__no_checks.go index 7c25815a2..5a6b42478 100644 --- a/pods/imports/k8s/KubeServiceAccount__no_checks.go +++ b/pods/imports/k8s/KubeServiceAccount__no_checks.go @@ -23,3 +23,4 @@ func validateKubeServiceAccount_OfParameters(c constructs.IConstruct) error { func validateNewKubeServiceAccountParameters(scope constructs.Construct, id *string, props *KubeServiceAccountProps) error { return nil } + diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go index 1443c1e53..2187b6f66 100644 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1beta1.ServiceCIDRList" API object. func NewKubeServiceCidrListV1Beta1(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) KubeServiceCidrListV1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeServiceCidrListV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go index 56c093624..33b07709c 100644 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // ServiceCIDRList contains a list of ServiceCIDR objects. type KubeServiceCidrListV1Beta1Props struct { // items is the list of ServiceCIDRs. @@ -9,3 +10,4 @@ type KubeServiceCidrListV1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go index 81546cbb8..1fb52b122 100644 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeServiceCidrListV1Beta1Parameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go index fea8828e7..7d88459c6 100644 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeServiceCidrListV1Beta1_OfParameters(c constructs.IConstruct) er func validateNewKubeServiceCidrListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1.go b/pods/imports/k8s/KubeServiceCidrv1Beta1.go index 928e7e79b..0892f8b4c 100644 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1.go +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeServiceCidrv1Beta1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.networking.v1beta1.ServiceCIDR" API object. func NewKubeServiceCidrv1Beta1(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) KubeServiceCidrv1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeServiceCidrv1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go b/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go index d54fcacb9..2a583790f 100644 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. type KubeServiceCidrv1Beta1Props struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeServiceCidrv1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *ServiceCidrSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go b/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go index c12696285..224876a46 100644 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go @@ -57,3 +57,4 @@ func validateNewKubeServiceCidrv1Beta1Parameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go b/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go index f539d4051..728c58d81 100644 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeServiceCidrv1Beta1_OfParameters(c constructs.IConstruct) error func validateNewKubeServiceCidrv1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeServiceList.go b/pods/imports/k8s/KubeServiceList.go index dc35f5366..6f83e3d30 100644 --- a/pods/imports/k8s/KubeServiceList.go +++ b/pods/imports/k8s/KubeServiceList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeServiceList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.core.v1.ServiceList" API object. func NewKubeServiceList(scope constructs.Construct, id *string, props *KubeServiceListProps) KubeServiceList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeServiceList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeServiceListProps.go b/pods/imports/k8s/KubeServiceListProps.go index d554f59a7..774a18048 100644 --- a/pods/imports/k8s/KubeServiceListProps.go +++ b/pods/imports/k8s/KubeServiceListProps.go @@ -1,5 +1,6 @@ package k8s + // ServiceList holds a list of services. type KubeServiceListProps struct { // List of services. @@ -9,3 +10,4 @@ type KubeServiceListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeServiceList__checks.go b/pods/imports/k8s/KubeServiceList__checks.go index c37fdfa73..31b3291f7 100644 --- a/pods/imports/k8s/KubeServiceList__checks.go +++ b/pods/imports/k8s/KubeServiceList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeServiceListParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeServiceList__no_checks.go b/pods/imports/k8s/KubeServiceList__no_checks.go index 08114e1ff..206daf75e 100644 --- a/pods/imports/k8s/KubeServiceList__no_checks.go +++ b/pods/imports/k8s/KubeServiceList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeServiceList_OfParameters(c constructs.IConstruct) error { func validateNewKubeServiceListParameters(scope constructs.Construct, id *string, props *KubeServiceListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeServiceProps.go b/pods/imports/k8s/KubeServiceProps.go index 532266f39..000ea7d90 100644 --- a/pods/imports/k8s/KubeServiceProps.go +++ b/pods/imports/k8s/KubeServiceProps.go @@ -1,5 +1,6 @@ package k8s + // Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. type KubeServiceProps struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type KubeServiceProps struct { // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *ServiceSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeService__checks.go b/pods/imports/k8s/KubeService__checks.go index 5c824a58c..fc5ca84b3 100644 --- a/pods/imports/k8s/KubeService__checks.go +++ b/pods/imports/k8s/KubeService__checks.go @@ -57,3 +57,4 @@ func validateNewKubeServiceParameters(scope constructs.Construct, id *string, pr return nil } + diff --git a/pods/imports/k8s/KubeService__no_checks.go b/pods/imports/k8s/KubeService__no_checks.go index 1ebefb63f..59ce76c48 100644 --- a/pods/imports/k8s/KubeService__no_checks.go +++ b/pods/imports/k8s/KubeService__no_checks.go @@ -23,3 +23,4 @@ func validateKubeService_OfParameters(c constructs.IConstruct) error { func validateNewKubeServiceParameters(scope constructs.Construct, id *string, props *KubeServiceProps) error { return nil } + diff --git a/pods/imports/k8s/KubeStatefulSet.go b/pods/imports/k8s/KubeStatefulSet.go index e7965a724..029641207 100644 --- a/pods/imports/k8s/KubeStatefulSet.go +++ b/pods/imports/k8s/KubeStatefulSet.go @@ -128,6 +128,7 @@ func (j *jsiiProxy_KubeStatefulSet) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.StatefulSet" API object. func NewKubeStatefulSet(scope constructs.Construct, id *string, props *KubeStatefulSetProps) KubeStatefulSet { _init_.Initialize() @@ -319,3 +320,4 @@ func (k *jsiiProxy_KubeStatefulSet) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStatefulSetList.go b/pods/imports/k8s/KubeStatefulSetList.go index 75e0b33bc..e2960a48f 100644 --- a/pods/imports/k8s/KubeStatefulSetList.go +++ b/pods/imports/k8s/KubeStatefulSetList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStatefulSetList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apps.v1.StatefulSetList" API object. func NewKubeStatefulSetList(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) KubeStatefulSetList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStatefulSetList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStatefulSetListProps.go b/pods/imports/k8s/KubeStatefulSetListProps.go index 64b759b90..1b8312460 100644 --- a/pods/imports/k8s/KubeStatefulSetListProps.go +++ b/pods/imports/k8s/KubeStatefulSetListProps.go @@ -1,5 +1,6 @@ package k8s + // StatefulSetList is a collection of StatefulSets. type KubeStatefulSetListProps struct { // Items is the list of stateful sets. @@ -9,3 +10,4 @@ type KubeStatefulSetListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeStatefulSetList__checks.go b/pods/imports/k8s/KubeStatefulSetList__checks.go index cb2c966b7..258c076d8 100644 --- a/pods/imports/k8s/KubeStatefulSetList__checks.go +++ b/pods/imports/k8s/KubeStatefulSetList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeStatefulSetListParameters(scope constructs.Construct, id *st return nil } + diff --git a/pods/imports/k8s/KubeStatefulSetList__no_checks.go b/pods/imports/k8s/KubeStatefulSetList__no_checks.go index fc8dcfe9a..b427fe8e2 100644 --- a/pods/imports/k8s/KubeStatefulSetList__no_checks.go +++ b/pods/imports/k8s/KubeStatefulSetList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStatefulSetList_OfParameters(c constructs.IConstruct) error { func validateNewKubeStatefulSetListParameters(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeStatefulSetProps.go b/pods/imports/k8s/KubeStatefulSetProps.go index da97b7dd4..6e5e665f5 100644 --- a/pods/imports/k8s/KubeStatefulSetProps.go +++ b/pods/imports/k8s/KubeStatefulSetProps.go @@ -1,5 +1,6 @@ package k8s + // StatefulSet represents a set of pods with consistent identities. // // Identities are defined as: @@ -15,3 +16,4 @@ type KubeStatefulSetProps struct { // Spec defines the desired identities of pods in this set. Spec *StatefulSetSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeStatefulSet__checks.go b/pods/imports/k8s/KubeStatefulSet__checks.go index 8adc1735f..de044d3c0 100644 --- a/pods/imports/k8s/KubeStatefulSet__checks.go +++ b/pods/imports/k8s/KubeStatefulSet__checks.go @@ -57,3 +57,4 @@ func validateNewKubeStatefulSetParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeStatefulSet__no_checks.go b/pods/imports/k8s/KubeStatefulSet__no_checks.go index d725e9b2f..dd1c8486e 100644 --- a/pods/imports/k8s/KubeStatefulSet__no_checks.go +++ b/pods/imports/k8s/KubeStatefulSet__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStatefulSet_OfParameters(c constructs.IConstruct) error { func validateNewKubeStatefulSetParameters(scope constructs.Construct, id *string, props *KubeStatefulSetProps) error { return nil } + diff --git a/pods/imports/k8s/KubeStatus.go b/pods/imports/k8s/KubeStatus.go index a8981d5d8..b3eb6f30c 100644 --- a/pods/imports/k8s/KubeStatus.go +++ b/pods/imports/k8s/KubeStatus.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStatus) Node() constructs.Node { return returns } + // Defines a "io.k8s.apimachinery.pkg.apis.meta.v1.Status" API object. func NewKubeStatus(scope constructs.Construct, id *string, props *KubeStatusProps) KubeStatus { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStatus) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStatusProps.go b/pods/imports/k8s/KubeStatusProps.go index 91fe55cb8..2ce8a8609 100644 --- a/pods/imports/k8s/KubeStatusProps.go +++ b/pods/imports/k8s/KubeStatusProps.go @@ -1,5 +1,6 @@ package k8s + // Status is a return value for calls that don't return other objects. type KubeStatusProps struct { // Suggested HTTP return code for this status, 0 if not set. @@ -19,3 +20,4 @@ type KubeStatusProps struct { // If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it. Reason *string `field:"optional" json:"reason" yaml:"reason"` } + diff --git a/pods/imports/k8s/KubeStatus__checks.go b/pods/imports/k8s/KubeStatus__checks.go index a624718ba..9165c9c9e 100644 --- a/pods/imports/k8s/KubeStatus__checks.go +++ b/pods/imports/k8s/KubeStatus__checks.go @@ -57,3 +57,4 @@ func validateNewKubeStatusParameters(scope constructs.Construct, id *string, pro return nil } + diff --git a/pods/imports/k8s/KubeStatus__no_checks.go b/pods/imports/k8s/KubeStatus__no_checks.go index b31b10316..fc92ca2ed 100644 --- a/pods/imports/k8s/KubeStatus__no_checks.go +++ b/pods/imports/k8s/KubeStatus__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStatus_OfParameters(c constructs.IConstruct) error { func validateNewKubeStatusParameters(scope constructs.Construct, id *string, props *KubeStatusProps) error { return nil } + diff --git a/pods/imports/k8s/KubeStorageClass.go b/pods/imports/k8s/KubeStorageClass.go index 442d1afda..a439df3cb 100644 --- a/pods/imports/k8s/KubeStorageClass.go +++ b/pods/imports/k8s/KubeStorageClass.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeStorageClass) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.StorageClass" API object. func NewKubeStorageClass(scope constructs.Construct, id *string, props *KubeStorageClassProps) KubeStorageClass { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeStorageClass) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStorageClassList.go b/pods/imports/k8s/KubeStorageClassList.go index 4e1c895c6..d70ce309d 100644 --- a/pods/imports/k8s/KubeStorageClassList.go +++ b/pods/imports/k8s/KubeStorageClassList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStorageClassList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.StorageClassList" API object. func NewKubeStorageClassList(scope constructs.Construct, id *string, props *KubeStorageClassListProps) KubeStorageClassList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStorageClassList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStorageClassListProps.go b/pods/imports/k8s/KubeStorageClassListProps.go index fda752d1c..db38e7303 100644 --- a/pods/imports/k8s/KubeStorageClassListProps.go +++ b/pods/imports/k8s/KubeStorageClassListProps.go @@ -1,5 +1,6 @@ package k8s + // StorageClassList is a collection of storage classes. type KubeStorageClassListProps struct { // items is the list of StorageClasses. @@ -7,3 +8,4 @@ type KubeStorageClassListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeStorageClassList__checks.go b/pods/imports/k8s/KubeStorageClassList__checks.go index 04e80b0e4..488b17a70 100644 --- a/pods/imports/k8s/KubeStorageClassList__checks.go +++ b/pods/imports/k8s/KubeStorageClassList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeStorageClassListParameters(scope constructs.Construct, id *s return nil } + diff --git a/pods/imports/k8s/KubeStorageClassList__no_checks.go b/pods/imports/k8s/KubeStorageClassList__no_checks.go index 193d93710..de4fb5efe 100644 --- a/pods/imports/k8s/KubeStorageClassList__no_checks.go +++ b/pods/imports/k8s/KubeStorageClassList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStorageClassList_OfParameters(c constructs.IConstruct) error { func validateNewKubeStorageClassListParameters(scope constructs.Construct, id *string, props *KubeStorageClassListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeStorageClassProps.go b/pods/imports/k8s/KubeStorageClassProps.go index e4edc7595..008b38e33 100644 --- a/pods/imports/k8s/KubeStorageClassProps.go +++ b/pods/imports/k8s/KubeStorageClassProps.go @@ -1,5 +1,6 @@ package k8s + // StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned. // // StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name. @@ -33,3 +34,4 @@ type KubeStorageClassProps struct { // When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature. VolumeBindingMode *string `field:"optional" json:"volumeBindingMode" yaml:"volumeBindingMode"` } + diff --git a/pods/imports/k8s/KubeStorageClass__checks.go b/pods/imports/k8s/KubeStorageClass__checks.go index fab3086f0..db7916a34 100644 --- a/pods/imports/k8s/KubeStorageClass__checks.go +++ b/pods/imports/k8s/KubeStorageClass__checks.go @@ -63,3 +63,4 @@ func validateNewKubeStorageClassParameters(scope constructs.Construct, id *strin return nil } + diff --git a/pods/imports/k8s/KubeStorageClass__no_checks.go b/pods/imports/k8s/KubeStorageClass__no_checks.go index 657dfdcd6..0496b2157 100644 --- a/pods/imports/k8s/KubeStorageClass__no_checks.go +++ b/pods/imports/k8s/KubeStorageClass__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStorageClass_OfParameters(c constructs.IConstruct) error { func validateNewKubeStorageClassParameters(scope constructs.Construct, id *string, props *KubeStorageClassProps) error { return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go index 22046523e..a1179f95a 100644 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList" API object. func NewKubeStorageVersionListV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) KubeStorageVersionListV1Alpha1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go index 506f195ba..7daad05e1 100644 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // A list of StorageVersions. type KubeStorageVersionListV1Alpha1Props struct { // Items holds a list of StorageVersion. @@ -9,3 +10,4 @@ type KubeStorageVersionListV1Alpha1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go index 83c297471..ea6b9a483 100644 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeStorageVersionListV1Alpha1Parameters(scope constructs.Constr return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go index e8d6b20cb..47b08d3a6 100644 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStorageVersionListV1Alpha1_OfParameters(c constructs.IConstruct func validateNewKubeStorageVersionListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go index f3b27a1ca..8fdd7608a 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Node() constructs.No return returns } + // Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList" API object. func NewKubeStorageVersionMigrationListV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) KubeStorageVersionMigrationListV1Alpha1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go index 402767e59..7280acefa 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // StorageVersionMigrationList is a collection of storage version migrations. type KubeStorageVersionMigrationListV1Alpha1Props struct { // Items is the list of StorageVersionMigration. @@ -7,3 +8,4 @@ type KubeStorageVersionMigrationListV1Alpha1Props struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go index 15276d24a..1838571d1 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope construc return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go index a04c9e703..095676cb4 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c constructs.I func validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go index c712ed849..b1ef62365 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration" API object. func NewKubeStorageVersionMigrationV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) KubeStorageVersionMigrationV1Alpha1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go index c9aca4586..3f2696e6d 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // StorageVersionMigration represents a migration of stored data to the latest storage version. type KubeStorageVersionMigrationV1Alpha1Props struct { // Standard object metadata. @@ -9,3 +10,4 @@ type KubeStorageVersionMigrationV1Alpha1Props struct { // Specification of the migration. Spec *StorageVersionMigrationSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go index 54ea395f9..ba162cba6 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go @@ -57,3 +57,4 @@ func validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope constructs.C return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go index 24067bb14..1113d04b1 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c constructs.ICons func validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go index f04d8117c..689b15d99 100644 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion" API object. func NewKubeStorageVersionV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) KubeStorageVersionV1Alpha1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeStorageVersionV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go index e9d994b67..40328574d 100644 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // Storage version of a specific resource. type KubeStorageVersionV1Alpha1Props struct { // Spec is an empty spec. @@ -9,3 +10,4 @@ type KubeStorageVersionV1Alpha1Props struct { // The name is .. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go index fa25c349f..083ca8201 100644 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeStorageVersionV1Alpha1Parameters(scope constructs.Construct, return nil } + diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go index 245639e69..8a6251492 100644 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeStorageVersionV1Alpha1_OfParameters(c constructs.IConstruct) er func validateNewKubeStorageVersionV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeSubjectAccessReview.go b/pods/imports/k8s/KubeSubjectAccessReview.go index d76614baf..b42973311 100644 --- a/pods/imports/k8s/KubeSubjectAccessReview.go +++ b/pods/imports/k8s/KubeSubjectAccessReview.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeSubjectAccessReview) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authorization.v1.SubjectAccessReview" API object. func NewKubeSubjectAccessReview(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) KubeSubjectAccessReview { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeSubjectAccessReview) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeSubjectAccessReviewProps.go b/pods/imports/k8s/KubeSubjectAccessReviewProps.go index 4bd1c6fd7..b3a459aaa 100644 --- a/pods/imports/k8s/KubeSubjectAccessReviewProps.go +++ b/pods/imports/k8s/KubeSubjectAccessReviewProps.go @@ -1,5 +1,6 @@ package k8s + // SubjectAccessReview checks whether or not a user or group can perform an action. type KubeSubjectAccessReviewProps struct { // Spec holds information about the request being evaluated. @@ -9,3 +10,4 @@ type KubeSubjectAccessReviewProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeSubjectAccessReview__checks.go b/pods/imports/k8s/KubeSubjectAccessReview__checks.go index d84c6f586..ad4561dc4 100644 --- a/pods/imports/k8s/KubeSubjectAccessReview__checks.go +++ b/pods/imports/k8s/KubeSubjectAccessReview__checks.go @@ -63,3 +63,4 @@ func validateNewKubeSubjectAccessReviewParameters(scope constructs.Construct, id return nil } + diff --git a/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go index 8e3d0bccf..825b66a42 100644 --- a/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go +++ b/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go @@ -23,3 +23,4 @@ func validateKubeSubjectAccessReview_OfParameters(c constructs.IConstruct) error func validateNewKubeSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) error { return nil } + diff --git a/pods/imports/k8s/KubeTokenRequest.go b/pods/imports/k8s/KubeTokenRequest.go index 86adfe676..a68d653bc 100644 --- a/pods/imports/k8s/KubeTokenRequest.go +++ b/pods/imports/k8s/KubeTokenRequest.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeTokenRequest) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authentication.v1.TokenRequest" API object. func NewKubeTokenRequest(scope constructs.Construct, id *string, props *KubeTokenRequestProps) KubeTokenRequest { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeTokenRequest) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeTokenRequestProps.go b/pods/imports/k8s/KubeTokenRequestProps.go index 3d3047805..d018ce066 100644 --- a/pods/imports/k8s/KubeTokenRequestProps.go +++ b/pods/imports/k8s/KubeTokenRequestProps.go @@ -1,5 +1,6 @@ package k8s + // TokenRequest requests a token for a given service account. type KubeTokenRequestProps struct { // Spec holds information about the request being evaluated. @@ -9,3 +10,4 @@ type KubeTokenRequestProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeTokenRequest__checks.go b/pods/imports/k8s/KubeTokenRequest__checks.go index c47f5c2ab..807c66c9e 100644 --- a/pods/imports/k8s/KubeTokenRequest__checks.go +++ b/pods/imports/k8s/KubeTokenRequest__checks.go @@ -63,3 +63,4 @@ func validateNewKubeTokenRequestParameters(scope constructs.Construct, id *strin return nil } + diff --git a/pods/imports/k8s/KubeTokenRequest__no_checks.go b/pods/imports/k8s/KubeTokenRequest__no_checks.go index b023159b6..6434cbf0e 100644 --- a/pods/imports/k8s/KubeTokenRequest__no_checks.go +++ b/pods/imports/k8s/KubeTokenRequest__no_checks.go @@ -23,3 +23,4 @@ func validateKubeTokenRequest_OfParameters(c constructs.IConstruct) error { func validateNewKubeTokenRequestParameters(scope constructs.Construct, id *string, props *KubeTokenRequestProps) error { return nil } + diff --git a/pods/imports/k8s/KubeTokenReview.go b/pods/imports/k8s/KubeTokenReview.go index a8ef3c198..110e077c4 100644 --- a/pods/imports/k8s/KubeTokenReview.go +++ b/pods/imports/k8s/KubeTokenReview.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeTokenReview) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.authentication.v1.TokenReview" API object. func NewKubeTokenReview(scope constructs.Construct, id *string, props *KubeTokenReviewProps) KubeTokenReview { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeTokenReview) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeTokenReviewProps.go b/pods/imports/k8s/KubeTokenReviewProps.go index 3ec020a5f..4baf8478a 100644 --- a/pods/imports/k8s/KubeTokenReviewProps.go +++ b/pods/imports/k8s/KubeTokenReviewProps.go @@ -1,5 +1,6 @@ package k8s + // TokenReview attempts to authenticate a token to a known user. // // Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. @@ -11,3 +12,4 @@ type KubeTokenReviewProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeTokenReview__checks.go b/pods/imports/k8s/KubeTokenReview__checks.go index b8095f4b7..2f5538b8a 100644 --- a/pods/imports/k8s/KubeTokenReview__checks.go +++ b/pods/imports/k8s/KubeTokenReview__checks.go @@ -63,3 +63,4 @@ func validateNewKubeTokenReviewParameters(scope constructs.Construct, id *string return nil } + diff --git a/pods/imports/k8s/KubeTokenReview__no_checks.go b/pods/imports/k8s/KubeTokenReview__no_checks.go index 9db152c5f..f5232f066 100644 --- a/pods/imports/k8s/KubeTokenReview__no_checks.go +++ b/pods/imports/k8s/KubeTokenReview__no_checks.go @@ -23,3 +23,4 @@ func validateKubeTokenReview_OfParameters(c constructs.IConstruct) error { func validateNewKubeTokenReviewParameters(scope constructs.Construct, id *string, props *KubeTokenReviewProps) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go index 771f312e6..0322c2c41 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy" API object. func NewKubeValidatingAdmissionPolicy(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) KubeValidatingAdmissionPolicy { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicy) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go index 3e119e379..5d759ed51 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go @@ -128,6 +128,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Node() constructs.Node return returns } + // Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding" API object. func NewKubeValidatingAdmissionPolicyBinding(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) KubeValidatingAdmissionPolicyBinding { _init_.Initialize() @@ -319,3 +320,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go index 9155a5ea8..feda9079e 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Node() constructs.N return returns } + // Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList" API object. func NewKubeValidatingAdmissionPolicyBindingList(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) KubeValidatingAdmissionPolicyBindingList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ToString() *string return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go index 6960fbf28..1b7c7a344 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. type KubeValidatingAdmissionPolicyBindingListProps struct { // List of PolicyBinding. @@ -9,3 +10,4 @@ type KubeValidatingAdmissionPolicyBindingListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go similarity index 59% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go index 81276286d..d2b4d782b 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go @@ -9,8 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding. -type KubeMutatingAdmissionPolicyBindingListV1Alpha1 interface { +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. +type KubeValidatingAdmissionPolicyBindingListV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeMutatingAdmissionPolicyBindingListV1Alpha1 interface { ToString() *string } -// The jsii proxy struct for KubeMutatingAdmissionPolicyBindingListV1Alpha1 -type jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1 struct { +// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingListV1Alpha1 +type jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ApiGroup() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ApiGroup() *s return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ApiVersion() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ApiVersion() return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Chart() cdk8s return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Kind() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Kind() *strin return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Metadata() cd return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Name() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Name() *strin return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Node() constructs.Node { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) Node() constr return returns } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList" API object. -func NewKubeMutatingAdmissionPolicyBindingListV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) KubeMutatingAdmissionPolicyBindingListV1Alpha1 { + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList" API object. +func NewKubeValidatingAdmissionPolicyBindingListV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) KubeValidatingAdmissionPolicyBindingListV1Alpha1 { _init_.Initialize() - if err := validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope, id, props); err != nil { + if err := validateNewKubeValidatingAdmissionPolicyBindingListV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1{} + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1{} _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeMutatingAdmissionPolicyBindingListV1Alpha1(scope constructs.Construc return &j } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList" API object. -func NewKubeMutatingAdmissionPolicyBindingListV1Alpha1_Override(k KubeMutatingAdmissionPolicyBindingListV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) { +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList" API object. +func NewKubeValidatingAdmissionPolicyBindingListV1Alpha1_Override(k KubeValidatingAdmissionPolicyBindingListV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeMutatingAdmissionPolicyBindingListV1Alpha1_Override(k KubeMutatingAd // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObject(o interface{}) *bool { +func KubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObject(o interface{}) * // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstruct(x interface{}) *bool { +func KubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstruct(x interface{}) * return returns } -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList". +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeMutatingAdmissionPolicyBindingListV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) interface{} { +func KubeValidatingAdmissionPolicyBindingListV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeMutatingAdmissionPolicyBindingListV1Alpha1_Manifest(props *KubeMutating // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeMutatingAdmissionPolicyBindingListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeValidatingAdmissionPolicyBindingListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeMutatingAdmissionPolicyBindingListV1Alpha1_Of(c constructs.IConstruct) return returns } -func KubeMutatingAdmissionPolicyBindingListV1Alpha1_GVK() *cdk8s.GroupVersionKind { +func KubeValidatingAdmissionPolicyBindingListV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) AddDependency ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) AddJsonPatch( ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ToJson() interface{} { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ToJson() inte return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ToString() *string { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1) ToString() *s return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go new file mode 100644 index 000000000..54293cb44 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go @@ -0,0 +1,13 @@ +package k8s + + +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. +type KubeValidatingAdmissionPolicyBindingListV1Alpha1Props struct { + // List of PolicyBinding. + Items *[]*KubeValidatingAdmissionPolicyBindingV1Alpha1Props `field:"required" json:"items" yaml:"items"` + // Standard list metadata. + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` +} + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go similarity index 62% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go index e7db3793f..719fe4b2d 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingListV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameter return nil } -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameter return nil } -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(p return nil } -func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeMutatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c const return nil } -func validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingListV1Alpha1Props) error { +func validateNewKubeValidatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeMutatingAdmissionPolicyBindingListV1Alpha1Parameters(scope c return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go new file mode 100644 index 000000000..33c452aac --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go index e84a397c3..e16014bcf 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Node() const return returns } + // Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" API object. func NewKubeValidatingAdmissionPolicyBindingListV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) KubeValidatingAdmissionPolicyBindingListV1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ToString() * return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go index 79f7e62ce..1fd845775 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. type KubeValidatingAdmissionPolicyBindingListV1Beta1Props struct { // List of PolicyBinding. @@ -9,3 +10,4 @@ type KubeValidatingAdmissionPolicyBindingListV1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go index 7d119a33f..fce3a813d 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go index f55430446..e317f483a 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c cons func validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go index cf01359cf..aa1489799 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope constru return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go index d74243108..83056e929 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c constructs. func validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go index a2a8958b3..95e685122 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. // // ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. @@ -15,3 +16,4 @@ type KubeValidatingAdmissionPolicyBindingProps struct { // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. Spec *ValidatingAdmissionPolicyBindingSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go similarity index 58% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go index 95691a4a7..ad7503ba5 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyBindingV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go @@ -9,14 +9,14 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources. +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. // -// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators configure policies for clusters. +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. // -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget). +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. // -// Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeMutatingAdmissionPolicyBindingV1Alpha1 interface { +// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeValidatingAdmissionPolicyBindingV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -53,12 +53,12 @@ type KubeMutatingAdmissionPolicyBindingV1Alpha1 interface { ToString() *string } -// The jsii proxy struct for KubeMutatingAdmissionPolicyBindingV1Alpha1 -type jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1 struct { +// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingV1Alpha1 +type jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ApiGroup() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -68,7 +68,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ApiGroup() *strin return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ApiVersion() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -78,7 +78,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ApiVersion() *str return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -88,7 +88,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Chart() cdk8s.Cha return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Kind() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -98,7 +98,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Kind() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -108,7 +108,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Metadata() cdk8s. return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Name() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -118,7 +118,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Name() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Node() constructs.Node { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -128,17 +128,18 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) Node() constructs return returns } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding" API object. -func NewKubeMutatingAdmissionPolicyBindingV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) KubeMutatingAdmissionPolicyBindingV1Alpha1 { + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding" API object. +func NewKubeValidatingAdmissionPolicyBindingV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) KubeValidatingAdmissionPolicyBindingV1Alpha1 { _init_.Initialize() - if err := validateNewKubeMutatingAdmissionPolicyBindingV1Alpha1Parameters(scope, id, props); err != nil { + if err := validateNewKubeValidatingAdmissionPolicyBindingV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1{} + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1{} _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -146,12 +147,12 @@ func NewKubeMutatingAdmissionPolicyBindingV1Alpha1(scope constructs.Construct, i return &j } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding" API object. -func NewKubeMutatingAdmissionPolicyBindingV1Alpha1_Override(k KubeMutatingAdmissionPolicyBindingV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) { +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding" API object. +func NewKubeValidatingAdmissionPolicyBindingV1Alpha1_Override(k KubeValidatingAdmissionPolicyBindingV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -160,16 +161,16 @@ func NewKubeMutatingAdmissionPolicyBindingV1Alpha1_Override(k KubeMutatingAdmiss // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObject(o interface{}) *bool { +func KubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -195,16 +196,16 @@ func KubeMutatingAdmissionPolicyBindingV1Alpha1_IsApiObject(o interface{}) *bool // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstruct(x interface{}) *bool { +func KubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -213,19 +214,19 @@ func KubeMutatingAdmissionPolicyBindingV1Alpha1_IsConstruct(x interface{}) *bool return returns } -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding". +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeMutatingAdmissionPolicyBindingV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyBindingV1Alpha1Props) interface{} { +func KubeValidatingAdmissionPolicyBindingV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -239,16 +240,16 @@ func KubeMutatingAdmissionPolicyBindingV1Alpha1_Manifest(props *KubeMutatingAdmi // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeMutatingAdmissionPolicyBindingV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeValidatingAdmissionPolicyBindingV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyBindingV1Alpha1_OfParameters(c); err != nil { + if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", "of", []interface{}{c}, &returns, @@ -257,18 +258,18 @@ func KubeMutatingAdmissionPolicyBindingV1Alpha1_Of(c constructs.IConstruct) cdk8 return returns } -func KubeMutatingAdmissionPolicyBindingV1Alpha1_GVK() *cdk8s.GroupVersionKind { +func KubeValidatingAdmissionPolicyBindingV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -281,7 +282,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) AddDependency(dep ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -294,7 +295,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) AddJsonPatch(ops ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ToJson() interface{} { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -307,7 +308,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ToJson() interfac return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ToString() *string { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -319,3 +320,4 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1) ToString() *strin return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go new file mode 100644 index 000000000..7236b189f --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go @@ -0,0 +1,19 @@ +package k8s + + +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. +// +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. +// +// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. +// +// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. +type KubeValidatingAdmissionPolicyBindingV1Alpha1Props struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. + Spec *ValidatingAdmissionPolicyBindingSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go new file mode 100644 index 000000000..6c5998922 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go @@ -0,0 +1,60 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go new file mode 100644 index 000000000..235bfbc04 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go index dba64b691..dec5b2b5f 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go @@ -128,6 +128,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Node() construct return returns } + // Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" API object. func NewKubeValidatingAdmissionPolicyBindingV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) KubeValidatingAdmissionPolicyBindingV1Beta1 { _init_.Initialize() @@ -319,3 +320,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ToString() *stri return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go index 535fd46c2..066929394 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. // // ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. @@ -15,3 +16,4 @@ type KubeValidatingAdmissionPolicyBindingV1Beta1Props struct { // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. Spec *ValidatingAdmissionPolicyBindingSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go index f1ee8cfcb..56baad344 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go @@ -57,3 +57,4 @@ func validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope cons return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go index 4701d0f7e..ea229b5dc 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c construc func validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go index 17deb7f1b..6230c2234 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go @@ -57,3 +57,4 @@ func validateNewKubeValidatingAdmissionPolicyBindingParameters(scope constructs. return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go index 2ffd72245..5e4274be6 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyBinding_OfParameters(c constructs.ICon func validateNewKubeValidatingAdmissionPolicyBindingParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go index 05229e7ef..43ee0f480 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList" API object. func NewKubeValidatingAdmissionPolicyList(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) KubeValidatingAdmissionPolicyList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go index 213be493b..ba6d4810c 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. type KubeValidatingAdmissionPolicyListProps struct { // List of ValidatingAdmissionPolicy. @@ -9,3 +10,4 @@ type KubeValidatingAdmissionPolicyListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go similarity index 61% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go index 96152b3c4..d3d8af9b5 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go @@ -9,8 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy. -type KubeMutatingAdmissionPolicyListV1Alpha1 interface { +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. +type KubeValidatingAdmissionPolicyListV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeMutatingAdmissionPolicyListV1Alpha1 interface { ToString() *string } -// The jsii proxy struct for KubeMutatingAdmissionPolicyListV1Alpha1 -type jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1 struct { +// The jsii proxy struct for KubeValidatingAdmissionPolicyListV1Alpha1 +type jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ApiGroup() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ApiVersion() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ApiVersion() *string return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Chart() cdk8s.Chart return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Kind() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Kind() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Metadata() cdk8s.Api return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Name() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Name() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Node() constructs.Node { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) Node() constructs.No return returns } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList" API object. -func NewKubeMutatingAdmissionPolicyListV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) KubeMutatingAdmissionPolicyListV1Alpha1 { + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList" API object. +func NewKubeValidatingAdmissionPolicyListV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) KubeValidatingAdmissionPolicyListV1Alpha1 { _init_.Initialize() - if err := validateNewKubeMutatingAdmissionPolicyListV1Alpha1Parameters(scope, id, props); err != nil { + if err := validateNewKubeValidatingAdmissionPolicyListV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1{} + j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1{} _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeMutatingAdmissionPolicyListV1Alpha1(scope constructs.Construct, id * return &j } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList" API object. -func NewKubeMutatingAdmissionPolicyListV1Alpha1_Override(k KubeMutatingAdmissionPolicyListV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyListV1Alpha1Props) { +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList" API object. +func NewKubeValidatingAdmissionPolicyListV1Alpha1_Override(k KubeValidatingAdmissionPolicyListV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeMutatingAdmissionPolicyListV1Alpha1_Override(k KubeMutatingAdmission // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeMutatingAdmissionPolicyListV1Alpha1_IsApiObject(o interface{}) *bool { +func KubeValidatingAdmissionPolicyListV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o); err != nil { + if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeMutatingAdmissionPolicyListV1Alpha1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeMutatingAdmissionPolicyListV1Alpha1_IsConstruct(x interface{}) *bool { +func KubeValidatingAdmissionPolicyListV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x); err != nil { + if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeMutatingAdmissionPolicyListV1Alpha1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList". +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeMutatingAdmissionPolicyListV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyListV1Alpha1Props) interface{} { +func KubeValidatingAdmissionPolicyListV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyListV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_ManifestParameters(props); err != nil { + if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeMutatingAdmissionPolicyListV1Alpha1_Manifest(props *KubeMutatingAdmissi // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeMutatingAdmissionPolicyListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeValidatingAdmissionPolicyListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyListV1Alpha1_OfParameters(c); err != nil { + if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeMutatingAdmissionPolicyListV1Alpha1_Of(c constructs.IConstruct) cdk8s.A return returns } -func KubeMutatingAdmissionPolicyListV1Alpha1_GVK() *cdk8s.GroupVersionKind { +func KubeValidatingAdmissionPolicyListV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) AddDependency(depend ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) AddJsonPatch(ops ... ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ToJson() interface{} { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ToJson() interface{} return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ToString() *string { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go similarity index 53% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go index 8f63fa7d8..2f381f031 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyListV1Alpha1Props.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go @@ -1,11 +1,13 @@ package k8s -// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy. -type KubeMutatingAdmissionPolicyListV1Alpha1Props struct { + +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. +type KubeValidatingAdmissionPolicyListV1Alpha1Props struct { // List of ValidatingAdmissionPolicy. - Items *[]*KubeMutatingAdmissionPolicyV1Alpha1Props `field:"required" json:"items" yaml:"items"` + Items *[]*KubeValidatingAdmissionPolicyV1Alpha1Props `field:"required" json:"items" yaml:"items"` // Standard list metadata. // // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go similarity index 65% rename from pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go index 08a2c899f..f51f8ef27 100644 --- a/pods/imports/k8s/KubeResourceSliceV1Beta1__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go @@ -10,7 +10,7 @@ import ( "github.com/aws/constructs-go/constructs/v10" ) -func validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o interface{}) error { +func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { if o == nil { return fmt.Errorf("parameter o is required, but nil was provided") } @@ -18,7 +18,7 @@ func validateKubeResourceSliceV1Beta1_IsApiObjectParameters(o interface{}) error return nil } -func validateKubeResourceSliceV1Beta1_IsConstructParameters(x interface{}) error { +func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { if x == nil { return fmt.Errorf("parameter x is required, but nil was provided") } @@ -26,7 +26,7 @@ func validateKubeResourceSliceV1Beta1_IsConstructParameters(x interface{}) error return nil } -func validateKubeResourceSliceV1Beta1_ManifestParameters(props *KubeResourceSliceV1Beta1Props) error { +func validateKubeValidatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { if props == nil { return fmt.Errorf("parameter props is required, but nil was provided") } @@ -37,7 +37,7 @@ func validateKubeResourceSliceV1Beta1_ManifestParameters(props *KubeResourceSlic return nil } -func validateKubeResourceSliceV1Beta1_OfParameters(c constructs.IConstruct) error { +func validateKubeValidatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { if c == nil { return fmt.Errorf("parameter c is required, but nil was provided") } @@ -45,7 +45,7 @@ func validateKubeResourceSliceV1Beta1_OfParameters(c constructs.IConstruct) erro return nil } -func validateNewKubeResourceSliceV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Beta1Props) error { +func validateNewKubeValidatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { if scope == nil { return fmt.Errorf("parameter scope is required, but nil was provided") } @@ -63,3 +63,4 @@ func validateNewKubeResourceSliceV1Beta1Parameters(scope constructs.Construct, i return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go new file mode 100644 index 000000000..7995fe8f6 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go index ecc9fe4f1..ad1c5c6a1 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Node() constructs.N return returns } + // Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" API object. func NewKubeValidatingAdmissionPolicyListV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) KubeValidatingAdmissionPolicyListV1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ToString() *string return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go index fc6c3047e..340913600 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. type KubeValidatingAdmissionPolicyListV1Beta1Props struct { // List of ValidatingAdmissionPolicy. @@ -9,3 +10,4 @@ type KubeValidatingAdmissionPolicyListV1Beta1Props struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go index 1bf8623c8..dd33aa0da 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope constru return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go index 3f88b9699..55bdd4054 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c constructs. func validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go index 0b2a527f6..f697c6fa2 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeValidatingAdmissionPolicyListParameters(scope constructs.Con return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go index 81492bfd5..8ac2dadfd 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyList_OfParameters(c constructs.IConstr func validateNewKubeValidatingAdmissionPolicyListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go index 0defb2c48..dd9096a92 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. type KubeValidatingAdmissionPolicyProps struct { // Standard object metadata; @@ -9,3 +10,4 @@ type KubeValidatingAdmissionPolicyProps struct { // Specification of the desired behavior of the ValidatingAdmissionPolicy. Spec *ValidatingAdmissionPolicySpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go similarity index 62% rename from pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go rename to pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go index 9909f610d..0c598a811 100644 --- a/pods/imports/k8s/KubeMutatingAdmissionPolicyV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go @@ -9,8 +9,8 @@ import ( "github.com/smartcontractkit/pods/imports/k8s/internal" ) -// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain. -type KubeMutatingAdmissionPolicyV1Alpha1 interface { +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. +type KubeValidatingAdmissionPolicyV1Alpha1 interface { cdk8s.ApiObject // The group portion of the API version (e.g. `authorization.k8s.io`). ApiGroup() *string @@ -47,12 +47,12 @@ type KubeMutatingAdmissionPolicyV1Alpha1 interface { ToString() *string } -// The jsii proxy struct for KubeMutatingAdmissionPolicyV1Alpha1 -type jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1 struct { +// The jsii proxy struct for KubeValidatingAdmissionPolicyV1Alpha1 +type jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1 struct { internal.Type__cdk8sApiObject } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ApiGroup() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ApiGroup() *string { var returns *string _jsii_.Get( j, @@ -62,7 +62,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ApiGroup() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ApiVersion() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ApiVersion() *string { var returns *string _jsii_.Get( j, @@ -72,7 +72,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ApiVersion() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Chart() cdk8s.Chart { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Chart() cdk8s.Chart { var returns cdk8s.Chart _jsii_.Get( j, @@ -82,7 +82,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Chart() cdk8s.Chart { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Kind() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Kind() *string { var returns *string _jsii_.Get( j, @@ -92,7 +92,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Kind() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { var returns cdk8s.ApiObjectMetadataDefinition _jsii_.Get( j, @@ -102,7 +102,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Metadata() cdk8s.ApiObje return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Name() *string { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Name() *string { var returns *string _jsii_.Get( j, @@ -112,7 +112,7 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Name() *string { return returns } -func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Node() constructs.Node { +func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Node() constructs.Node { var returns constructs.Node _jsii_.Get( j, @@ -122,17 +122,18 @@ func (j *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) Node() constructs.Node { return returns } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy" API object. -func NewKubeMutatingAdmissionPolicyV1Alpha1(scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) KubeMutatingAdmissionPolicyV1Alpha1 { + +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy" API object. +func NewKubeValidatingAdmissionPolicyV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) KubeValidatingAdmissionPolicyV1Alpha1 { _init_.Initialize() - if err := validateNewKubeMutatingAdmissionPolicyV1Alpha1Parameters(scope, id, props); err != nil { + if err := validateNewKubeValidatingAdmissionPolicyV1Alpha1Parameters(scope, id, props); err != nil { panic(err) } - j := jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1{} + j := jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1{} _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", []interface{}{scope, id, props}, &j, ) @@ -140,12 +141,12 @@ func NewKubeMutatingAdmissionPolicyV1Alpha1(scope constructs.Construct, id *stri return &j } -// Defines a "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy" API object. -func NewKubeMutatingAdmissionPolicyV1Alpha1_Override(k KubeMutatingAdmissionPolicyV1Alpha1, scope constructs.Construct, id *string, props *KubeMutatingAdmissionPolicyV1Alpha1Props) { +// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy" API object. +func NewKubeValidatingAdmissionPolicyV1Alpha1_Override(k KubeValidatingAdmissionPolicyV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) { _init_.Initialize() _jsii_.Create( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", []interface{}{scope, id, props}, k, ) @@ -154,16 +155,16 @@ func NewKubeMutatingAdmissionPolicyV1Alpha1_Override(k KubeMutatingAdmissionPoli // Return whether the given object is an `ApiObject`. // // We do attribute detection since we can't reliably use 'instanceof'. -func KubeMutatingAdmissionPolicyV1Alpha1_IsApiObject(o interface{}) *bool { +func KubeValidatingAdmissionPolicyV1Alpha1_IsApiObject(o interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o); err != nil { + if err := validateKubeValidatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", "isApiObject", []interface{}{o}, &returns, @@ -189,16 +190,16 @@ func KubeMutatingAdmissionPolicyV1Alpha1_IsApiObject(o interface{}) *bool { // this type-testing method instead. // // Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeMutatingAdmissionPolicyV1Alpha1_IsConstruct(x interface{}) *bool { +func KubeValidatingAdmissionPolicyV1Alpha1_IsConstruct(x interface{}) *bool { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyV1Alpha1_IsConstructParameters(x); err != nil { + if err := validateKubeValidatingAdmissionPolicyV1Alpha1_IsConstructParameters(x); err != nil { panic(err) } var returns *bool _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", "isConstruct", []interface{}{x}, &returns, @@ -207,19 +208,19 @@ func KubeMutatingAdmissionPolicyV1Alpha1_IsConstruct(x interface{}) *bool { return returns } -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy". +// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy". // // This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeMutatingAdmissionPolicyV1Alpha1_Manifest(props *KubeMutatingAdmissionPolicyV1Alpha1Props) interface{} { +func KubeValidatingAdmissionPolicyV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyV1Alpha1Props) interface{} { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyV1Alpha1_ManifestParameters(props); err != nil { + if err := validateKubeValidatingAdmissionPolicyV1Alpha1_ManifestParameters(props); err != nil { panic(err) } var returns interface{} _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", "manifest", []interface{}{props}, &returns, @@ -233,16 +234,16 @@ func KubeMutatingAdmissionPolicyV1Alpha1_Manifest(props *KubeMutatingAdmissionPo // If `c` is an `ApiObject`, it is returned directly. Throws an // exception if the construct does not have a child named `Default` _or_ if // this child is not an `ApiObject`. -func KubeMutatingAdmissionPolicyV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { +func KubeValidatingAdmissionPolicyV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { _init_.Initialize() - if err := validateKubeMutatingAdmissionPolicyV1Alpha1_OfParameters(c); err != nil { + if err := validateKubeValidatingAdmissionPolicyV1Alpha1_OfParameters(c); err != nil { panic(err) } var returns cdk8s.ApiObject _jsii_.StaticInvoke( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", "of", []interface{}{c}, &returns, @@ -251,18 +252,18 @@ func KubeMutatingAdmissionPolicyV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiOb return returns } -func KubeMutatingAdmissionPolicyV1Alpha1_GVK() *cdk8s.GroupVersionKind { +func KubeValidatingAdmissionPolicyV1Alpha1_GVK() *cdk8s.GroupVersionKind { _init_.Initialize() var returns *cdk8s.GroupVersionKind _jsii_.StaticGet( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", "GVK", &returns, ) return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { args := []interface{}{} for _, a := range dependencies { args = append(args, a) @@ -275,7 +276,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) AddDependency(dependenci ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { args := []interface{}{} for _, a := range ops { args = append(args, a) @@ -288,7 +289,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) AddJsonPatch(ops ...cdk8 ) } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ToJson() interface{} { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ToJson() interface{} { var returns interface{} _jsii_.Invoke( @@ -301,7 +302,7 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ToJson() interface{} { return returns } -func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ToString() *string { +func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ToString() *string { var returns *string _jsii_.Invoke( @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go new file mode 100644 index 000000000..64046ea17 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go @@ -0,0 +1,13 @@ +package k8s + + +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. +type KubeValidatingAdmissionPolicyV1Alpha1Props struct { + // Standard object metadata; + // + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` + // Specification of the desired behavior of the ValidatingAdmissionPolicy. + Spec *ValidatingAdmissionPolicySpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go new file mode 100644 index 000000000..769215830 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go @@ -0,0 +1,60 @@ +//go:build !no_runtime_type_checking + +package k8s + +import ( + "fmt" + + _jsii_ "github.com/aws/jsii-runtime-go/runtime" + + "github.com/aws/constructs-go/constructs/v10" +) + +func validateKubeValidatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { + if o == nil { + return fmt.Errorf("parameter o is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { + if x == nil { + return fmt.Errorf("parameter x is required, but nil was provided") + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { + if c == nil { + return fmt.Errorf("parameter c is required, but nil was provided") + } + + return nil +} + +func validateNewKubeValidatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { + if scope == nil { + return fmt.Errorf("parameter scope is required, but nil was provided") + } + + if id == nil { + return fmt.Errorf("parameter id is required, but nil was provided") + } + + if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { + return err + } + + return nil +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go new file mode 100644 index 000000000..6b411afc6 --- /dev/null +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go @@ -0,0 +1,26 @@ +//go:build no_runtime_type_checking + +package k8s + +// Building without runtime type checking enabled, so all the below just return nil + +func validateKubeValidatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { + return nil +} + +func validateKubeValidatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { + return nil +} + +func validateNewKubeValidatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { + return nil +} + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go index 6ce66a983..d2a79661b 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Node() constructs.Node return returns } + // Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" API object. func NewKubeValidatingAdmissionPolicyV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) KubeValidatingAdmissionPolicyV1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go index b41d82cc0..18fe40f90 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. type KubeValidatingAdmissionPolicyV1Beta1Props struct { // Standard object metadata; @@ -9,3 +10,4 @@ type KubeValidatingAdmissionPolicyV1Beta1Props struct { // Specification of the desired behavior of the ValidatingAdmissionPolicy. Spec *ValidatingAdmissionPolicySpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go index ab26cc6d3..f9a5d5d99 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go @@ -57,3 +57,4 @@ func validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope constructs. return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go index 47ebfc913..e6e02b4b0 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c constructs.ICon func validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go index 31d19d98a..c52ed2f0c 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go @@ -57,3 +57,4 @@ func validateNewKubeValidatingAdmissionPolicyParameters(scope constructs.Constru return nil } + diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go index e2cdc948e..672218f18 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingAdmissionPolicy_OfParameters(c constructs.IConstruct) func validateNewKubeValidatingAdmissionPolicyParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go index 693a9fbd7..27f94509d 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" API object. func NewKubeValidatingWebhookConfiguration(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) KubeValidatingWebhookConfiguration { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingWebhookConfiguration) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go index 37c39caca..46efefd99 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Node() constructs.Nod return returns } + // Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" API object. func NewKubeValidatingWebhookConfigurationList(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) KubeValidatingWebhookConfigurationList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go index a40d90118..08016dcc9 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go @@ -1,5 +1,6 @@ package k8s + // ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration. type KubeValidatingWebhookConfigurationListProps struct { // List of ValidatingWebhookConfiguration. @@ -9,3 +10,4 @@ type KubeValidatingWebhookConfigurationListProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go index 234297916..b19978a86 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeValidatingWebhookConfigurationListParameters(scope construct return nil } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go index 49c438d1e..b71350538 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingWebhookConfigurationList_OfParameters(c constructs.IC func validateNewKubeValidatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go index 39f4b7760..0b26037bf 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go @@ -1,5 +1,6 @@ package k8s + // ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. type KubeValidatingWebhookConfigurationProps struct { // Standard object metadata; @@ -9,3 +10,4 @@ type KubeValidatingWebhookConfigurationProps struct { // Webhooks is a list of webhooks and the affected resources and operations. Webhooks *[]*ValidatingWebhook `field:"optional" json:"webhooks" yaml:"webhooks"` } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go index 66d7ab6d5..8d62ac533 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go @@ -57,3 +57,4 @@ func validateNewKubeValidatingWebhookConfigurationParameters(scope constructs.Co return nil } + diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go index 304e4547d..0513253fa 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go @@ -23,3 +23,4 @@ func validateKubeValidatingWebhookConfiguration_OfParameters(c constructs.IConst func validateNewKubeValidatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) error { return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttachment.go b/pods/imports/k8s/KubeVolumeAttachment.go index 6448b00d4..563ac7191 100644 --- a/pods/imports/k8s/KubeVolumeAttachment.go +++ b/pods/imports/k8s/KubeVolumeAttachment.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeVolumeAttachment) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.VolumeAttachment" API object. func NewKubeVolumeAttachment(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) KubeVolumeAttachment { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeVolumeAttachment) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeVolumeAttachmentList.go b/pods/imports/k8s/KubeVolumeAttachmentList.go index a7ad29443..d110cc300 100644 --- a/pods/imports/k8s/KubeVolumeAttachmentList.go +++ b/pods/imports/k8s/KubeVolumeAttachmentList.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeVolumeAttachmentList) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1.VolumeAttachmentList" API object. func NewKubeVolumeAttachmentList(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) KubeVolumeAttachmentList { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeVolumeAttachmentList) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeVolumeAttachmentListProps.go b/pods/imports/k8s/KubeVolumeAttachmentListProps.go index b32d00bd2..f931e98e4 100644 --- a/pods/imports/k8s/KubeVolumeAttachmentListProps.go +++ b/pods/imports/k8s/KubeVolumeAttachmentListProps.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttachmentList is a collection of VolumeAttachment objects. type KubeVolumeAttachmentListProps struct { // items is the list of VolumeAttachments. @@ -7,3 +8,4 @@ type KubeVolumeAttachmentListProps struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeVolumeAttachmentList__checks.go b/pods/imports/k8s/KubeVolumeAttachmentList__checks.go index 4e6c52a5d..43e23fb80 100644 --- a/pods/imports/k8s/KubeVolumeAttachmentList__checks.go +++ b/pods/imports/k8s/KubeVolumeAttachmentList__checks.go @@ -63,3 +63,4 @@ func validateNewKubeVolumeAttachmentListParameters(scope constructs.Construct, i return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go b/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go index 0699205cc..c57023f3e 100644 --- a/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go +++ b/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go @@ -23,3 +23,4 @@ func validateKubeVolumeAttachmentList_OfParameters(c constructs.IConstruct) erro func validateNewKubeVolumeAttachmentListParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) error { return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttachmentProps.go b/pods/imports/k8s/KubeVolumeAttachmentProps.go index bf7dbd510..9b811b477 100644 --- a/pods/imports/k8s/KubeVolumeAttachmentProps.go +++ b/pods/imports/k8s/KubeVolumeAttachmentProps.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node. // // VolumeAttachment objects are non-namespaced. @@ -13,3 +14,4 @@ type KubeVolumeAttachmentProps struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeVolumeAttachment__checks.go b/pods/imports/k8s/KubeVolumeAttachment__checks.go index 68cc646ac..1ecb4b1b6 100644 --- a/pods/imports/k8s/KubeVolumeAttachment__checks.go +++ b/pods/imports/k8s/KubeVolumeAttachment__checks.go @@ -63,3 +63,4 @@ func validateNewKubeVolumeAttachmentParameters(scope constructs.Construct, id *s return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttachment__no_checks.go b/pods/imports/k8s/KubeVolumeAttachment__no_checks.go index 841985f82..63142603a 100644 --- a/pods/imports/k8s/KubeVolumeAttachment__no_checks.go +++ b/pods/imports/k8s/KubeVolumeAttachment__no_checks.go @@ -23,3 +23,4 @@ func validateKubeVolumeAttachment_OfParameters(c constructs.IConstruct) error { func validateNewKubeVolumeAttachmentParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) error { return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go index d64ed10cb..fcd2c7aa3 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Node() constructs.Node return returns } + // Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" API object. func NewKubeVolumeAttributesClassListV1Alpha1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) KubeVolumeAttributesClassListV1Alpha1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go index 990f5fd0d..4bd86dac1 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttributesClassList is a collection of VolumeAttributesClass objects. type KubeVolumeAttributesClassListV1Alpha1Props struct { // items is the list of VolumeAttributesClass objects. @@ -7,3 +8,4 @@ type KubeVolumeAttributesClassListV1Alpha1Props struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go index 69199333d..c4ff1e04b 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope constructs return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go index c9ac717a8..e10619200 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c constructs.ICo func validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go index 661f36b39..e6e7571aa 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go @@ -122,6 +122,7 @@ func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Node() constructs.Node return returns } + // Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClassList" API object. func NewKubeVolumeAttributesClassListV1Beta1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) KubeVolumeAttributesClassListV1Beta1 { _init_.Initialize() @@ -313,3 +314,4 @@ func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go index 4baa65995..243aea445 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttributesClassList is a collection of VolumeAttributesClass objects. type KubeVolumeAttributesClassListV1Beta1Props struct { // items is the list of VolumeAttributesClass objects. @@ -7,3 +8,4 @@ type KubeVolumeAttributesClassListV1Beta1Props struct { // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go index 74516dd75..2c9b43ee8 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope constructs. return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go index 42cdd2696..4d13b16ba 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c constructs.ICon func validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go index bbdfb58cc..c237aab66 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" API object. func NewKubeVolumeAttributesClassV1Alpha1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) KubeVolumeAttributesClassV1Alpha1 { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go index 23959ec09..f6c9ecc4e 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. // // The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. @@ -17,3 +18,4 @@ type KubeVolumeAttributesClassV1Alpha1Props struct { // This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go index f437f6990..818f18769 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope constructs.Con return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go index 8b030f4a9..69ba234df 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c constructs.IConstr func validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) error { return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go index 1e9009a24..bce0645c3 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go @@ -124,6 +124,7 @@ func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Node() constructs.Node { return returns } + // Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClass" API object. func NewKubeVolumeAttributesClassV1Beta1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) KubeVolumeAttributesClassV1Beta1 { _init_.Initialize() @@ -315,3 +316,4 @@ func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ToString() *string { return returns } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go index cdc203ef2..43918c615 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. // // The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. @@ -17,3 +18,4 @@ type KubeVolumeAttributesClassV1Beta1Props struct { // This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go index 0c16de487..dae63195c 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go @@ -63,3 +63,4 @@ func validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope constructs.Cons return nil } + diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go index f37cecfff..8303d2685 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go @@ -23,3 +23,4 @@ func validateKubeVolumeAttributesClassV1Beta1_OfParameters(c constructs.IConstru func validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) error { return nil } + diff --git a/pods/imports/k8s/LabelSelector.go b/pods/imports/k8s/LabelSelector.go index ca2eab212..c1a7d1b81 100644 --- a/pods/imports/k8s/LabelSelector.go +++ b/pods/imports/k8s/LabelSelector.go @@ -1,5 +1,6 @@ package k8s + // A label selector is a label query over a set of resources. // // The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. @@ -13,3 +14,4 @@ type LabelSelector struct { // A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. MatchLabels *map[string]*string `field:"optional" json:"matchLabels" yaml:"matchLabels"` } + diff --git a/pods/imports/k8s/LabelSelectorAttributes.go b/pods/imports/k8s/LabelSelectorAttributes.go index 3afb5362d..987fc19c0 100644 --- a/pods/imports/k8s/LabelSelectorAttributes.go +++ b/pods/imports/k8s/LabelSelectorAttributes.go @@ -1,5 +1,6 @@ package k8s + // LabelSelectorAttributes indicates a label limited access. // // Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid. @@ -13,3 +14,4 @@ type LabelSelectorAttributes struct { // All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood. Requirements *[]*LabelSelectorRequirement `field:"optional" json:"requirements" yaml:"requirements"` } + diff --git a/pods/imports/k8s/LabelSelectorRequirement.go b/pods/imports/k8s/LabelSelectorRequirement.go index fb9dfae0a..778a8757f 100644 --- a/pods/imports/k8s/LabelSelectorRequirement.go +++ b/pods/imports/k8s/LabelSelectorRequirement.go @@ -1,5 +1,6 @@ package k8s + // A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. type LabelSelectorRequirement struct { // key is the label key that the selector applies to. @@ -13,3 +14,4 @@ type LabelSelectorRequirement struct { // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. Values *[]*string `field:"optional" json:"values" yaml:"values"` } + diff --git a/pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go b/pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go similarity index 59% rename from pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go rename to pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go index 526bc26bf..3a76fdc2e 100644 --- a/pods/imports/k8s/LeaseCandidateSpecV1Alpha2.go +++ b/pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go @@ -5,19 +5,23 @@ import ( ) // LeaseCandidateSpec is a specification of a Lease. -type LeaseCandidateSpecV1Alpha2 struct { - // BinaryVersion is the binary version. - // - // It must be in a semver format without leading `v`. This field is required. - BinaryVersion *string `field:"required" json:"binaryVersion" yaml:"binaryVersion"` +type LeaseCandidateSpecV1Alpha1 struct { // LeaseName is the name of the lease for which this candidate is contending. // // This field is immutable. LeaseName *string `field:"required" json:"leaseName" yaml:"leaseName"` - // Strategy is the strategy that coordinated leader election will use for picking the leader. + // PreferredStrategies indicates the list of strategies for picking the leader for coordinated leader election. // - // If multiple candidates for the same Lease return different strategies, the strategy provided by the candidate with the latest BinaryVersion will be used. If there is still conflict, this is a user error and coordinated leader election will not operate the Lease until resolved. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. - Strategy *string `field:"required" json:"strategy" yaml:"strategy"` + // The list is ordered, and the first strategy supersedes all other strategies. The list is used by coordinated leader election to make a decision about the final election strategy. This follows as - If all clients have strategy X as the first element in this list, strategy X will be used. - If a candidate has strategy [X] and another candidate has strategy [Y, X], Y supersedes X and strategy Y + // will be used. + // - If a candidate has strategy [X, Y] and another candidate has strategy [Y, X], this is a user error and leader + // election will not operate the Lease until resolved. + // (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. + PreferredStrategies *[]*string `field:"required" json:"preferredStrategies" yaml:"preferredStrategies"` + // BinaryVersion is the binary version. + // + // It must be in a semver format without leading `v`. This field is required when strategy is "OldestEmulationVersion" + BinaryVersion *string `field:"optional" json:"binaryVersion" yaml:"binaryVersion"` // EmulationVersion is the emulation version. // // It must be in a semver format without leading `v`. EmulationVersion must be less than or equal to BinaryVersion. This field is required when strategy is "OldestEmulationVersion" @@ -31,3 +35,4 @@ type LeaseCandidateSpecV1Alpha2 struct { // Any time a Lease needs to do leader election, the PingTime field is updated to signal to the LeaseCandidate that they should update the RenewTime. Old LeaseCandidate objects are also garbage collected if it has been hours since the last renew. The PingTime field is updated regularly to prevent garbage collection for still active LeaseCandidates. RenewTime *time.Time `field:"optional" json:"renewTime" yaml:"renewTime"` } + diff --git a/pods/imports/k8s/LeaseSpec.go b/pods/imports/k8s/LeaseSpec.go index e3f2dcbd0..6308b6bf6 100644 --- a/pods/imports/k8s/LeaseSpec.go +++ b/pods/imports/k8s/LeaseSpec.go @@ -29,3 +29,4 @@ type LeaseSpec struct { // If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. Strategy *string `field:"optional" json:"strategy" yaml:"strategy"` } + diff --git a/pods/imports/k8s/Lifecycle.go b/pods/imports/k8s/Lifecycle.go index 7d3ba7b99..bfb8a9347 100644 --- a/pods/imports/k8s/Lifecycle.go +++ b/pods/imports/k8s/Lifecycle.go @@ -1,5 +1,6 @@ package k8s + // Lifecycle describes actions that the management system should take in response to container lifecycle events. // // For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted. @@ -13,3 +14,4 @@ type Lifecycle struct { // The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks PreStop *LifecycleHandler `field:"optional" json:"preStop" yaml:"preStop"` } + diff --git a/pods/imports/k8s/LifecycleHandler.go b/pods/imports/k8s/LifecycleHandler.go index 5cd58424a..210c2a961 100644 --- a/pods/imports/k8s/LifecycleHandler.go +++ b/pods/imports/k8s/LifecycleHandler.go @@ -1,17 +1,19 @@ package k8s + // LifecycleHandler defines a specific action that should be taken in a lifecycle hook. // // One and only one of the fields, except TCPSocket must be specified. type LifecycleHandler struct { - // Exec specifies a command to execute in the container. + // Exec specifies the action to take. Exec *ExecAction `field:"optional" json:"exec" yaml:"exec"` - // HTTPGet specifies an HTTP GET request to perform. + // HTTPGet specifies the http request to perform. HttpGet *HttpGetAction `field:"optional" json:"httpGet" yaml:"httpGet"` - // Sleep represents a duration that the container should sleep. + // Sleep represents the duration that the container should sleep before being terminated. Sleep *SleepAction `field:"optional" json:"sleep" yaml:"sleep"` // Deprecated. // - // TCPSocket is NOT supported as a LifecycleHandler and kept for backward compatibility. There is no validation of this field and lifecycle hooks will fail at runtime when it is specified. + // TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. TcpSocket *TcpSocketAction `field:"optional" json:"tcpSocket" yaml:"tcpSocket"` } + diff --git a/pods/imports/k8s/LimitRangeItem.go b/pods/imports/k8s/LimitRangeItem.go index 02c241193..a1440b38a 100644 --- a/pods/imports/k8s/LimitRangeItem.go +++ b/pods/imports/k8s/LimitRangeItem.go @@ -1,5 +1,6 @@ package k8s + // LimitRangeItem defines a min/max usage limit for any resource that matches on kind. type LimitRangeItem struct { // Type of resource that this limit applies to. @@ -17,3 +18,4 @@ type LimitRangeItem struct { // Min usage constraints on this kind by resource name. Min *map[string]Quantity `field:"optional" json:"min" yaml:"min"` } + diff --git a/pods/imports/k8s/LimitRangeSpec.go b/pods/imports/k8s/LimitRangeSpec.go index cb05cfcfb..2050c15ef 100644 --- a/pods/imports/k8s/LimitRangeSpec.go +++ b/pods/imports/k8s/LimitRangeSpec.go @@ -1,7 +1,9 @@ package k8s + // LimitRangeSpec defines a min/max usage limit for resources that match on kind. type LimitRangeSpec struct { // Limits is the list of LimitRangeItem objects that are enforced. Limits *[]*LimitRangeItem `field:"required" json:"limits" yaml:"limits"` } + diff --git a/pods/imports/k8s/LimitResponse.go b/pods/imports/k8s/LimitResponse.go index 99fc7555c..4d36c5b33 100644 --- a/pods/imports/k8s/LimitResponse.go +++ b/pods/imports/k8s/LimitResponse.go @@ -1,5 +1,6 @@ package k8s + // LimitResponse defines how to handle requests that can not be executed right now. type LimitResponse struct { // `type` is "Queue" or "Reject". @@ -11,3 +12,4 @@ type LimitResponse struct { // This field may be non-empty only if `type` is `"Queue"`. Queuing *QueuingConfiguration `field:"optional" json:"queuing" yaml:"queuing"` } + diff --git a/pods/imports/k8s/LimitResponseV1Beta3.go b/pods/imports/k8s/LimitResponseV1Beta3.go new file mode 100644 index 000000000..b365a2483 --- /dev/null +++ b/pods/imports/k8s/LimitResponseV1Beta3.go @@ -0,0 +1,15 @@ +package k8s + + +// LimitResponse defines how to handle requests that can not be executed right now. +type LimitResponseV1Beta3 struct { + // `type` is "Queue" or "Reject". + // + // "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required. + Type *string `field:"required" json:"type" yaml:"type"` + // `queuing` holds the configuration parameters for queuing. + // + // This field may be non-empty only if `type` is `"Queue"`. + Queuing *QueuingConfigurationV1Beta3 `field:"optional" json:"queuing" yaml:"queuing"` +} + diff --git a/pods/imports/k8s/LimitedPriorityLevelConfiguration.go b/pods/imports/k8s/LimitedPriorityLevelConfiguration.go index 3bb132242..954f313c9 100644 --- a/pods/imports/k8s/LimitedPriorityLevelConfiguration.go +++ b/pods/imports/k8s/LimitedPriorityLevelConfiguration.go @@ -1,5 +1,6 @@ package k8s + // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // // It addresses two issues: @@ -35,3 +36,4 @@ type LimitedPriorityLevelConfiguration struct { // Setting this field to zero supports the construction of a "jail" for this priority level that is used to hold some request(s). NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` } + diff --git a/pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go b/pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go new file mode 100644 index 000000000..cc554283f --- /dev/null +++ b/pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go @@ -0,0 +1,35 @@ +package k8s + + +// LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. +// +// It addresses two issues: +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? +type LimitedPriorityLevelConfigurationV1Beta3 struct { + // `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. + // + // The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. + // + // BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) + // + // The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. + BorrowingLimitPercent *float64 `field:"optional" json:"borrowingLimitPercent" yaml:"borrowingLimitPercent"` + // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. + // + // The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. + // + // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) + LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` + // `limitResponse` indicates what to do with requests that can not be executed right now. + LimitResponse *LimitResponseV1Beta3 `field:"optional" json:"limitResponse" yaml:"limitResponse"` + // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. + // + // This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: + // + // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) + // + // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30. + NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` +} + diff --git a/pods/imports/k8s/ListMeta.go b/pods/imports/k8s/ListMeta.go index 50feff07d..0e1ab21d4 100644 --- a/pods/imports/k8s/ListMeta.go +++ b/pods/imports/k8s/ListMeta.go @@ -1,5 +1,6 @@ package k8s + // ListMeta describes metadata that synthetic resources must have, including lists and various status objects. // // A resource may have only one of {ObjectMeta, ListMeta}. @@ -19,3 +20,4 @@ type ListMeta struct { // Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. SelfLink *string `field:"optional" json:"selfLink" yaml:"selfLink"` } + diff --git a/pods/imports/k8s/LocalObjectReference.go b/pods/imports/k8s/LocalObjectReference.go index a7bb78103..a6336b323 100644 --- a/pods/imports/k8s/LocalObjectReference.go +++ b/pods/imports/k8s/LocalObjectReference.go @@ -1,5 +1,6 @@ package k8s + // LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. type LocalObjectReference struct { // Name of the referent. @@ -7,3 +8,4 @@ type LocalObjectReference struct { // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names Name *string `field:"optional" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/LocalVolumeSource.go b/pods/imports/k8s/LocalVolumeSource.go index 91ca157f1..cbb3c5f1d 100644 --- a/pods/imports/k8s/LocalVolumeSource.go +++ b/pods/imports/k8s/LocalVolumeSource.go @@ -1,6 +1,7 @@ package k8s -// Local represents directly-attached storage with node affinity. + +// Local represents directly-attached storage with node affinity (Beta feature). type LocalVolumeSource struct { // path of the full path to the volume on the node. // @@ -11,3 +12,4 @@ type LocalVolumeSource struct { // It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified. FsType *string `field:"optional" json:"fsType" yaml:"fsType"` } + diff --git a/pods/imports/k8s/ManagedFieldsEntry.go b/pods/imports/k8s/ManagedFieldsEntry.go index 9f6b74cca..46bbaedc6 100644 --- a/pods/imports/k8s/ManagedFieldsEntry.go +++ b/pods/imports/k8s/ManagedFieldsEntry.go @@ -31,3 +31,4 @@ type ManagedFieldsEntry struct { // The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over. Time *time.Time `field:"optional" json:"time" yaml:"time"` } + diff --git a/pods/imports/k8s/MatchCondition.go b/pods/imports/k8s/MatchCondition.go index 3f720ba02..585a3ab79 100644 --- a/pods/imports/k8s/MatchCondition.go +++ b/pods/imports/k8s/MatchCondition.go @@ -1,5 +1,6 @@ package k8s + // MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook. type MatchCondition struct { // Expression represents the expression which will be evaluated by CEL. @@ -21,3 +22,4 @@ type MatchCondition struct { // Required. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/MatchConditionV1Alpha1.go b/pods/imports/k8s/MatchConditionV1Alpha1.go index 07e05e83f..eb735b5f6 100644 --- a/pods/imports/k8s/MatchConditionV1Alpha1.go +++ b/pods/imports/k8s/MatchConditionV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + type MatchConditionV1Alpha1 struct { // Expression represents the expression which will be evaluated by CEL. // @@ -20,3 +21,4 @@ type MatchConditionV1Alpha1 struct { // Required. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/MatchConditionV1Beta1.go b/pods/imports/k8s/MatchConditionV1Beta1.go index 3fef6bd1d..e715314b9 100644 --- a/pods/imports/k8s/MatchConditionV1Beta1.go +++ b/pods/imports/k8s/MatchConditionV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook. type MatchConditionV1Beta1 struct { // Expression represents the expression which will be evaluated by CEL. @@ -21,3 +22,4 @@ type MatchConditionV1Beta1 struct { // Required. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/MatchResources.go b/pods/imports/k8s/MatchResources.go index 389e95355..05a785100 100644 --- a/pods/imports/k8s/MatchResources.go +++ b/pods/imports/k8s/MatchResources.go @@ -1,5 +1,6 @@ package k8s + // MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. // // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). @@ -65,3 +66,4 @@ type MatchResources struct { // The policy cares about an operation if it matches _any_ Rule. ResourceRules *[]*NamedRuleWithOperations `field:"optional" json:"resourceRules" yaml:"resourceRules"` } + diff --git a/pods/imports/k8s/MatchResourcesV1Alpha1.go b/pods/imports/k8s/MatchResourcesV1Alpha1.go index d75733431..a862a817d 100644 --- a/pods/imports/k8s/MatchResourcesV1Alpha1.go +++ b/pods/imports/k8s/MatchResourcesV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. // // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). @@ -65,3 +66,4 @@ type MatchResourcesV1Alpha1 struct { // The policy cares about an operation if it matches _any_ Rule. ResourceRules *[]*NamedRuleWithOperationsV1Alpha1 `field:"optional" json:"resourceRules" yaml:"resourceRules"` } + diff --git a/pods/imports/k8s/MatchResourcesV1Beta1.go b/pods/imports/k8s/MatchResourcesV1Beta1.go index bef8f849c..575991cc1 100644 --- a/pods/imports/k8s/MatchResourcesV1Beta1.go +++ b/pods/imports/k8s/MatchResourcesV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. // // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). @@ -65,3 +66,4 @@ type MatchResourcesV1Beta1 struct { // The policy cares about an operation if it matches _any_ Rule. ResourceRules *[]*NamedRuleWithOperationsV1Beta1 `field:"optional" json:"resourceRules" yaml:"resourceRules"` } + diff --git a/pods/imports/k8s/MetricIdentifierV2.go b/pods/imports/k8s/MetricIdentifierV2.go index 93b0feb17..19109d745 100644 --- a/pods/imports/k8s/MetricIdentifierV2.go +++ b/pods/imports/k8s/MetricIdentifierV2.go @@ -1,5 +1,6 @@ package k8s + // MetricIdentifier defines the name and optionally selector for a metric. type MetricIdentifierV2 struct { // name is the name of the given metric. @@ -9,3 +10,4 @@ type MetricIdentifierV2 struct { // When unset, just the metricName will be used to gather metrics. Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` } + diff --git a/pods/imports/k8s/MetricSpecV2.go b/pods/imports/k8s/MetricSpecV2.go index eb6b69d02..3572e1143 100644 --- a/pods/imports/k8s/MetricSpecV2.go +++ b/pods/imports/k8s/MetricSpecV2.go @@ -1,12 +1,13 @@ package k8s + // MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once). type MetricSpecV2 struct { // type is the type of metric source. // - // It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. + // It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled Type *string `field:"required" json:"type" yaml:"type"` - // containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. + // containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. ContainerResource *ContainerResourceMetricSourceV2 `field:"optional" json:"containerResource" yaml:"containerResource"` // external refers to a global metric that is not associated with any Kubernetes object. // @@ -21,3 +22,4 @@ type MetricSpecV2 struct { // resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Resource *ResourceMetricSourceV2 `field:"optional" json:"resource" yaml:"resource"` } + diff --git a/pods/imports/k8s/MetricTargetV2.go b/pods/imports/k8s/MetricTargetV2.go index 6af5c9be7..ba6fd9299 100644 --- a/pods/imports/k8s/MetricTargetV2.go +++ b/pods/imports/k8s/MetricTargetV2.go @@ -1,5 +1,6 @@ package k8s + // MetricTarget defines the target value, average value, or average utilization of a specific metric. type MetricTargetV2 struct { // type represents whether the metric type is Utilization, Value, or AverageValue. @@ -13,3 +14,4 @@ type MetricTargetV2 struct { // value is the target value of the metric (as a quantity). Value Quantity `field:"optional" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go b/pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go deleted file mode 100644 index 7f7fd3280..000000000 --- a/pods/imports/k8s/MutatingAdmissionPolicyBindingSpecV1Alpha1.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - -// MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding. -type MutatingAdmissionPolicyBindingSpecV1Alpha1 struct { - // matchResources limits what resources match this binding and may be mutated by it. - // - // Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and matchConditions before the resource may be mutated. When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints and matchConditions must match for the resource to be mutated. Additionally, matchResources.resourceRules are optional and do not constraint matching when unset. Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required. The CREATE, UPDATE and CONNECT operations are allowed. The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT. - MatchResources *MatchResourcesV1Alpha1 `field:"optional" json:"matchResources" yaml:"matchResources"` - // paramRef specifies the parameter resource used to configure the admission control policy. - // - // It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. - ParamRef *ParamRefV1Alpha1 `field:"optional" json:"paramRef" yaml:"paramRef"` - // policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to. - // - // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. - PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` -} diff --git a/pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go b/pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go deleted file mode 100644 index 0890f27cb..000000000 --- a/pods/imports/k8s/MutatingAdmissionPolicySpecV1Alpha1.go +++ /dev/null @@ -1,56 +0,0 @@ -package k8s - -// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy. -type MutatingAdmissionPolicySpecV1Alpha1 struct { - // failurePolicy defines how to handle failures for the admission policy. - // - // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. - // - // A policy is invalid if paramKind refers to a non-existent Kind. A binding is invalid if paramRef.name refers to a non-existent resource. - // - // failurePolicy does not define how validations that evaluate to false are handled. - // - // Allowed values are Ignore or Fail. Defaults to Fail. - // Default: Fail. - // - FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` - // matchConditions is a list of conditions that must be met for a request to be validated. - // - // Match conditions filter requests that have already been matched by the matchConstraints. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. - // - // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. - // - // The exact matching logic is (in order): - // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. - // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. - // 3. If any matchCondition evaluates to an error (but none are FALSE): - // - If failurePolicy=Fail, reject the request - // - If failurePolicy=Ignore, the policy is skipped. - MatchConditions *[]*MatchConditionV1Alpha1 `field:"optional" json:"matchConditions" yaml:"matchConditions"` - // matchConstraints specifies what resources this policy is designed to validate. - // - // The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding. The CREATE, UPDATE and CONNECT operations are allowed. The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT. Required. - MatchConstraints *MatchResourcesV1Alpha1 `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` - // mutations contain operations to perform on matching objects. - // - // mutations may not be empty; a minimum of one mutation is required. mutations are evaluated in order, and are reinvoked according to the reinvocationPolicy. The mutations of a policy are invoked for each binding of this policy and reinvocation of mutations occurs on a per binding basis. - Mutations *[]*MutationV1Alpha1 `field:"optional" json:"mutations" yaml:"mutations"` - // paramKind specifies the kind of resources used to parameterize this policy. - // - // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null. - ParamKind *ParamKindV1Alpha1 `field:"optional" json:"paramKind" yaml:"paramKind"` - // reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding as part of a single admission evaluation. - // - // Allowed values are "Never" and "IfNeeded". - // - // Never: These mutations will not be called more than once per binding in a single admission evaluation. - // - // IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies. Mutations are only reinvoked when mutations change the object after this mutation is invoked. Required. - ReinvocationPolicy *string `field:"optional" json:"reinvocationPolicy" yaml:"reinvocationPolicy"` - // variables contain definitions of variables that can be used in composition of other expressions. - // - // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except matchConditions because matchConditions are evaluated before the rest of the policy. - // - // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, variables must be sorted by the order of first appearance and acyclic. - Variables *[]*VariableV1Alpha1 `field:"optional" json:"variables" yaml:"variables"` -} diff --git a/pods/imports/k8s/MutatingWebhook.go b/pods/imports/k8s/MutatingWebhook.go index e106c759f..d13311fed 100644 --- a/pods/imports/k8s/MutatingWebhook.go +++ b/pods/imports/k8s/MutatingWebhook.go @@ -1,5 +1,6 @@ package k8s + // MutatingWebhook describes an admission webhook and the resources and operations it applies to. type MutatingWebhook struct { // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. @@ -110,3 +111,4 @@ type MutatingWebhook struct { // TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` } + diff --git a/pods/imports/k8s/MutationV1Alpha1.go b/pods/imports/k8s/MutationV1Alpha1.go deleted file mode 100644 index 783a7370c..000000000 --- a/pods/imports/k8s/MutationV1Alpha1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - -// Mutation specifies the CEL expression which is used to apply the Mutation. -type MutationV1Alpha1 struct { - // patchType indicates the patch strategy used. - // - // Allowed values are "ApplyConfiguration" and "JSONPatch". Required. - PatchType *string `field:"required" json:"patchType" yaml:"patchType"` - // applyConfiguration defines the desired configuration values of an object. - // - // The configuration is applied to the admission object using [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff). A CEL expression is used to create apply configuration. - ApplyConfiguration *ApplyConfigurationV1Alpha1 `field:"optional" json:"applyConfiguration" yaml:"applyConfiguration"` - // jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object. A CEL expression is used to create the JSON patch. - JsonPatch *JsonPatchV1Alpha1 `field:"optional" json:"jsonPatch" yaml:"jsonPatch"` -} diff --git a/pods/imports/k8s/NamedRuleWithOperations.go b/pods/imports/k8s/NamedRuleWithOperations.go index b3d8997e8..183d1a696 100644 --- a/pods/imports/k8s/NamedRuleWithOperations.go +++ b/pods/imports/k8s/NamedRuleWithOperations.go @@ -1,5 +1,6 @@ package k8s + // NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. type NamedRuleWithOperations struct { // APIGroups is the API groups the resources belong to. @@ -33,3 +34,4 @@ type NamedRuleWithOperations struct { // Scope *string `field:"optional" json:"scope" yaml:"scope"` } + diff --git a/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go b/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go index 20b809804..87a63f0f8 100644 --- a/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go +++ b/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. type NamedRuleWithOperationsV1Alpha1 struct { // APIGroups is the API groups the resources belong to. @@ -33,3 +34,4 @@ type NamedRuleWithOperationsV1Alpha1 struct { // Scope *string `field:"optional" json:"scope" yaml:"scope"` } + diff --git a/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go b/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go index 1347d68ae..429d0a6bc 100644 --- a/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go +++ b/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. type NamedRuleWithOperationsV1Beta1 struct { // APIGroups is the API groups the resources belong to. @@ -33,3 +34,4 @@ type NamedRuleWithOperationsV1Beta1 struct { // Scope *string `field:"optional" json:"scope" yaml:"scope"` } + diff --git a/pods/imports/k8s/NamespaceSpec.go b/pods/imports/k8s/NamespaceSpec.go index 6627d0ae8..f064f84a7 100644 --- a/pods/imports/k8s/NamespaceSpec.go +++ b/pods/imports/k8s/NamespaceSpec.go @@ -1,5 +1,6 @@ package k8s + // NamespaceSpec describes the attributes on a Namespace. type NamespaceSpec struct { // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. @@ -7,3 +8,4 @@ type NamespaceSpec struct { // More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ Finalizers *[]*string `field:"optional" json:"finalizers" yaml:"finalizers"` } + diff --git a/pods/imports/k8s/NetworkPolicyEgressRule.go b/pods/imports/k8s/NetworkPolicyEgressRule.go index 8ccadeb76..aef9a7c4e 100644 --- a/pods/imports/k8s/NetworkPolicyEgressRule.go +++ b/pods/imports/k8s/NetworkPolicyEgressRule.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. // // The traffic must match both ports and to. This type is beta-level in 1.8 @@ -13,3 +14,4 @@ type NetworkPolicyEgressRule struct { // Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list. To *[]*NetworkPolicyPeer `field:"optional" json:"to" yaml:"to"` } + diff --git a/pods/imports/k8s/NetworkPolicyIngressRule.go b/pods/imports/k8s/NetworkPolicyIngressRule.go index d4d4025e9..413cb90bb 100644 --- a/pods/imports/k8s/NetworkPolicyIngressRule.go +++ b/pods/imports/k8s/NetworkPolicyIngressRule.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. // // The traffic must match both ports and from. @@ -13,3 +14,4 @@ type NetworkPolicyIngressRule struct { // Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. Ports *[]*NetworkPolicyPort `field:"optional" json:"ports" yaml:"ports"` } + diff --git a/pods/imports/k8s/NetworkPolicyPeer.go b/pods/imports/k8s/NetworkPolicyPeer.go index 9e0b3fbe9..2f765cd8a 100644 --- a/pods/imports/k8s/NetworkPolicyPeer.go +++ b/pods/imports/k8s/NetworkPolicyPeer.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicyPeer describes a peer to allow traffic to/from. // // Only certain combinations of fields are allowed. @@ -21,3 +22,4 @@ type NetworkPolicyPeer struct { // If namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects the pods matching podSelector in the policy's own namespace. PodSelector *LabelSelector `field:"optional" json:"podSelector" yaml:"podSelector"` } + diff --git a/pods/imports/k8s/NetworkPolicyPort.go b/pods/imports/k8s/NetworkPolicyPort.go index 9e6834559..dc3b06bdc 100644 --- a/pods/imports/k8s/NetworkPolicyPort.go +++ b/pods/imports/k8s/NetworkPolicyPort.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicyPort describes a port to allow traffic on. type NetworkPolicyPort struct { // endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. @@ -15,3 +16,4 @@ type NetworkPolicyPort struct { // If not specified, this field defaults to TCP. Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` } + diff --git a/pods/imports/k8s/NetworkPolicySpec.go b/pods/imports/k8s/NetworkPolicySpec.go index 235443c49..c685f972c 100644 --- a/pods/imports/k8s/NetworkPolicySpec.go +++ b/pods/imports/k8s/NetworkPolicySpec.go @@ -1,5 +1,6 @@ package k8s + // NetworkPolicySpec provides the specification of a NetworkPolicy. type NetworkPolicySpec struct { // podSelector selects the pods to which this NetworkPolicy object applies. @@ -19,3 +20,4 @@ type NetworkPolicySpec struct { // Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8 PolicyTypes *[]*string `field:"optional" json:"policyTypes" yaml:"policyTypes"` } + diff --git a/pods/imports/k8s/NfsVolumeSource.go b/pods/imports/k8s/NfsVolumeSource.go index 786289918..5f33eb9bb 100644 --- a/pods/imports/k8s/NfsVolumeSource.go +++ b/pods/imports/k8s/NfsVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents an NFS mount that lasts the lifetime of a pod. // // NFS volumes do not support ownership management or SELinux relabeling. @@ -19,3 +20,4 @@ type NfsVolumeSource struct { // ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/NodeAffinity.go b/pods/imports/k8s/NodeAffinity.go index 7eba138c8..8bec2f31b 100644 --- a/pods/imports/k8s/NodeAffinity.go +++ b/pods/imports/k8s/NodeAffinity.go @@ -1,5 +1,6 @@ package k8s + // Node affinity is a group of node affinity scheduling rules. type NodeAffinity struct { // The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. @@ -11,3 +12,4 @@ type NodeAffinity struct { // If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` } + diff --git a/pods/imports/k8s/NodeConfigSource.go b/pods/imports/k8s/NodeConfigSource.go index ec4131a26..ef8e92ef2 100644 --- a/pods/imports/k8s/NodeConfigSource.go +++ b/pods/imports/k8s/NodeConfigSource.go @@ -1,5 +1,6 @@ package k8s + // NodeConfigSource specifies a source of node configuration. // // Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22 @@ -7,3 +8,4 @@ type NodeConfigSource struct { // ConfigMap is a reference to a Node's ConfigMap. ConfigMap *ConfigMapNodeConfigSource `field:"optional" json:"configMap" yaml:"configMap"` } + diff --git a/pods/imports/k8s/NodeSelector.go b/pods/imports/k8s/NodeSelector.go index ffd4e5946..4dfb030ab 100644 --- a/pods/imports/k8s/NodeSelector.go +++ b/pods/imports/k8s/NodeSelector.go @@ -1,5 +1,6 @@ package k8s + // A node selector represents the union of the results of one or more label queries over a set of nodes; // // that is, it represents the OR of the selectors represented by the node selector terms. @@ -9,3 +10,4 @@ type NodeSelector struct { // A list of node selector terms. The terms are ORed. NodeSelectorTerms *[]*NodeSelectorTerm `field:"required" json:"nodeSelectorTerms" yaml:"nodeSelectorTerms"` } + diff --git a/pods/imports/k8s/NodeSelectorRequirement.go b/pods/imports/k8s/NodeSelectorRequirement.go index 57d557de6..e4eafadb6 100644 --- a/pods/imports/k8s/NodeSelectorRequirement.go +++ b/pods/imports/k8s/NodeSelectorRequirement.go @@ -1,5 +1,6 @@ package k8s + // A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. type NodeSelectorRequirement struct { // The label key that the selector applies to. @@ -13,3 +14,4 @@ type NodeSelectorRequirement struct { // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. Values *[]*string `field:"optional" json:"values" yaml:"values"` } + diff --git a/pods/imports/k8s/NodeSelectorTerm.go b/pods/imports/k8s/NodeSelectorTerm.go index b225187f8..77e714672 100644 --- a/pods/imports/k8s/NodeSelectorTerm.go +++ b/pods/imports/k8s/NodeSelectorTerm.go @@ -1,5 +1,6 @@ package k8s + // A null or empty node selector term matches no objects. // // The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. @@ -9,3 +10,4 @@ type NodeSelectorTerm struct { // A list of node selector requirements by node's fields. MatchFields *[]*NodeSelectorRequirement `field:"optional" json:"matchFields" yaml:"matchFields"` } + diff --git a/pods/imports/k8s/NodeSpec.go b/pods/imports/k8s/NodeSpec.go index 3b48905dd..95889070e 100644 --- a/pods/imports/k8s/NodeSpec.go +++ b/pods/imports/k8s/NodeSpec.go @@ -1,5 +1,6 @@ package k8s + // NodeSpec describes the attributes that a node is created with. type NodeSpec struct { // Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. @@ -25,3 +26,4 @@ type NodeSpec struct { // By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration Unschedulable *bool `field:"optional" json:"unschedulable" yaml:"unschedulable"` } + diff --git a/pods/imports/k8s/NonResourceAttributes.go b/pods/imports/k8s/NonResourceAttributes.go index 0cfa96a83..ed290a914 100644 --- a/pods/imports/k8s/NonResourceAttributes.go +++ b/pods/imports/k8s/NonResourceAttributes.go @@ -1,5 +1,6 @@ package k8s + // NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface. type NonResourceAttributes struct { // Path is the URL path of the request. @@ -7,3 +8,4 @@ type NonResourceAttributes struct { // Verb is the standard HTTP verb. Verb *string `field:"optional" json:"verb" yaml:"verb"` } + diff --git a/pods/imports/k8s/NonResourcePolicyRule.go b/pods/imports/k8s/NonResourcePolicyRule.go index 0deb013aa..342d61438 100644 --- a/pods/imports/k8s/NonResourcePolicyRule.go +++ b/pods/imports/k8s/NonResourcePolicyRule.go @@ -1,5 +1,6 @@ package k8s + // NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. // // A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request. @@ -19,3 +20,4 @@ type NonResourcePolicyRule struct { // "*" matches all verbs. If it is present, it must be the only entry. Required. Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` } + diff --git a/pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go b/pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go new file mode 100644 index 000000000..5d23cb580 --- /dev/null +++ b/pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go @@ -0,0 +1,23 @@ +package k8s + + +// NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. +// +// A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request. +type NonResourcePolicyRuleV1Beta3 struct { + // `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. + // + // For example: + // - "/healthz" is legal + // - "/hea*" is illegal + // - "/hea" is legal but matches nothing + // - "/hea/*" also matches nothing + // - "/healthz/*" matches all per-component health checks. + // "*" matches all non-resource urls. if it is present, it must be the only entry. Required. + NonResourceUrLs *[]*string `field:"required" json:"nonResourceUrLs" yaml:"nonResourceUrLs"` + // `verbs` is a list of matching verbs and may not be empty. + // + // "*" matches all verbs. If it is present, it must be the only entry. Required. + Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` +} + diff --git a/pods/imports/k8s/ObjectFieldSelector.go b/pods/imports/k8s/ObjectFieldSelector.go index 0c447d2c4..d762c54ea 100644 --- a/pods/imports/k8s/ObjectFieldSelector.go +++ b/pods/imports/k8s/ObjectFieldSelector.go @@ -1,5 +1,6 @@ package k8s + // ObjectFieldSelector selects an APIVersioned field of an object. type ObjectFieldSelector struct { // Path of the field to select in the specified API version. @@ -7,3 +8,4 @@ type ObjectFieldSelector struct { // Version of the schema the FieldPath is written in terms of, defaults to "v1". ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` } + diff --git a/pods/imports/k8s/ObjectMeta.go b/pods/imports/k8s/ObjectMeta.go index 8e57dd518..0c6cfa3a0 100644 --- a/pods/imports/k8s/ObjectMeta.go +++ b/pods/imports/k8s/ObjectMeta.go @@ -79,3 +79,4 @@ type ObjectMeta struct { // Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids Uid *string `field:"optional" json:"uid" yaml:"uid"` } + diff --git a/pods/imports/k8s/ObjectMetricSourceV2.go b/pods/imports/k8s/ObjectMetricSourceV2.go index 4ee940589..a5eee2b6c 100644 --- a/pods/imports/k8s/ObjectMetricSourceV2.go +++ b/pods/imports/k8s/ObjectMetricSourceV2.go @@ -1,5 +1,6 @@ package k8s + // ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object). type ObjectMetricSourceV2 struct { // describedObject specifies the descriptions of a object,such as kind,name apiVersion. @@ -9,3 +10,4 @@ type ObjectMetricSourceV2 struct { // target specifies the target value for the given metric. Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` } + diff --git a/pods/imports/k8s/ObjectReference.go b/pods/imports/k8s/ObjectReference.go index 4109d29df..c7c1a51e7 100644 --- a/pods/imports/k8s/ObjectReference.go +++ b/pods/imports/k8s/ObjectReference.go @@ -1,5 +1,6 @@ package k8s + // ObjectReference contains enough information to let you inspect or modify the referred object. type ObjectReference struct { // API version of the referent. @@ -27,3 +28,4 @@ type ObjectReference struct { // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids Uid *string `field:"optional" json:"uid" yaml:"uid"` } + diff --git a/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go b/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go index 8331e4d95..5cbf0c267 100644 --- a/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go +++ b/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor. type OpaqueDeviceConfigurationV1Alpha3 struct { // Driver is used to determine which kubelet plugin needs to be passed these configuration parameters. @@ -11,7 +12,6 @@ type OpaqueDeviceConfigurationV1Alpha3 struct { // Parameters can contain arbitrary data. // // It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions. - // - // The length of the raw data must be smaller or equal to 10 Ki. Parameters interface{} `field:"required" json:"parameters" yaml:"parameters"` } + diff --git a/pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go b/pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go deleted file mode 100644 index d13d2e4a6..000000000 --- a/pods/imports/k8s/OpaqueDeviceConfigurationV1Beta1.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - -// OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor. -type OpaqueDeviceConfigurationV1Beta1 struct { - // Driver is used to determine which kubelet plugin needs to be passed these configuration parameters. - // - // An admission policy provided by the driver developer could use this to decide whether it needs to validate them. - // - // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // Parameters can contain arbitrary data. - // - // It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions. - // - // The length of the raw data must be smaller or equal to 10 Ki. - Parameters interface{} `field:"required" json:"parameters" yaml:"parameters"` -} diff --git a/pods/imports/k8s/Overhead.go b/pods/imports/k8s/Overhead.go index 682ff7a04..624b02dba 100644 --- a/pods/imports/k8s/Overhead.go +++ b/pods/imports/k8s/Overhead.go @@ -1,7 +1,9 @@ package k8s + // Overhead structure represents the resource overhead associated with running a pod. type Overhead struct { // podFixed represents the fixed resource overhead associated with running a pod. PodFixed *map[string]Quantity `field:"optional" json:"podFixed" yaml:"podFixed"` } + diff --git a/pods/imports/k8s/OwnerReference.go b/pods/imports/k8s/OwnerReference.go index c013d79b8..136b6af04 100644 --- a/pods/imports/k8s/OwnerReference.go +++ b/pods/imports/k8s/OwnerReference.go @@ -1,5 +1,6 @@ package k8s + // OwnerReference contains enough information to let you identify an owning object. // // An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field. @@ -27,3 +28,4 @@ type OwnerReference struct { // If true, this reference points to the managing controller. Controller *bool `field:"optional" json:"controller" yaml:"controller"` } + diff --git a/pods/imports/k8s/ParamKind.go b/pods/imports/k8s/ParamKind.go index ee90f5af7..be2115de4 100644 --- a/pods/imports/k8s/ParamKind.go +++ b/pods/imports/k8s/ParamKind.go @@ -1,5 +1,6 @@ package k8s + // ParamKind is a tuple of Group Kind and Version. type ParamKind struct { // APIVersion is the API group version the resources belong to. @@ -11,3 +12,4 @@ type ParamKind struct { // Required. Kind *string `field:"optional" json:"kind" yaml:"kind"` } + diff --git a/pods/imports/k8s/ParamKindV1Alpha1.go b/pods/imports/k8s/ParamKindV1Alpha1.go index 7e1ca680b..e9a52de2a 100644 --- a/pods/imports/k8s/ParamKindV1Alpha1.go +++ b/pods/imports/k8s/ParamKindV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // ParamKind is a tuple of Group Kind and Version. type ParamKindV1Alpha1 struct { // APIVersion is the API group version the resources belong to. @@ -11,3 +12,4 @@ type ParamKindV1Alpha1 struct { // Required. Kind *string `field:"optional" json:"kind" yaml:"kind"` } + diff --git a/pods/imports/k8s/ParamKindV1Beta1.go b/pods/imports/k8s/ParamKindV1Beta1.go index fb09e9815..034d27ce1 100644 --- a/pods/imports/k8s/ParamKindV1Beta1.go +++ b/pods/imports/k8s/ParamKindV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // ParamKind is a tuple of Group Kind and Version. type ParamKindV1Beta1 struct { // APIVersion is the API group version the resources belong to. @@ -11,3 +12,4 @@ type ParamKindV1Beta1 struct { // Required. Kind *string `field:"optional" json:"kind" yaml:"kind"` } + diff --git a/pods/imports/k8s/ParamRef.go b/pods/imports/k8s/ParamRef.go index bb3fd9d12..82bd9d534 100644 --- a/pods/imports/k8s/ParamRef.go +++ b/pods/imports/k8s/ParamRef.go @@ -1,5 +1,6 @@ package k8s + // ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. type ParamRef struct { // name is the name of the resource being referenced. @@ -35,3 +36,4 @@ type ParamRef struct { // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` } + diff --git a/pods/imports/k8s/ParamRefV1Alpha1.go b/pods/imports/k8s/ParamRefV1Alpha1.go index 36ff52994..6758c591c 100644 --- a/pods/imports/k8s/ParamRefV1Alpha1.go +++ b/pods/imports/k8s/ParamRefV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. type ParamRefV1Alpha1 struct { // `name` is the name of the resource being referenced. @@ -33,3 +34,4 @@ type ParamRefV1Alpha1 struct { // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` } + diff --git a/pods/imports/k8s/ParamRefV1Beta1.go b/pods/imports/k8s/ParamRefV1Beta1.go index ff431e3d1..0a9d6ee3a 100644 --- a/pods/imports/k8s/ParamRefV1Beta1.go +++ b/pods/imports/k8s/ParamRefV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. type ParamRefV1Beta1 struct { // name is the name of the resource being referenced. @@ -35,3 +36,4 @@ type ParamRefV1Beta1 struct { // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` } + diff --git a/pods/imports/k8s/ParentReferenceV1Beta1.go b/pods/imports/k8s/ParentReferenceV1Beta1.go index 7d7cc696b..53ac50e8c 100644 --- a/pods/imports/k8s/ParentReferenceV1Beta1.go +++ b/pods/imports/k8s/ParentReferenceV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // ParentReference describes a reference to a parent object. type ParentReferenceV1Beta1 struct { // Name is the name of the object being referenced. @@ -11,3 +12,4 @@ type ParentReferenceV1Beta1 struct { // Namespace is the namespace of the object being referenced. Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` } + diff --git a/pods/imports/k8s/PersistentVolumeClaimSpec.go b/pods/imports/k8s/PersistentVolumeClaimSpec.go index 5be2f63c9..e5954cf52 100644 --- a/pods/imports/k8s/PersistentVolumeClaimSpec.go +++ b/pods/imports/k8s/PersistentVolumeClaimSpec.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes. type PersistentVolumeClaimSpec struct { // accessModes contains the desired access modes the volume should have. @@ -40,3 +41,4 @@ type PersistentVolumeClaimSpec struct { // volumeName is the binding reference to the PersistentVolume backing this claim. VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` } + diff --git a/pods/imports/k8s/PersistentVolumeClaimTemplate.go b/pods/imports/k8s/PersistentVolumeClaimTemplate.go index d52b70f0b..8ed01f2b2 100644 --- a/pods/imports/k8s/PersistentVolumeClaimTemplate.go +++ b/pods/imports/k8s/PersistentVolumeClaimTemplate.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource. type PersistentVolumeClaimTemplate struct { // The specification for the PersistentVolumeClaim. @@ -11,3 +12,4 @@ type PersistentVolumeClaimTemplate struct { // No other fields are allowed and will be rejected during validation. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go b/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go index ed5de46fa..d2dddaf6e 100644 --- a/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go +++ b/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. // // This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system). @@ -13,3 +14,4 @@ type PersistentVolumeClaimVolumeSource struct { // Default false. ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/PersistentVolumeSpec.go b/pods/imports/k8s/PersistentVolumeSpec.go index 1e32fc287..9e5484289 100644 --- a/pods/imports/k8s/PersistentVolumeSpec.go +++ b/pods/imports/k8s/PersistentVolumeSpec.go @@ -1,5 +1,6 @@ package k8s + // PersistentVolumeSpec is the specification of a persistent volume. type PersistentVolumeSpec struct { // accessModes contains all ways the volume can be mounted. @@ -8,51 +9,43 @@ type PersistentVolumeSpec struct { AccessModes *[]*string `field:"optional" json:"accessModes" yaml:"accessModes"` // awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. // - // Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore AwsElasticBlockStore *AwsElasticBlockStoreVolumeSource `field:"optional" json:"awsElasticBlockStore" yaml:"awsElasticBlockStore"` // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - // - // Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver. AzureDisk *AzureDiskVolumeSource `field:"optional" json:"azureDisk" yaml:"azureDisk"` // azureFile represents an Azure File Service mount on the host and bind mount to the pod. - // - // Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type are redirected to the file.csi.azure.com CSI driver. AzureFile *AzureFilePersistentVolumeSource `field:"optional" json:"azureFile" yaml:"azureFile"` // capacity is the description of the persistent volume's resources and capacity. // // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity Capacity *map[string]Quantity `field:"optional" json:"capacity" yaml:"capacity"` // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. - // - // Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported. Cephfs *CephFsPersistentVolumeSource `field:"optional" json:"cephfs" yaml:"cephfs"` // cinder represents a cinder volume attached and mounted on kubelets host machine. // - // Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + // More info: https://examples.k8s.io/mysql-cinder-pd/README.md Cinder *CinderPersistentVolumeSource `field:"optional" json:"cinder" yaml:"cinder"` // claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. // // Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding ClaimRef *ObjectReference `field:"optional" json:"claimRef" yaml:"claimRef"` - // csi represents storage that is handled by an external CSI driver. + // csi represents storage that is handled by an external CSI driver (Beta feature). Csi *CsiPersistentVolumeSource `field:"optional" json:"csi" yaml:"csi"` // fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. Fc *FcVolumeSource `field:"optional" json:"fc" yaml:"fc"` // flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - // - // Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. FlexVolume *FlexPersistentVolumeSource `field:"optional" json:"flexVolume" yaml:"flexVolume"` // flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. // - // This depends on the Flocker control service being running. Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported. + // This depends on the Flocker control service being running. Flocker *FlockerVolumeSource `field:"optional" json:"flocker" yaml:"flocker"` // gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. // - // Provisioned by an admin. Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk GcePersistentDisk *GcePersistentDiskVolumeSource `field:"optional" json:"gcePersistentDisk" yaml:"gcePersistentDisk"` // glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. // - // Provisioned by an admin. Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md + // Provisioned by an admin. More info: https://examples.k8s.io/volumes/glusterfs/README.md Glusterfs *GlusterfsPersistentVolumeSource `field:"optional" json:"glusterfs" yaml:"glusterfs"` // hostPath represents a directory on the host. // @@ -79,32 +72,22 @@ type PersistentVolumeSpec struct { // Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming PersistentVolumeReclaimPolicy *string `field:"optional" json:"persistentVolumeReclaimPolicy" yaml:"persistentVolumeReclaimPolicy"` // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. - // - // Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported. PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `field:"optional" json:"photonPersistentDisk" yaml:"photonPersistentDisk"` // portworxVolume represents a portworx volume attached and mounted on kubelets host machine. - // - // Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate is on. PortworxVolume *PortworxVolumeSource `field:"optional" json:"portworxVolume" yaml:"portworxVolume"` // quobyte represents a Quobyte mount on the host that shares a pod's lifetime. - // - // Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported. Quobyte *QuobyteVolumeSource `field:"optional" json:"quobyte" yaml:"quobyte"` // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. // - // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md + // More info: https://examples.k8s.io/volumes/rbd/README.md Rbd *RbdPersistentVolumeSource `field:"optional" json:"rbd" yaml:"rbd"` // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - // - // Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported. ScaleIo *ScaleIoPersistentVolumeSource `field:"optional" json:"scaleIo" yaml:"scaleIo"` // storageClassName is the name of StorageClass to which this persistent volume belongs. // // Empty value means that this volume does not belong to any StorageClass. StorageClassName *string `field:"optional" json:"storageClassName" yaml:"storageClassName"` - // storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod. - // - // Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported. More info: https://examples.k8s.io/volumes/storageos/README.md + // storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md. Storageos *StorageOsPersistentVolumeSource `field:"optional" json:"storageos" yaml:"storageos"` // Name of VolumeAttributesClass to which this persistent volume belongs. // @@ -115,7 +98,6 @@ type PersistentVolumeSpec struct { // Value of Filesystem is implied when not included in spec. VolumeMode *string `field:"optional" json:"volumeMode" yaml:"volumeMode"` // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. - // - // Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type are redirected to the csi.vsphere.vmware.com CSI driver. VsphereVolume *VsphereVirtualDiskVolumeSource `field:"optional" json:"vsphereVolume" yaml:"vsphereVolume"` } + diff --git a/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go b/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go index f0a13d307..dae63b3f4 100644 --- a/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go +++ b/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Photon Controller persistent disk resource. type PhotonPersistentDiskVolumeSource struct { // pdID is the ID that identifies Photon Controller persistent disk. @@ -9,3 +10,4 @@ type PhotonPersistentDiskVolumeSource struct { // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. FsType *string `field:"optional" json:"fsType" yaml:"fsType"` } + diff --git a/pods/imports/k8s/PodAffinity.go b/pods/imports/k8s/PodAffinity.go index 7b9622149..dc11af2ac 100644 --- a/pods/imports/k8s/PodAffinity.go +++ b/pods/imports/k8s/PodAffinity.go @@ -1,5 +1,6 @@ package k8s + // Pod affinity is a group of inter pod affinity scheduling rules. type PodAffinity struct { // The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. @@ -11,3 +12,4 @@ type PodAffinity struct { // If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingIgnoredDuringExecution *[]*PodAffinityTerm `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` } + diff --git a/pods/imports/k8s/PodAffinityTerm.go b/pods/imports/k8s/PodAffinityTerm.go index 4f3180141..8c968f898 100644 --- a/pods/imports/k8s/PodAffinityTerm.go +++ b/pods/imports/k8s/PodAffinityTerm.go @@ -1,5 +1,6 @@ package k8s + // Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running. type PodAffinityTerm struct { // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. @@ -27,3 +28,4 @@ type PodAffinityTerm struct { // The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` } + diff --git a/pods/imports/k8s/PodAntiAffinity.go b/pods/imports/k8s/PodAntiAffinity.go index c42932ddb..61c83b5fe 100644 --- a/pods/imports/k8s/PodAntiAffinity.go +++ b/pods/imports/k8s/PodAntiAffinity.go @@ -1,5 +1,6 @@ package k8s + // Pod anti affinity is a group of inter pod anti affinity scheduling rules. type PodAntiAffinity struct { // The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. @@ -11,3 +12,4 @@ type PodAntiAffinity struct { // If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingIgnoredDuringExecution *[]*PodAffinityTerm `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` } + diff --git a/pods/imports/k8s/PodDisruptionBudgetSpec.go b/pods/imports/k8s/PodDisruptionBudgetSpec.go index 15588d9ec..d46a98975 100644 --- a/pods/imports/k8s/PodDisruptionBudgetSpec.go +++ b/pods/imports/k8s/PodDisruptionBudgetSpec.go @@ -1,5 +1,6 @@ package k8s + // PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. type PodDisruptionBudgetSpec struct { // An eviction is allowed if at most "maxUnavailable" pods selected by "selector" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with "minAvailable". @@ -25,3 +26,4 @@ type PodDisruptionBudgetSpec struct { // This field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). UnhealthyPodEvictionPolicy *string `field:"optional" json:"unhealthyPodEvictionPolicy" yaml:"unhealthyPodEvictionPolicy"` } + diff --git a/pods/imports/k8s/PodDnsConfig.go b/pods/imports/k8s/PodDnsConfig.go index 4cd0c7fc0..c8c4a4fd1 100644 --- a/pods/imports/k8s/PodDnsConfig.go +++ b/pods/imports/k8s/PodDnsConfig.go @@ -1,5 +1,6 @@ package k8s + // PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. type PodDnsConfig struct { // A list of DNS name server IP addresses. @@ -15,3 +16,4 @@ type PodDnsConfig struct { // This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. Searches *[]*string `field:"optional" json:"searches" yaml:"searches"` } + diff --git a/pods/imports/k8s/PodDnsConfigOption.go b/pods/imports/k8s/PodDnsConfigOption.go index b0420d91d..727cd9efe 100644 --- a/pods/imports/k8s/PodDnsConfigOption.go +++ b/pods/imports/k8s/PodDnsConfigOption.go @@ -1,11 +1,10 @@ package k8s + // PodDNSConfigOption defines DNS resolver options of a pod. type PodDnsConfigOption struct { - // Name is this DNS resolver option's name. - // // Required. Name *string `field:"optional" json:"name" yaml:"name"` - // Value is this DNS resolver option's value. Value *string `field:"optional" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/PodFailurePolicy.go b/pods/imports/k8s/PodFailurePolicy.go index f2e48e22e..83fa37cce 100644 --- a/pods/imports/k8s/PodFailurePolicy.go +++ b/pods/imports/k8s/PodFailurePolicy.go @@ -1,5 +1,6 @@ package k8s + // PodFailurePolicy describes how failed pods influence the backoffLimit. type PodFailurePolicy struct { // A list of pod failure policy rules. @@ -7,3 +8,4 @@ type PodFailurePolicy struct { // The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed. Rules *[]*PodFailurePolicyRule `field:"required" json:"rules" yaml:"rules"` } + diff --git a/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go b/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go index 20b60489f..aed2ad918 100644 --- a/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go +++ b/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go @@ -1,5 +1,6 @@ package k8s + // PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. // // In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check. @@ -25,3 +26,4 @@ type PodFailurePolicyOnExitCodesRequirement struct { // When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template. ContainerName *string `field:"optional" json:"containerName" yaml:"containerName"` } + diff --git a/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go b/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go index d8e07b05f..e471ceec4 100644 --- a/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go +++ b/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go @@ -1,5 +1,6 @@ package k8s + // PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type. type PodFailurePolicyOnPodConditionsPattern struct { // Specifies the required Pod condition status. @@ -13,3 +14,4 @@ type PodFailurePolicyOnPodConditionsPattern struct { // To match a pod condition it is required that specified type equals the pod condition type. Type *string `field:"required" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/PodFailurePolicyRule.go b/pods/imports/k8s/PodFailurePolicyRule.go index 87b073604..3df9cf87a 100644 --- a/pods/imports/k8s/PodFailurePolicyRule.go +++ b/pods/imports/k8s/PodFailurePolicyRule.go @@ -1,5 +1,6 @@ package k8s + // PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. // // One of onExitCodes and onPodConditions, but not both, can be used in each rule. @@ -25,3 +26,4 @@ type PodFailurePolicyRule struct { // The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed. OnPodConditions *[]*PodFailurePolicyOnPodConditionsPattern `field:"optional" json:"onPodConditions" yaml:"onPodConditions"` } + diff --git a/pods/imports/k8s/PodOs.go b/pods/imports/k8s/PodOs.go index 403527770..f0c4f4c39 100644 --- a/pods/imports/k8s/PodOs.go +++ b/pods/imports/k8s/PodOs.go @@ -1,5 +1,6 @@ package k8s + // PodOS defines the OS parameters of a pod. type PodOs struct { // Name is the name of the operating system. @@ -7,3 +8,4 @@ type PodOs struct { // The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/PodReadinessGate.go b/pods/imports/k8s/PodReadinessGate.go index 0df90490c..eb24a466d 100644 --- a/pods/imports/k8s/PodReadinessGate.go +++ b/pods/imports/k8s/PodReadinessGate.go @@ -1,7 +1,9 @@ package k8s + // PodReadinessGate contains the reference to a pod condition. type PodReadinessGate struct { // ConditionType refers to a condition in the pod's condition list with matching type. ConditionType *string `field:"required" json:"conditionType" yaml:"conditionType"` } + diff --git a/pods/imports/k8s/PodResourceClaim.go b/pods/imports/k8s/PodResourceClaim.go index 7cfa611ae..00dd91ce9 100644 --- a/pods/imports/k8s/PodResourceClaim.go +++ b/pods/imports/k8s/PodResourceClaim.go @@ -1,5 +1,6 @@ package k8s + // PodResourceClaim references exactly one ResourceClaim, either directly or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim for the pod. // // It adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name. @@ -21,3 +22,4 @@ type PodResourceClaim struct { // Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set. ResourceClaimTemplateName *string `field:"optional" json:"resourceClaimTemplateName" yaml:"resourceClaimTemplateName"` } + diff --git a/pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go b/pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go new file mode 100644 index 000000000..946e9a5af --- /dev/null +++ b/pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go @@ -0,0 +1,13 @@ +package k8s + + +// PodSchedulingContextSpec describes where resources for the Pod are needed. +type PodSchedulingContextSpecV1Alpha3 struct { + // PotentialNodes lists nodes where the Pod might be able to run. + // + // The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced. + PotentialNodes *[]*string `field:"optional" json:"potentialNodes" yaml:"potentialNodes"` + // SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted. + SelectedNode *string `field:"optional" json:"selectedNode" yaml:"selectedNode"` +} + diff --git a/pods/imports/k8s/PodSchedulingGate.go b/pods/imports/k8s/PodSchedulingGate.go index 90604b028..dc19a7c77 100644 --- a/pods/imports/k8s/PodSchedulingGate.go +++ b/pods/imports/k8s/PodSchedulingGate.go @@ -1,5 +1,6 @@ package k8s + // PodSchedulingGate is associated to a Pod to guard its scheduling. type PodSchedulingGate struct { // Name of the scheduling gate. @@ -7,3 +8,4 @@ type PodSchedulingGate struct { // Each scheduling gate must have a unique name field. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/PodSecurityContext.go b/pods/imports/k8s/PodSecurityContext.go index e2c337156..437efb50c 100644 --- a/pods/imports/k8s/PodSecurityContext.go +++ b/pods/imports/k8s/PodSecurityContext.go @@ -1,5 +1,6 @@ package k8s + // PodSecurityContext holds pod-level security attributes and common container settings. // // Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext. @@ -38,20 +39,6 @@ type PodSecurityContext struct { // // Note that this field cannot be set when spec.os.name is windows. SeccompProfile *SeccompProfile `field:"optional" json:"seccompProfile" yaml:"seccompProfile"` - // seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod. - // - // It has no effect on nodes that do not support SELinux or to volumes does not support SELinux. Valid values are "MountOption" and "Recursive". - // - // "Recursive" means relabeling of all files on all Pod volumes by the container runtime. This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node. - // - // "MountOption" mounts all eligible Pod volumes with `-o context` mount option. This requires all Pods that share the same volume to use the same SELinux label. It is not possible to share the same volume among privileged and unprivileged Pods. Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their CSIDriver instance. Other volumes are always re-labelled recursively. "MountOption" value is allowed only when SELinuxMount feature gate is enabled. - // - // If not specified and SELinuxMount feature gate is enabled, "MountOption" is used. If not specified and SELinuxMount feature gate is disabled, "MountOption" is used for ReadWriteOncePod volumes and "Recursive" for all other volumes. - // - // This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers. - // - // All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state. Note that this field cannot be set when spec.os.name is windows. - SeLinuxChangePolicy *string `field:"optional" json:"seLinuxChangePolicy" yaml:"seLinuxChangePolicy"` // The SELinux context to be applied to all containers. // // If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. @@ -73,3 +60,4 @@ type PodSecurityContext struct { // If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. WindowsOptions *WindowsSecurityContextOptions `field:"optional" json:"windowsOptions" yaml:"windowsOptions"` } + diff --git a/pods/imports/k8s/PodSpec.go b/pods/imports/k8s/PodSpec.go index e40ad0303..68642e0cb 100644 --- a/pods/imports/k8s/PodSpec.go +++ b/pods/imports/k8s/PodSpec.go @@ -1,5 +1,6 @@ package k8s + // PodSpec is a description of a pod. type PodSpec struct { // List of containers belonging to the pod. @@ -116,14 +117,6 @@ type PodSpec struct { // // This field is immutable. ResourceClaims *[]*PodResourceClaim `field:"optional" json:"resourceClaims" yaml:"resourceClaims"` - // Resources is the total amount of CPU and Memory resources required by all containers in the pod. - // - // It supports specifying Requests and Limits for "cpu" and "memory" resource names only. ResourceClaims are not supported. - // - // This field enables fine-grained control over resource allocation for the entire pod, allowing resource sharing among containers in a pod. - // - // This is an alpha field and requires enabling the PodLevelResources feature gate. - Resources *ResourceRequirements `field:"optional" json:"resources" yaml:"resources"` // Restart policy for all containers within the pod. // // One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy @@ -158,7 +151,7 @@ type PodSpec struct { ServiceAccountName *string `field:"optional" json:"serviceAccountName" yaml:"serviceAccountName"` // If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). // - // In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false. + // In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false. // Default: false. // SetHostnameAsFqdn *bool `field:"optional" json:"setHostnameAsFqdn" yaml:"setHostnameAsFqdn"` @@ -187,3 +180,4 @@ type PodSpec struct { // More info: https://kubernetes.io/docs/concepts/storage/volumes Volumes *[]*Volume `field:"optional" json:"volumes" yaml:"volumes"` } + diff --git a/pods/imports/k8s/PodTemplateSpec.go b/pods/imports/k8s/PodTemplateSpec.go index 304b7e24e..021a66a21 100644 --- a/pods/imports/k8s/PodTemplateSpec.go +++ b/pods/imports/k8s/PodTemplateSpec.go @@ -1,5 +1,6 @@ package k8s + // PodTemplateSpec describes the data a pod should have when created from a template. type PodTemplateSpec struct { // Standard object's metadata. @@ -11,3 +12,4 @@ type PodTemplateSpec struct { // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec *PodSpec `field:"optional" json:"spec" yaml:"spec"` } + diff --git a/pods/imports/k8s/PodsMetricSourceV2.go b/pods/imports/k8s/PodsMetricSourceV2.go index be8773319..55a8845d9 100644 --- a/pods/imports/k8s/PodsMetricSourceV2.go +++ b/pods/imports/k8s/PodsMetricSourceV2.go @@ -1,5 +1,6 @@ package k8s + // PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). // // The values will be averaged together before being compared to the target value. @@ -9,3 +10,4 @@ type PodsMetricSourceV2 struct { // target specifies the target value for the given metric. Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` } + diff --git a/pods/imports/k8s/PolicyRule.go b/pods/imports/k8s/PolicyRule.go index c6322b422..82b853c2a 100644 --- a/pods/imports/k8s/PolicyRule.go +++ b/pods/imports/k8s/PolicyRule.go @@ -1,5 +1,6 @@ package k8s + // PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to. type PolicyRule struct { // Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. @@ -23,3 +24,4 @@ type PolicyRule struct { // '*' represents all resources. Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` } + diff --git a/pods/imports/k8s/PolicyRulesWithSubjects.go b/pods/imports/k8s/PolicyRulesWithSubjects.go index fc27dadd5..5b741c652 100644 --- a/pods/imports/k8s/PolicyRulesWithSubjects.go +++ b/pods/imports/k8s/PolicyRulesWithSubjects.go @@ -1,5 +1,6 @@ package k8s + // PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. // // The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. @@ -15,3 +16,4 @@ type PolicyRulesWithSubjects struct { // At least one of `resourceRules` and `nonResourceRules` has to be non-empty. ResourceRules *[]*ResourcePolicyRule `field:"optional" json:"resourceRules" yaml:"resourceRules"` } + diff --git a/pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go b/pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go new file mode 100644 index 000000000..86402d039 --- /dev/null +++ b/pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go @@ -0,0 +1,19 @@ +package k8s + + +// PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. +// +// The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. +type PolicyRulesWithSubjectsV1Beta3 struct { + // subjects is the list of normal user, serviceaccount, or group that this rule cares about. + // + // There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. + Subjects *[]*SubjectV1Beta3 `field:"required" json:"subjects" yaml:"subjects"` + // `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. + NonResourceRules *[]*NonResourcePolicyRuleV1Beta3 `field:"optional" json:"nonResourceRules" yaml:"nonResourceRules"` + // `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. + // + // At least one of `resourceRules` and `nonResourceRules` has to be non-empty. + ResourceRules *[]*ResourcePolicyRuleV1Beta3 `field:"optional" json:"resourceRules" yaml:"resourceRules"` +} + diff --git a/pods/imports/k8s/PortworxVolumeSource.go b/pods/imports/k8s/PortworxVolumeSource.go index bd1200ad9..5cc4a4ae7 100644 --- a/pods/imports/k8s/PortworxVolumeSource.go +++ b/pods/imports/k8s/PortworxVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // PortworxVolumeSource represents a Portworx volume resource. type PortworxVolumeSource struct { // volumeID uniquely identifies a Portworx volume. @@ -13,3 +14,4 @@ type PortworxVolumeSource struct { // ReadOnly here will force the ReadOnly setting in VolumeMounts. ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` } + diff --git a/pods/imports/k8s/Preconditions.go b/pods/imports/k8s/Preconditions.go index 16ef5f1e4..12cffa0d5 100644 --- a/pods/imports/k8s/Preconditions.go +++ b/pods/imports/k8s/Preconditions.go @@ -1,5 +1,6 @@ package k8s + // Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. type Preconditions struct { // Specifies the target ResourceVersion. @@ -7,3 +8,4 @@ type Preconditions struct { // Specifies the target UID. Uid *string `field:"optional" json:"uid" yaml:"uid"` } + diff --git a/pods/imports/k8s/PreferredSchedulingTerm.go b/pods/imports/k8s/PreferredSchedulingTerm.go index 5edea28ad..82e287d3e 100644 --- a/pods/imports/k8s/PreferredSchedulingTerm.go +++ b/pods/imports/k8s/PreferredSchedulingTerm.go @@ -1,5 +1,6 @@ package k8s + // An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). type PreferredSchedulingTerm struct { // A node selector term, associated with the corresponding weight. @@ -7,3 +8,4 @@ type PreferredSchedulingTerm struct { // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. Weight *float64 `field:"required" json:"weight" yaml:"weight"` } + diff --git a/pods/imports/k8s/PriorityLevelConfigurationReference.go b/pods/imports/k8s/PriorityLevelConfigurationReference.go index b40276e2c..8051b314b 100644 --- a/pods/imports/k8s/PriorityLevelConfigurationReference.go +++ b/pods/imports/k8s/PriorityLevelConfigurationReference.go @@ -1,7 +1,9 @@ package k8s + // PriorityLevelConfigurationReference contains information that points to the "request-priority" being used. type PriorityLevelConfigurationReference struct { // `name` is the name of the priority level configuration being referenced Required. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go b/pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go new file mode 100644 index 000000000..03c5bbee4 --- /dev/null +++ b/pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go @@ -0,0 +1,9 @@ +package k8s + + +// PriorityLevelConfigurationReference contains information that points to the "request-priority" being used. +type PriorityLevelConfigurationReferenceV1Beta3 struct { + // `name` is the name of the priority level configuration being referenced Required. + Name *string `field:"required" json:"name" yaml:"name"` +} + diff --git a/pods/imports/k8s/PriorityLevelConfigurationSpec.go b/pods/imports/k8s/PriorityLevelConfigurationSpec.go index 50b3f0e2a..631804cc3 100644 --- a/pods/imports/k8s/PriorityLevelConfigurationSpec.go +++ b/pods/imports/k8s/PriorityLevelConfigurationSpec.go @@ -1,5 +1,6 @@ package k8s + // PriorityLevelConfigurationSpec specifies the configuration of a priority level. type PriorityLevelConfigurationSpec struct { // `type` indicates whether this priority level is subject to limitation on request execution. @@ -15,3 +16,4 @@ type PriorityLevelConfigurationSpec struct { // This field must be non-empty if and only if `type` is `"Limited"`. Limited *LimitedPriorityLevelConfiguration `field:"optional" json:"limited" yaml:"limited"` } + diff --git a/pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go b/pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go new file mode 100644 index 000000000..823bbc1e1 --- /dev/null +++ b/pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go @@ -0,0 +1,19 @@ +package k8s + + +// PriorityLevelConfigurationSpec specifies the configuration of a priority level. +type PriorityLevelConfigurationSpecV1Beta3 struct { + // `type` indicates whether this priority level is subject to limitation on request execution. + // + // A value of `"Exempt"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `"Limited"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. + Type *string `field:"required" json:"type" yaml:"type"` + // `exempt` specifies how requests are handled for an exempt priority level. + // + // This field MUST be empty if `type` is `"Limited"`. This field MAY be non-empty if `type` is `"Exempt"`. If empty and `type` is `"Exempt"` then the default values for `ExemptPriorityLevelConfiguration` apply. + Exempt *ExemptPriorityLevelConfigurationV1Beta3 `field:"optional" json:"exempt" yaml:"exempt"` + // `limited` specifies how requests are handled for a Limited priority level. + // + // This field must be non-empty if and only if `type` is `"Limited"`. + Limited *LimitedPriorityLevelConfigurationV1Beta3 `field:"optional" json:"limited" yaml:"limited"` +} + diff --git a/pods/imports/k8s/Probe.go b/pods/imports/k8s/Probe.go index 95ef6c84a..631d604ba 100644 --- a/pods/imports/k8s/Probe.go +++ b/pods/imports/k8s/Probe.go @@ -1,8 +1,9 @@ package k8s + // Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. type Probe struct { - // Exec specifies a command to execute in the container. + // Exec specifies the action to take. Exec *ExecAction `field:"optional" json:"exec" yaml:"exec"` // Minimum consecutive failures for the probe to be considered failed after having succeeded. // @@ -10,9 +11,9 @@ type Probe struct { // Default: 3. Minimum value is 1. // FailureThreshold *float64 `field:"optional" json:"failureThreshold" yaml:"failureThreshold"` - // GRPC specifies a GRPC HealthCheckRequest. + // GRPC specifies an action involving a GRPC port. Grpc *GrpcAction `field:"optional" json:"grpc" yaml:"grpc"` - // HTTPGet specifies an HTTP GET request to perform. + // HTTPGet specifies the http request to perform. HttpGet *HttpGetAction `field:"optional" json:"httpGet" yaml:"httpGet"` // Number of seconds after the container has started before liveness probes are initiated. // @@ -30,7 +31,7 @@ type Probe struct { // Default: 1. Must be 1 for liveness and startup. Minimum value is 1. // SuccessThreshold *float64 `field:"optional" json:"successThreshold" yaml:"successThreshold"` - // TCPSocket specifies a connection to a TCP port. + // TCPSocket specifies an action involving a TCP port. TcpSocket *TcpSocketAction `field:"optional" json:"tcpSocket" yaml:"tcpSocket"` // Optional duration in seconds the pod needs to terminate gracefully upon probe failure. // @@ -43,3 +44,4 @@ type Probe struct { // TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` } + diff --git a/pods/imports/k8s/ProjectedVolumeSource.go b/pods/imports/k8s/ProjectedVolumeSource.go index 3230ff7f6..052cd57d4 100644 --- a/pods/imports/k8s/ProjectedVolumeSource.go +++ b/pods/imports/k8s/ProjectedVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a projected volume source. type ProjectedVolumeSource struct { // defaultMode are the mode bits used to set permissions on created files by default. @@ -11,3 +12,4 @@ type ProjectedVolumeSource struct { // Each entry in this list handles one source. Sources *[]*VolumeProjection `field:"optional" json:"sources" yaml:"sources"` } + diff --git a/pods/imports/k8s/Quantity.go b/pods/imports/k8s/Quantity.go index 2d564a4a0..b98751512 100644 --- a/pods/imports/k8s/Quantity.go +++ b/pods/imports/k8s/Quantity.go @@ -24,6 +24,7 @@ func (j *jsiiProxy_Quantity) Value() interface{} { return returns } + func Quantity_FromNumber(value *float64) Quantity { _init_.Initialize() @@ -59,3 +60,4 @@ func Quantity_FromString(value *string) Quantity { return returns } + diff --git a/pods/imports/k8s/Quantity__checks.go b/pods/imports/k8s/Quantity__checks.go index 79ec95b47..147c20548 100644 --- a/pods/imports/k8s/Quantity__checks.go +++ b/pods/imports/k8s/Quantity__checks.go @@ -21,3 +21,4 @@ func validateQuantity_FromStringParameters(value *string) error { return nil } + diff --git a/pods/imports/k8s/Quantity__no_checks.go b/pods/imports/k8s/Quantity__no_checks.go index bafa1033c..28a80f51b 100644 --- a/pods/imports/k8s/Quantity__no_checks.go +++ b/pods/imports/k8s/Quantity__no_checks.go @@ -11,3 +11,4 @@ func validateQuantity_FromNumberParameters(value *float64) error { func validateQuantity_FromStringParameters(value *string) error { return nil } + diff --git a/pods/imports/k8s/QueuingConfiguration.go b/pods/imports/k8s/QueuingConfiguration.go index a4b2e7175..482161620 100644 --- a/pods/imports/k8s/QueuingConfiguration.go +++ b/pods/imports/k8s/QueuingConfiguration.go @@ -1,5 +1,6 @@ package k8s + // QueuingConfiguration holds the configuration parameters for queuing. type QueuingConfiguration struct { // `handSize` is a small positive number that configures the shuffle sharding of requests into queues. @@ -15,3 +16,4 @@ type QueuingConfiguration struct { // The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. Queues *float64 `field:"optional" json:"queues" yaml:"queues"` } + diff --git a/pods/imports/k8s/QueuingConfigurationV1Beta3.go b/pods/imports/k8s/QueuingConfigurationV1Beta3.go new file mode 100644 index 000000000..9c3ca201e --- /dev/null +++ b/pods/imports/k8s/QueuingConfigurationV1Beta3.go @@ -0,0 +1,19 @@ +package k8s + + +// QueuingConfiguration holds the configuration parameters for queuing. +type QueuingConfigurationV1Beta3 struct { + // `handSize` is a small positive number that configures the shuffle sharding of requests into queues. + // + // When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. + HandSize *float64 `field:"optional" json:"handSize" yaml:"handSize"` + // `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; + // + // excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. + QueueLengthLimit *float64 `field:"optional" json:"queueLengthLimit" yaml:"queueLengthLimit"` + // `queues` is the number of queues for this priority level. + // + // The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. + Queues *float64 `field:"optional" json:"queues" yaml:"queues"` +} + diff --git a/pods/imports/k8s/QuobyteVolumeSource.go b/pods/imports/k8s/QuobyteVolumeSource.go index 43b142ea3..79e2ba236 100644 --- a/pods/imports/k8s/QuobyteVolumeSource.go +++ b/pods/imports/k8s/QuobyteVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Quobyte mount that lasts the lifetime of a pod. // // Quobyte volumes do not support ownership management or SELinux relabeling. @@ -25,3 +26,4 @@ type QuobyteVolumeSource struct { // User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/RbdPersistentVolumeSource.go b/pods/imports/k8s/RbdPersistentVolumeSource.go index de6b07cdd..67171ddeb 100644 --- a/pods/imports/k8s/RbdPersistentVolumeSource.go +++ b/pods/imports/k8s/RbdPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Rados Block Device mount that lasts the lifetime of a pod. // // RBD volumes support ownership management and SELinux relabeling. @@ -47,3 +48,4 @@ type RbdPersistentVolumeSource struct { // User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/RbdVolumeSource.go b/pods/imports/k8s/RbdVolumeSource.go index e0f3a3462..f9810fa82 100644 --- a/pods/imports/k8s/RbdVolumeSource.go +++ b/pods/imports/k8s/RbdVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a Rados Block Device mount that lasts the lifetime of a pod. // // RBD volumes support ownership management and SELinux relabeling. @@ -47,3 +48,4 @@ type RbdVolumeSource struct { // User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/ReplicaSetSpec.go b/pods/imports/k8s/ReplicaSetSpec.go index 47d515351..30ed2ce9f 100644 --- a/pods/imports/k8s/ReplicaSetSpec.go +++ b/pods/imports/k8s/ReplicaSetSpec.go @@ -1,5 +1,6 @@ package k8s + // ReplicaSetSpec is the specification of a ReplicaSet. type ReplicaSetSpec struct { // Selector is a label query over pods that should match the replica count. @@ -23,3 +24,4 @@ type ReplicaSetSpec struct { // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` } + diff --git a/pods/imports/k8s/ReplicationControllerSpec.go b/pods/imports/k8s/ReplicationControllerSpec.go index 99bbf030d..edfab8412 100644 --- a/pods/imports/k8s/ReplicationControllerSpec.go +++ b/pods/imports/k8s/ReplicationControllerSpec.go @@ -1,5 +1,6 @@ package k8s + // ReplicationControllerSpec is the specification of a replication controller. type ReplicationControllerSpec struct { // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. @@ -23,3 +24,4 @@ type ReplicationControllerSpec struct { // This takes precedence over a TemplateRef. The only allowed template.spec.restartPolicy value is "Always". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` } + diff --git a/pods/imports/k8s/ResourceAttributes.go b/pods/imports/k8s/ResourceAttributes.go index 9de2de71b..ad00bcd9b 100644 --- a/pods/imports/k8s/ResourceAttributes.go +++ b/pods/imports/k8s/ResourceAttributes.go @@ -1,5 +1,6 @@ package k8s + // ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface. type ResourceAttributes struct { // fieldSelector describes the limitation on access based on field. It can only limit access, not broaden it. @@ -39,3 +40,4 @@ type ResourceAttributes struct { // "*" means all. Version *string `field:"optional" json:"version" yaml:"version"` } + diff --git a/pods/imports/k8s/ResourceClaim.go b/pods/imports/k8s/ResourceClaim.go index 3b7380f9b..4ad44bdd1 100644 --- a/pods/imports/k8s/ResourceClaim.go +++ b/pods/imports/k8s/ResourceClaim.go @@ -1,5 +1,6 @@ package k8s + // ResourceClaim references one entry in PodSpec.ResourceClaims. type ResourceClaim struct { // Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. @@ -9,3 +10,4 @@ type ResourceClaim struct { // If empty, everything from the claim is made available, otherwise only the result of this request. Request *string `field:"optional" json:"request" yaml:"request"` } + diff --git a/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go b/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go index 4b71f5bc8..98a9d1290 100644 --- a/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go +++ b/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go @@ -1,7 +1,17 @@ package k8s + // ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it. type ResourceClaimSpecV1Alpha3 struct { + // Controller is the name of the DRA driver that is meant to handle allocation of this claim. + // + // If empty, allocation is handled by the scheduler while scheduling a pod. + // + // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. + // + // This is an alpha field and requires enabling the DRAControlPlaneController feature gate. + Controller *string `field:"optional" json:"controller" yaml:"controller"` // Devices defines how to request devices. Devices *DeviceClaimV1Alpha3 `field:"optional" json:"devices" yaml:"devices"` } + diff --git a/pods/imports/k8s/ResourceClaimSpecV1Beta1.go b/pods/imports/k8s/ResourceClaimSpecV1Beta1.go deleted file mode 100644 index 846a8497d..000000000 --- a/pods/imports/k8s/ResourceClaimSpecV1Beta1.go +++ /dev/null @@ -1,7 +0,0 @@ -package k8s - -// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it. -type ResourceClaimSpecV1Beta1 struct { - // Devices defines how to request devices. - Devices *DeviceClaimV1Beta1 `field:"optional" json:"devices" yaml:"devices"` -} diff --git a/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go b/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go index 9ad42c0b0..bf4231df2 100644 --- a/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go +++ b/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go @@ -1,13 +1,15 @@ package k8s + // ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim. type ResourceClaimTemplateSpecV1Alpha3 struct { // Spec for the ResourceClaim. // // The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here. Spec *ResourceClaimSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim when creating it. + // ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. // // No other fields are allowed and will be rejected during validation. Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` } + diff --git a/pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go b/pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go deleted file mode 100644 index c18cd1bb2..000000000 --- a/pods/imports/k8s/ResourceClaimTemplateSpecV1Beta1.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - -// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim. -type ResourceClaimTemplateSpecV1Beta1 struct { - // Spec for the ResourceClaim. - // - // The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here. - Spec *ResourceClaimSpecV1Beta1 `field:"required" json:"spec" yaml:"spec"` - // ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim when creating it. - // - // No other fields are allowed and will be rejected during validation. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} diff --git a/pods/imports/k8s/ResourceFieldSelector.go b/pods/imports/k8s/ResourceFieldSelector.go index 39e67d39c..46b5bbfde 100644 --- a/pods/imports/k8s/ResourceFieldSelector.go +++ b/pods/imports/k8s/ResourceFieldSelector.go @@ -1,5 +1,6 @@ package k8s + // ResourceFieldSelector represents container resources (cpu, memory) and their output format. type ResourceFieldSelector struct { // Required: resource to select. @@ -9,3 +10,4 @@ type ResourceFieldSelector struct { // Specifies the output format of the exposed resources, defaults to "1". Divisor Quantity `field:"optional" json:"divisor" yaml:"divisor"` } + diff --git a/pods/imports/k8s/ResourceMetricSourceV2.go b/pods/imports/k8s/ResourceMetricSourceV2.go index 8eec73487..fd3878381 100644 --- a/pods/imports/k8s/ResourceMetricSourceV2.go +++ b/pods/imports/k8s/ResourceMetricSourceV2.go @@ -1,5 +1,6 @@ package k8s + // ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set. type ResourceMetricSourceV2 struct { // name is the name of the resource in question. @@ -7,3 +8,4 @@ type ResourceMetricSourceV2 struct { // target specifies the target value for the given metric. Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` } + diff --git a/pods/imports/k8s/ResourcePolicyRule.go b/pods/imports/k8s/ResourcePolicyRule.go index a093401af..259112942 100644 --- a/pods/imports/k8s/ResourcePolicyRule.go +++ b/pods/imports/k8s/ResourcePolicyRule.go @@ -1,5 +1,6 @@ package k8s + // ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. // // A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==""`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace. @@ -23,3 +24,4 @@ type ResourcePolicyRule struct { // A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` } + diff --git a/pods/imports/k8s/ResourcePolicyRuleV1Beta3.go b/pods/imports/k8s/ResourcePolicyRuleV1Beta3.go new file mode 100644 index 000000000..9a2fe6d37 --- /dev/null +++ b/pods/imports/k8s/ResourcePolicyRuleV1Beta3.go @@ -0,0 +1,27 @@ +package k8s + + +// ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. +// +// A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==""`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace. +type ResourcePolicyRuleV1Beta3 struct { + // `apiGroups` is a list of matching API groups and may not be empty. + // + // "*" matches all API groups and, if present, must be the only entry. Required. + ApiGroups *[]*string `field:"required" json:"apiGroups" yaml:"apiGroups"` + // `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required. + Resources *[]*string `field:"required" json:"resources" yaml:"resources"` + // `verbs` is a list of matching verbs and may not be empty. + // + // "*" matches all verbs and, if present, must be the only entry. Required. + Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` + // `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). + // + // If this field is omitted or false then the `namespaces` field must contain a non-empty list. + ClusterScope *bool `field:"optional" json:"clusterScope" yaml:"clusterScope"` + // `namespaces` is a list of target namespaces that restricts matches. + // + // A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. + Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` +} + diff --git a/pods/imports/k8s/ResourcePoolV1Alpha3.go b/pods/imports/k8s/ResourcePoolV1Alpha3.go index 974314ca4..3c5d5631d 100644 --- a/pods/imports/k8s/ResourcePoolV1Alpha3.go +++ b/pods/imports/k8s/ResourcePoolV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // ResourcePool describes the pool that ResourceSlices belong to. type ResourcePoolV1Alpha3 struct { // Generation tracks the change in a pool over time. @@ -19,3 +20,4 @@ type ResourcePoolV1Alpha3 struct { // Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool. ResourceSliceCount *float64 `field:"required" json:"resourceSliceCount" yaml:"resourceSliceCount"` } + diff --git a/pods/imports/k8s/ResourcePoolV1Beta1.go b/pods/imports/k8s/ResourcePoolV1Beta1.go deleted file mode 100644 index e5486f36a..000000000 --- a/pods/imports/k8s/ResourcePoolV1Beta1.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - -// ResourcePool describes the pool that ResourceSlices belong to. -type ResourcePoolV1Beta1 struct { - // Generation tracks the change in a pool over time. - // - // Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted. - // - // Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state. - Generation *float64 `field:"required" json:"generation" yaml:"generation"` - // Name is used to identify the pool. - // - // For node-local devices, this is often the node name, but this is not required. - // - // It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable. - Name *string `field:"required" json:"name" yaml:"name"` - // ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero. - // - // Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool. - ResourceSliceCount *float64 `field:"required" json:"resourceSliceCount" yaml:"resourceSliceCount"` -} diff --git a/pods/imports/k8s/ResourceQuotaSpec.go b/pods/imports/k8s/ResourceQuotaSpec.go index 93b0b82c3..1a4243e71 100644 --- a/pods/imports/k8s/ResourceQuotaSpec.go +++ b/pods/imports/k8s/ResourceQuotaSpec.go @@ -1,5 +1,6 @@ package k8s + // ResourceQuotaSpec defines the desired hard limits to enforce for Quota. type ResourceQuotaSpec struct { // hard is the set of desired hard limits for each named resource. @@ -15,3 +16,4 @@ type ResourceQuotaSpec struct { // For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched. ScopeSelector *ScopeSelector `field:"optional" json:"scopeSelector" yaml:"scopeSelector"` } + diff --git a/pods/imports/k8s/ResourceRequirements.go b/pods/imports/k8s/ResourceRequirements.go index 7da83b94a..ccae08dfb 100644 --- a/pods/imports/k8s/ResourceRequirements.go +++ b/pods/imports/k8s/ResourceRequirements.go @@ -1,5 +1,6 @@ package k8s + // ResourceRequirements describes the compute resource requirements. type ResourceRequirements struct { // Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -17,3 +18,4 @@ type ResourceRequirements struct { // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ Requests *map[string]Quantity `field:"optional" json:"requests" yaml:"requests"` } + diff --git a/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go b/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go index 45c7a3cfd..a21058055 100644 --- a/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go +++ b/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go @@ -1,5 +1,6 @@ package k8s + // ResourceSliceSpec contains the information published by the driver in one ResourceSlice. type ResourceSliceSpecV1Alpha3 struct { // Driver identifies the DRA driver providing the capacity information. @@ -33,3 +34,4 @@ type ResourceSliceSpecV1Alpha3 struct { // Exactly one of NodeName, NodeSelector and AllNodes must be set. NodeSelector *NodeSelector `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` } + diff --git a/pods/imports/k8s/ResourceSliceSpecV1Beta1.go b/pods/imports/k8s/ResourceSliceSpecV1Beta1.go deleted file mode 100644 index a77495179..000000000 --- a/pods/imports/k8s/ResourceSliceSpecV1Beta1.go +++ /dev/null @@ -1,35 +0,0 @@ -package k8s - -// ResourceSliceSpec contains the information published by the driver in one ResourceSlice. -type ResourceSliceSpecV1Beta1 struct { - // Driver identifies the DRA driver providing the capacity information. - // - // A field selector can be used to list only ResourceSlice objects with a certain driver name. - // - // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // Pool describes the pool that this ResourceSlice belongs to. - Pool *ResourcePoolV1Beta1 `field:"required" json:"pool" yaml:"pool"` - // AllNodes indicates that all nodes have access to the resources in the pool. - // - // Exactly one of NodeName, NodeSelector and AllNodes must be set. - AllNodes *bool `field:"optional" json:"allNodes" yaml:"allNodes"` - // Devices lists some or all of the devices in this pool. - // - // Must not have more than 128 entries. - Devices *[]*DeviceV1Beta1 `field:"optional" json:"devices" yaml:"devices"` - // NodeName identifies the node which provides the resources in this pool. - // - // A field selector can be used to list only ResourceSlice objects belonging to a certain node. - // - // This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available. - // - // Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable. - NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` - // NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node. - // - // Must use exactly one term. - // - // Exactly one of NodeName, NodeSelector and AllNodes must be set. - NodeSelector *NodeSelector `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` -} diff --git a/pods/imports/k8s/RoleRef.go b/pods/imports/k8s/RoleRef.go index c88b038b6..364ad5f79 100644 --- a/pods/imports/k8s/RoleRef.go +++ b/pods/imports/k8s/RoleRef.go @@ -1,5 +1,6 @@ package k8s + // RoleRef contains information that points to the role being used. type RoleRef struct { // APIGroup is the group for the resource being referenced. @@ -9,3 +10,4 @@ type RoleRef struct { // Name is the name of resource being referenced. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/RollingUpdateDaemonSet.go b/pods/imports/k8s/RollingUpdateDaemonSet.go index 207bdb686..33be5c436 100644 --- a/pods/imports/k8s/RollingUpdateDaemonSet.go +++ b/pods/imports/k8s/RollingUpdateDaemonSet.go @@ -1,5 +1,6 @@ package k8s + // Spec to control the desired behavior of daemon set rolling update. type RollingUpdateDaemonSet struct { // The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. @@ -11,3 +12,4 @@ type RollingUpdateDaemonSet struct { // Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update. MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` } + diff --git a/pods/imports/k8s/RollingUpdateDeployment.go b/pods/imports/k8s/RollingUpdateDeployment.go index 04037735a..7980c65ae 100644 --- a/pods/imports/k8s/RollingUpdateDeployment.go +++ b/pods/imports/k8s/RollingUpdateDeployment.go @@ -1,5 +1,6 @@ package k8s + // Spec to control the desired behavior of rolling update. type RollingUpdateDeployment struct { // The maximum number of pods that can be scheduled above the desired number of pods. @@ -15,3 +16,4 @@ type RollingUpdateDeployment struct { // MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` } + diff --git a/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go b/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go index 3bb7183da..7ad8d5592 100644 --- a/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go +++ b/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go @@ -1,5 +1,6 @@ package k8s + // RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. type RollingUpdateStatefulSetStrategy struct { // The maximum number of pods that can be unavailable during the update. @@ -13,3 +14,4 @@ type RollingUpdateStatefulSetStrategy struct { // During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0. Partition *float64 `field:"optional" json:"partition" yaml:"partition"` } + diff --git a/pods/imports/k8s/RuleWithOperations.go b/pods/imports/k8s/RuleWithOperations.go index 8579f83c1..125722d62 100644 --- a/pods/imports/k8s/RuleWithOperations.go +++ b/pods/imports/k8s/RuleWithOperations.go @@ -1,5 +1,6 @@ package k8s + // RuleWithOperations is a tuple of Operations and Resources. // // It is recommended to make sure that all the tuple expansions are valid. @@ -31,3 +32,4 @@ type RuleWithOperations struct { // Scope *string `field:"optional" json:"scope" yaml:"scope"` } + diff --git a/pods/imports/k8s/ScaleIoPersistentVolumeSource.go b/pods/imports/k8s/ScaleIoPersistentVolumeSource.go index fd2241ca4..9222b0215 100644 --- a/pods/imports/k8s/ScaleIoPersistentVolumeSource.go +++ b/pods/imports/k8s/ScaleIoPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume. type ScaleIoPersistentVolumeSource struct { // gateway is the host address of the ScaleIO API Gateway. @@ -35,3 +36,4 @@ type ScaleIoPersistentVolumeSource struct { // volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` } + diff --git a/pods/imports/k8s/ScaleIoVolumeSource.go b/pods/imports/k8s/ScaleIoVolumeSource.go index 106839c10..12296a88b 100644 --- a/pods/imports/k8s/ScaleIoVolumeSource.go +++ b/pods/imports/k8s/ScaleIoVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // ScaleIOVolumeSource represents a persistent ScaleIO volume. type ScaleIoVolumeSource struct { // gateway is the host address of the ScaleIO API Gateway. @@ -37,3 +38,4 @@ type ScaleIoVolumeSource struct { // volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` } + diff --git a/pods/imports/k8s/ScaleSpec.go b/pods/imports/k8s/ScaleSpec.go index 3d3853599..39f2bc8ae 100644 --- a/pods/imports/k8s/ScaleSpec.go +++ b/pods/imports/k8s/ScaleSpec.go @@ -1,7 +1,9 @@ package k8s + // ScaleSpec describes the attributes of a scale subresource. type ScaleSpec struct { // replicas is the desired number of instances for the scaled object. Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` } + diff --git a/pods/imports/k8s/Scheduling.go b/pods/imports/k8s/Scheduling.go index ba799d34b..389ac7b81 100644 --- a/pods/imports/k8s/Scheduling.go +++ b/pods/imports/k8s/Scheduling.go @@ -1,5 +1,6 @@ package k8s + // Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass. type Scheduling struct { // nodeSelector lists labels that must be present on nodes that support this RuntimeClass. @@ -9,3 +10,4 @@ type Scheduling struct { // tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass. Tolerations *[]*Toleration `field:"optional" json:"tolerations" yaml:"tolerations"` } + diff --git a/pods/imports/k8s/ScopeSelector.go b/pods/imports/k8s/ScopeSelector.go index b93012cb6..74d04fe79 100644 --- a/pods/imports/k8s/ScopeSelector.go +++ b/pods/imports/k8s/ScopeSelector.go @@ -1,7 +1,9 @@ package k8s + // A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements. type ScopeSelector struct { // A list of scope selector requirements by scope of the resources. MatchExpressions *[]*ScopedResourceSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` } + diff --git a/pods/imports/k8s/ScopedResourceSelectorRequirement.go b/pods/imports/k8s/ScopedResourceSelectorRequirement.go index ad4213454..0b040898a 100644 --- a/pods/imports/k8s/ScopedResourceSelectorRequirement.go +++ b/pods/imports/k8s/ScopedResourceSelectorRequirement.go @@ -1,5 +1,6 @@ package k8s + // A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values. type ScopedResourceSelectorRequirement struct { // Represents a scope's relationship to a set of values. @@ -13,3 +14,4 @@ type ScopedResourceSelectorRequirement struct { // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. Values *[]*string `field:"optional" json:"values" yaml:"values"` } + diff --git a/pods/imports/k8s/SeLinuxOptions.go b/pods/imports/k8s/SeLinuxOptions.go index 32c0c0e78..48e9c8ec0 100644 --- a/pods/imports/k8s/SeLinuxOptions.go +++ b/pods/imports/k8s/SeLinuxOptions.go @@ -1,5 +1,6 @@ package k8s + // SELinuxOptions are the labels to be applied to the container. type SeLinuxOptions struct { // Level is SELinux level label that applies to the container. @@ -11,3 +12,4 @@ type SeLinuxOptions struct { // User is a SELinux user label that applies to the container. User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/SeccompProfile.go b/pods/imports/k8s/SeccompProfile.go index cd95236c5..20c2015eb 100644 --- a/pods/imports/k8s/SeccompProfile.go +++ b/pods/imports/k8s/SeccompProfile.go @@ -1,5 +1,6 @@ package k8s + // SeccompProfile defines a pod/container's seccomp profile settings. // // Only one profile source may be set. @@ -13,3 +14,4 @@ type SeccompProfile struct { // The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. LocalhostProfile *string `field:"optional" json:"localhostProfile" yaml:"localhostProfile"` } + diff --git a/pods/imports/k8s/SecretEnvSource.go b/pods/imports/k8s/SecretEnvSource.go index 6144aeca9..894122884 100644 --- a/pods/imports/k8s/SecretEnvSource.go +++ b/pods/imports/k8s/SecretEnvSource.go @@ -1,5 +1,6 @@ package k8s + // SecretEnvSource selects a Secret to populate the environment variables with. // // The contents of the target Secret's Data field will represent the key-value pairs as environment variables. @@ -11,3 +12,4 @@ type SecretEnvSource struct { // Specify whether the Secret must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/SecretKeySelector.go b/pods/imports/k8s/SecretKeySelector.go index 27f019df4..22e047c3e 100644 --- a/pods/imports/k8s/SecretKeySelector.go +++ b/pods/imports/k8s/SecretKeySelector.go @@ -1,5 +1,6 @@ package k8s + // SecretKeySelector selects a key of a Secret. type SecretKeySelector struct { // The key of the secret to select from. @@ -13,3 +14,4 @@ type SecretKeySelector struct { // Specify whether the Secret or its key must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/SecretProjection.go b/pods/imports/k8s/SecretProjection.go index 79ae65ab2..6a66e9255 100644 --- a/pods/imports/k8s/SecretProjection.go +++ b/pods/imports/k8s/SecretProjection.go @@ -1,5 +1,6 @@ package k8s + // Adapts a secret into a projected volume. // // The contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode. @@ -15,3 +16,4 @@ type SecretProjection struct { // optional field specify whether the Secret or its key must be defined. Optional *bool `field:"optional" json:"optional" yaml:"optional"` } + diff --git a/pods/imports/k8s/SecretReference.go b/pods/imports/k8s/SecretReference.go index 3981dc7de..0ad62614e 100644 --- a/pods/imports/k8s/SecretReference.go +++ b/pods/imports/k8s/SecretReference.go @@ -1,5 +1,6 @@ package k8s + // SecretReference represents a Secret Reference. // // It has enough information to retrieve secret in any namespace. @@ -9,3 +10,4 @@ type SecretReference struct { // namespace defines the space within which the secret name must be unique. Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` } + diff --git a/pods/imports/k8s/SecretVolumeSource.go b/pods/imports/k8s/SecretVolumeSource.go index b456bbba7..61dfb46b8 100644 --- a/pods/imports/k8s/SecretVolumeSource.go +++ b/pods/imports/k8s/SecretVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Adapts a Secret into a volume. // // The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling. @@ -21,3 +22,4 @@ type SecretVolumeSource struct { // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret SecretName *string `field:"optional" json:"secretName" yaml:"secretName"` } + diff --git a/pods/imports/k8s/SecurityContext.go b/pods/imports/k8s/SecurityContext.go index 54e42109c..1a18c5411 100644 --- a/pods/imports/k8s/SecurityContext.go +++ b/pods/imports/k8s/SecurityContext.go @@ -1,5 +1,6 @@ package k8s + // SecurityContext holds security configuration that will be applied to a container. // // Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. @@ -61,3 +62,4 @@ type SecurityContext struct { // If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. WindowsOptions *WindowsSecurityContextOptions `field:"optional" json:"windowsOptions" yaml:"windowsOptions"` } + diff --git a/pods/imports/k8s/SelectableField.go b/pods/imports/k8s/SelectableField.go index 9c649b0ce..315b7caee 100644 --- a/pods/imports/k8s/SelectableField.go +++ b/pods/imports/k8s/SelectableField.go @@ -1,5 +1,6 @@ package k8s + // SelectableField specifies the JSON path of a field that may be used with field selectors. type SelectableField struct { // jsonPath is a simple JSON path which is evaluated against each custom resource to produce a field selector value. @@ -7,3 +8,4 @@ type SelectableField struct { // Only JSON paths without the array notation are allowed. Must point to a field of type string, boolean or integer. Types with enum values and strings with formats are allowed. If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string. Must not point to metdata fields. Required. JsonPath *string `field:"required" json:"jsonPath" yaml:"jsonPath"` } + diff --git a/pods/imports/k8s/SelfSubjectAccessReviewSpec.go b/pods/imports/k8s/SelfSubjectAccessReviewSpec.go index d127271d2..d66e41746 100644 --- a/pods/imports/k8s/SelfSubjectAccessReviewSpec.go +++ b/pods/imports/k8s/SelfSubjectAccessReviewSpec.go @@ -1,5 +1,6 @@ package k8s + // SelfSubjectAccessReviewSpec is a description of the access request. // // Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set. @@ -9,3 +10,4 @@ type SelfSubjectAccessReviewSpec struct { // ResourceAuthorizationAttributes describes information for a resource access request. ResourceAttributes *ResourceAttributes `field:"optional" json:"resourceAttributes" yaml:"resourceAttributes"` } + diff --git a/pods/imports/k8s/SelfSubjectRulesReviewSpec.go b/pods/imports/k8s/SelfSubjectRulesReviewSpec.go index c0c1e62a9..f9221c2ac 100644 --- a/pods/imports/k8s/SelfSubjectRulesReviewSpec.go +++ b/pods/imports/k8s/SelfSubjectRulesReviewSpec.go @@ -1,5 +1,6 @@ package k8s + // SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview. type SelfSubjectRulesReviewSpec struct { // Namespace to evaluate rules for. @@ -7,3 +8,4 @@ type SelfSubjectRulesReviewSpec struct { // Required. Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` } + diff --git a/pods/imports/k8s/ServiceAccountSubjectV1Beta3.go b/pods/imports/k8s/ServiceAccountSubjectV1Beta3.go new file mode 100644 index 000000000..c016510bc --- /dev/null +++ b/pods/imports/k8s/ServiceAccountSubjectV1Beta3.go @@ -0,0 +1,15 @@ +package k8s + + +// ServiceAccountSubject holds detailed information for service-account-kind subject. +type ServiceAccountSubjectV1Beta3 struct { + // `name` is the name of matching ServiceAccount objects, or "*" to match regardless of name. + // + // Required. + Name *string `field:"required" json:"name" yaml:"name"` + // `namespace` is the namespace of matching ServiceAccount objects. + // + // Required. + Namespace *string `field:"required" json:"namespace" yaml:"namespace"` +} + diff --git a/pods/imports/k8s/ServiceAccountTokenProjection.go b/pods/imports/k8s/ServiceAccountTokenProjection.go index 113022494..b7eea34cb 100644 --- a/pods/imports/k8s/ServiceAccountTokenProjection.go +++ b/pods/imports/k8s/ServiceAccountTokenProjection.go @@ -1,5 +1,6 @@ package k8s + // ServiceAccountTokenProjection represents a projected service account token volume. // // This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise). @@ -17,3 +18,4 @@ type ServiceAccountTokenProjection struct { // ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` } + diff --git a/pods/imports/k8s/ServiceBackendPort.go b/pods/imports/k8s/ServiceBackendPort.go index 2c155e655..ed9930865 100644 --- a/pods/imports/k8s/ServiceBackendPort.go +++ b/pods/imports/k8s/ServiceBackendPort.go @@ -1,5 +1,6 @@ package k8s + // ServiceBackendPort is the service port being referenced. type ServiceBackendPort struct { // name is the name of the port on the Service. @@ -9,3 +10,4 @@ type ServiceBackendPort struct { // number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name". Number *float64 `field:"optional" json:"number" yaml:"number"` } + diff --git a/pods/imports/k8s/ServiceCidrSpecV1Beta1.go b/pods/imports/k8s/ServiceCidrSpecV1Beta1.go index 0d9350c2e..a9e1748d4 100644 --- a/pods/imports/k8s/ServiceCidrSpecV1Beta1.go +++ b/pods/imports/k8s/ServiceCidrSpecV1Beta1.go @@ -1,7 +1,9 @@ package k8s + // ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services. type ServiceCidrSpecV1Beta1 struct { // CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable. Cidrs *[]*string `field:"optional" json:"cidrs" yaml:"cidrs"` } + diff --git a/pods/imports/k8s/ServicePort.go b/pods/imports/k8s/ServicePort.go index 00a5681f7..72c699a31 100644 --- a/pods/imports/k8s/ServicePort.go +++ b/pods/imports/k8s/ServicePort.go @@ -1,5 +1,6 @@ package k8s + // ServicePort contains information on service's port. type ServicePort struct { // The port that will be exposed by this service. @@ -36,3 +37,4 @@ type ServicePort struct { // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service TargetPort IntOrString `field:"optional" json:"targetPort" yaml:"targetPort"` } + diff --git a/pods/imports/k8s/ServiceReference.go b/pods/imports/k8s/ServiceReference.go index 8695de0fe..fa72c8a6c 100644 --- a/pods/imports/k8s/ServiceReference.go +++ b/pods/imports/k8s/ServiceReference.go @@ -1,5 +1,6 @@ package k8s + // ServiceReference holds a reference to Service.legacy.k8s.io. type ServiceReference struct { // `name` is the name of the service. @@ -19,3 +20,4 @@ type ServiceReference struct { // Port *float64 `field:"optional" json:"port" yaml:"port"` } + diff --git a/pods/imports/k8s/ServiceSpec.go b/pods/imports/k8s/ServiceSpec.go index 923446dd8..f55aad2fe 100644 --- a/pods/imports/k8s/ServiceSpec.go +++ b/pods/imports/k8s/ServiceSpec.go @@ -1,5 +1,6 @@ package k8s + // ServiceSpec describes the attributes that a user creates on a service. type ServiceSpec struct { // allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. @@ -78,7 +79,7 @@ type ServiceSpec struct { SessionAffinityConfig *SessionAffinityConfig `field:"optional" json:"sessionAffinityConfig" yaml:"sessionAffinityConfig"` // TrafficDistribution offers a way to express preferences for how traffic is distributed to Service endpoints. // - // Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to "PreferClose", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is a beta field and requires enabling ServiceTrafficDistribution feature. + // Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to "PreferClose", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is an alpha field and requires enabling ServiceTrafficDistribution feature. TrafficDistribution *string `field:"optional" json:"trafficDistribution" yaml:"trafficDistribution"` // type determines how the Service is exposed. // @@ -87,3 +88,4 @@ type ServiceSpec struct { // Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/SessionAffinityConfig.go b/pods/imports/k8s/SessionAffinityConfig.go index a1a4c6640..e7e7f648b 100644 --- a/pods/imports/k8s/SessionAffinityConfig.go +++ b/pods/imports/k8s/SessionAffinityConfig.go @@ -1,7 +1,9 @@ package k8s + // SessionAffinityConfig represents the configurations of session affinity. type SessionAffinityConfig struct { // clientIP contains the configurations of Client IP based session affinity. ClientIp *ClientIpConfig `field:"optional" json:"clientIp" yaml:"clientIp"` } + diff --git a/pods/imports/k8s/SleepAction.go b/pods/imports/k8s/SleepAction.go index 9b73bb0e2..05f90af98 100644 --- a/pods/imports/k8s/SleepAction.go +++ b/pods/imports/k8s/SleepAction.go @@ -1,7 +1,9 @@ package k8s + // SleepAction describes a "sleep" action. type SleepAction struct { // Seconds is the number of seconds to sleep. Seconds *float64 `field:"required" json:"seconds" yaml:"seconds"` } + diff --git a/pods/imports/k8s/StatefulSetOrdinals.go b/pods/imports/k8s/StatefulSetOrdinals.go index 79aff7d64..377342d7f 100644 --- a/pods/imports/k8s/StatefulSetOrdinals.go +++ b/pods/imports/k8s/StatefulSetOrdinals.go @@ -1,5 +1,6 @@ package k8s + // StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet. type StatefulSetOrdinals struct { // start is the number representing the first replica's index. @@ -10,3 +11,4 @@ type StatefulSetOrdinals struct { // [0, .spec.replicas). Start *float64 `field:"optional" json:"start" yaml:"start"` } + diff --git a/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go b/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go index bbbb8923f..93114c871 100644 --- a/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go +++ b/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go @@ -1,5 +1,6 @@ package k8s + // StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. type StatefulSetPersistentVolumeClaimRetentionPolicy struct { // WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. @@ -11,3 +12,4 @@ type StatefulSetPersistentVolumeClaimRetentionPolicy struct { // The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted. WhenScaled *string `field:"optional" json:"whenScaled" yaml:"whenScaled"` } + diff --git a/pods/imports/k8s/StatefulSetSpec.go b/pods/imports/k8s/StatefulSetSpec.go index db5abc9b3..f2ba0e130 100644 --- a/pods/imports/k8s/StatefulSetSpec.go +++ b/pods/imports/k8s/StatefulSetSpec.go @@ -1,5 +1,6 @@ package k8s + // A StatefulSetSpec is the specification of a StatefulSet. type StatefulSetSpec struct { // selector is a label query over pods that should match the replica count. @@ -26,7 +27,7 @@ type StatefulSetSpec struct { Ordinals *StatefulSetOrdinals `field:"optional" json:"ordinals" yaml:"ordinals"` // persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. // - // By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. + // By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is beta. PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `field:"optional" json:"persistentVolumeClaimRetentionPolicy" yaml:"persistentVolumeClaimRetentionPolicy"` // podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. // @@ -47,3 +48,4 @@ type StatefulSetSpec struct { // The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name. VolumeClaimTemplates *[]*KubePersistentVolumeClaimProps `field:"optional" json:"volumeClaimTemplates" yaml:"volumeClaimTemplates"` } + diff --git a/pods/imports/k8s/StatefulSetUpdateStrategy.go b/pods/imports/k8s/StatefulSetUpdateStrategy.go index d7d410054..1e2f06a4f 100644 --- a/pods/imports/k8s/StatefulSetUpdateStrategy.go +++ b/pods/imports/k8s/StatefulSetUpdateStrategy.go @@ -1,5 +1,6 @@ package k8s + // StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. // // It includes any additional parameters necessary to perform the update for the indicated strategy. @@ -13,3 +14,4 @@ type StatefulSetUpdateStrategy struct { // Type *string `field:"optional" json:"type" yaml:"type"` } + diff --git a/pods/imports/k8s/StatusCause.go b/pods/imports/k8s/StatusCause.go index a3c794195..5817903e6 100644 --- a/pods/imports/k8s/StatusCause.go +++ b/pods/imports/k8s/StatusCause.go @@ -1,5 +1,6 @@ package k8s + // StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered. type StatusCause struct { // The field of the resource that has caused this error, as named by its JSON serialization. @@ -19,3 +20,4 @@ type StatusCause struct { // If this value is empty there is no information available. Reason *string `field:"optional" json:"reason" yaml:"reason"` } + diff --git a/pods/imports/k8s/StatusDetails.go b/pods/imports/k8s/StatusDetails.go index b45577cb5..2912e53f2 100644 --- a/pods/imports/k8s/StatusDetails.go +++ b/pods/imports/k8s/StatusDetails.go @@ -1,5 +1,6 @@ package k8s + // StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. // // The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined. @@ -25,3 +26,4 @@ type StatusDetails struct { // (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids Uid *string `field:"optional" json:"uid" yaml:"uid"` } + diff --git a/pods/imports/k8s/StorageOsPersistentVolumeSource.go b/pods/imports/k8s/StorageOsPersistentVolumeSource.go index e186c6244..5f8f080ce 100644 --- a/pods/imports/k8s/StorageOsPersistentVolumeSource.go +++ b/pods/imports/k8s/StorageOsPersistentVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a StorageOS persistent volume resource. type StorageOsPersistentVolumeSource struct { // fsType is the filesystem type to mount. @@ -23,3 +24,4 @@ type StorageOsPersistentVolumeSource struct { // If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. VolumeNamespace *string `field:"optional" json:"volumeNamespace" yaml:"volumeNamespace"` } + diff --git a/pods/imports/k8s/StorageOsVolumeSource.go b/pods/imports/k8s/StorageOsVolumeSource.go index 2fb196f4f..c822001b1 100644 --- a/pods/imports/k8s/StorageOsVolumeSource.go +++ b/pods/imports/k8s/StorageOsVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a StorageOS persistent volume resource. type StorageOsVolumeSource struct { // fsType is the filesystem type to mount. @@ -23,3 +24,4 @@ type StorageOsVolumeSource struct { // If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. VolumeNamespace *string `field:"optional" json:"volumeNamespace" yaml:"volumeNamespace"` } + diff --git a/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go b/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go index 2dcb4338f..33af9d10b 100644 --- a/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go +++ b/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // Spec of the storage version migration. type StorageVersionMigrationSpecV1Alpha1 struct { // The resource that is being migrated. @@ -11,3 +12,4 @@ type StorageVersionMigrationSpecV1Alpha1 struct { // When the .status.conditions indicates the migration is "Running", users can use this token to check the progress of the migration. ContinueToken *string `field:"optional" json:"continueToken" yaml:"continueToken"` } + diff --git a/pods/imports/k8s/Subject.go b/pods/imports/k8s/Subject.go index fed495755..08e5e92f6 100644 --- a/pods/imports/k8s/Subject.go +++ b/pods/imports/k8s/Subject.go @@ -1,5 +1,6 @@ package k8s + // Subject contains a reference to the object or user identities a role binding applies to. // // This can either hold a direct API object reference, or a value for non-objects such as user and group names. @@ -21,3 +22,4 @@ type Subject struct { // If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error. Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` } + diff --git a/pods/imports/k8s/SubjectAccessReviewSpec.go b/pods/imports/k8s/SubjectAccessReviewSpec.go index 32a1426a5..e8496ea95 100644 --- a/pods/imports/k8s/SubjectAccessReviewSpec.go +++ b/pods/imports/k8s/SubjectAccessReviewSpec.go @@ -1,5 +1,6 @@ package k8s + // SubjectAccessReviewSpec is a description of the access request. // // Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set. @@ -19,3 +20,4 @@ type SubjectAccessReviewSpec struct { // If you specify "User" but not "Groups", then is it interpreted as "What if User were not a member of any groups. User *string `field:"optional" json:"user" yaml:"user"` } + diff --git a/pods/imports/k8s/SubjectV1Beta3.go b/pods/imports/k8s/SubjectV1Beta3.go new file mode 100644 index 000000000..1d965510c --- /dev/null +++ b/pods/imports/k8s/SubjectV1Beta3.go @@ -0,0 +1,19 @@ +package k8s + + +// Subject matches the originator of a request, as identified by the request authentication system. +// +// There are three ways of matching an originator; by user, group, or service account. +type SubjectV1Beta3 struct { + // `kind` indicates which one of the other fields is non-empty. + // + // Required. + Kind *string `field:"required" json:"kind" yaml:"kind"` + // `group` matches based on user group name. + Group *GroupSubjectV1Beta3 `field:"optional" json:"group" yaml:"group"` + // `serviceAccount` matches ServiceAccounts. + ServiceAccount *ServiceAccountSubjectV1Beta3 `field:"optional" json:"serviceAccount" yaml:"serviceAccount"` + // `user` matches based on username. + User *UserSubjectV1Beta3 `field:"optional" json:"user" yaml:"user"` +} + diff --git a/pods/imports/k8s/SuccessPolicy.go b/pods/imports/k8s/SuccessPolicy.go index 928311e85..973102d93 100644 --- a/pods/imports/k8s/SuccessPolicy.go +++ b/pods/imports/k8s/SuccessPolicy.go @@ -1,7 +1,9 @@ package k8s + // SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes. type SuccessPolicy struct { // rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the "SucceededCriteriaMet" condition is added, and the lingering pods are removed. The terminal state for such a Job has the "Complete" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed. Rules *[]*SuccessPolicyRule `field:"required" json:"rules" yaml:"rules"` } + diff --git a/pods/imports/k8s/SuccessPolicyRule.go b/pods/imports/k8s/SuccessPolicyRule.go index f504e897b..780acc77e 100644 --- a/pods/imports/k8s/SuccessPolicyRule.go +++ b/pods/imports/k8s/SuccessPolicyRule.go @@ -1,5 +1,6 @@ package k8s + // SuccessPolicyRule describes rule for declaring a Job as succeeded. // // Each rule must have at least one of the "succeededIndexes" or "succeededCount" specified. @@ -13,3 +14,4 @@ type SuccessPolicyRule struct { // The list of indexes must be within 0 to ".spec.completions-1" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as "1,3-5,7". When this field is null, this field doesn't default to any value and is never evaluated at any time. SucceededIndexes *string `field:"optional" json:"succeededIndexes" yaml:"succeededIndexes"` } + diff --git a/pods/imports/k8s/Sysctl.go b/pods/imports/k8s/Sysctl.go index d30ba56c4..57f2c0ea4 100644 --- a/pods/imports/k8s/Sysctl.go +++ b/pods/imports/k8s/Sysctl.go @@ -1,5 +1,6 @@ package k8s + // Sysctl defines a kernel parameter to be set. type Sysctl struct { // Name of a property to set. @@ -7,3 +8,4 @@ type Sysctl struct { // Value of a property to set. Value *string `field:"required" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/Taint.go b/pods/imports/k8s/Taint.go index 5cbe27aaa..33ee405bc 100644 --- a/pods/imports/k8s/Taint.go +++ b/pods/imports/k8s/Taint.go @@ -21,3 +21,4 @@ type Taint struct { // The taint value corresponding to the taint key. Value *string `field:"optional" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/TcpSocketAction.go b/pods/imports/k8s/TcpSocketAction.go index eba05f00b..a919b1e80 100644 --- a/pods/imports/k8s/TcpSocketAction.go +++ b/pods/imports/k8s/TcpSocketAction.go @@ -1,5 +1,6 @@ package k8s + // TCPSocketAction describes an action based on opening a socket. type TcpSocketAction struct { // Number or name of the port to access on the container. @@ -9,3 +10,4 @@ type TcpSocketAction struct { // Optional: Host name to connect to, defaults to the pod IP. Host *string `field:"optional" json:"host" yaml:"host"` } + diff --git a/pods/imports/k8s/TokenRequest.go b/pods/imports/k8s/TokenRequest.go index 62fad3c08..2bd13c243 100644 --- a/pods/imports/k8s/TokenRequest.go +++ b/pods/imports/k8s/TokenRequest.go @@ -1,5 +1,6 @@ package k8s + // TokenRequest contains parameters of a service account token. type TokenRequest struct { // audience is the intended audience of the token in "TokenRequestSpec". @@ -11,3 +12,4 @@ type TokenRequest struct { // It has the same default value of "ExpirationSeconds" in "TokenRequestSpec". ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` } + diff --git a/pods/imports/k8s/TokenRequestSpec.go b/pods/imports/k8s/TokenRequestSpec.go index 52d89dcbe..adccd66d6 100644 --- a/pods/imports/k8s/TokenRequestSpec.go +++ b/pods/imports/k8s/TokenRequestSpec.go @@ -1,5 +1,6 @@ package k8s + // TokenRequestSpec contains client provided parameters of a token request. type TokenRequestSpec struct { // Audiences are the intendend audiences of the token. @@ -15,3 +16,4 @@ type TokenRequestSpec struct { // The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response. ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` } + diff --git a/pods/imports/k8s/TokenReviewSpec.go b/pods/imports/k8s/TokenReviewSpec.go index 71e9c9582..ddd1918e1 100644 --- a/pods/imports/k8s/TokenReviewSpec.go +++ b/pods/imports/k8s/TokenReviewSpec.go @@ -1,5 +1,6 @@ package k8s + // TokenReviewSpec is a description of the token authentication request. type TokenReviewSpec struct { // Audiences is a list of the identifiers that the resource server presented with the token identifies as. @@ -9,3 +10,4 @@ type TokenReviewSpec struct { // Token is the opaque bearer token. Token *string `field:"optional" json:"token" yaml:"token"` } + diff --git a/pods/imports/k8s/Toleration.go b/pods/imports/k8s/Toleration.go index d739a04c8..51013bbff 100644 --- a/pods/imports/k8s/Toleration.go +++ b/pods/imports/k8s/Toleration.go @@ -1,5 +1,6 @@ package k8s + // The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . type Toleration struct { // Effect indicates the taint effect to match. @@ -25,3 +26,4 @@ type Toleration struct { // If the operator is Exists, the value should be empty, otherwise just a regular string. Value *string `field:"optional" json:"value" yaml:"value"` } + diff --git a/pods/imports/k8s/TopologySelectorLabelRequirement.go b/pods/imports/k8s/TopologySelectorLabelRequirement.go index cdac8107a..a6bfc61df 100644 --- a/pods/imports/k8s/TopologySelectorLabelRequirement.go +++ b/pods/imports/k8s/TopologySelectorLabelRequirement.go @@ -1,5 +1,6 @@ package k8s + // A topology selector requirement is a selector that matches given label. // // This is an alpha feature and may change in the future. @@ -11,3 +12,4 @@ type TopologySelectorLabelRequirement struct { // One value must match the label to be selected. Each entry in Values is ORed. Values *[]*string `field:"required" json:"values" yaml:"values"` } + diff --git a/pods/imports/k8s/TopologySelectorTerm.go b/pods/imports/k8s/TopologySelectorTerm.go index e95444994..91985c462 100644 --- a/pods/imports/k8s/TopologySelectorTerm.go +++ b/pods/imports/k8s/TopologySelectorTerm.go @@ -1,5 +1,6 @@ package k8s + // A topology selector term represents the result of label queries. // // A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future. @@ -7,3 +8,4 @@ type TopologySelectorTerm struct { // A list of topology selector requirements by labels. MatchLabelExpressions *[]*TopologySelectorLabelRequirement `field:"optional" json:"matchLabelExpressions" yaml:"matchLabelExpressions"` } + diff --git a/pods/imports/k8s/TopologySpreadConstraint.go b/pods/imports/k8s/TopologySpreadConstraint.go index 402cc108c..067de52ac 100644 --- a/pods/imports/k8s/TopologySpreadConstraint.go +++ b/pods/imports/k8s/TopologySpreadConstraint.go @@ -1,5 +1,6 @@ package k8s + // TopologySpreadConstraint specifies how to spread matching pods among the given topology. type TopologySpreadConstraint struct { // MaxSkew describes the degree to which pods may be unevenly distributed. @@ -46,3 +47,4 @@ type TopologySpreadConstraint struct { // If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. NodeTaintsPolicy *string `field:"optional" json:"nodeTaintsPolicy" yaml:"nodeTaintsPolicy"` } + diff --git a/pods/imports/k8s/TypedLocalObjectReference.go b/pods/imports/k8s/TypedLocalObjectReference.go index a41c0dfa8..70ec16b25 100644 --- a/pods/imports/k8s/TypedLocalObjectReference.go +++ b/pods/imports/k8s/TypedLocalObjectReference.go @@ -1,5 +1,6 @@ package k8s + // TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace. type TypedLocalObjectReference struct { // Kind is the type of resource being referenced. @@ -11,3 +12,4 @@ type TypedLocalObjectReference struct { // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` } + diff --git a/pods/imports/k8s/TypedObjectReference.go b/pods/imports/k8s/TypedObjectReference.go index bb7761efe..034fa2e6a 100644 --- a/pods/imports/k8s/TypedObjectReference.go +++ b/pods/imports/k8s/TypedObjectReference.go @@ -1,6 +1,6 @@ package k8s -// TypedObjectReference contains enough information to let you locate the typed referenced object. + type TypedObjectReference struct { // Kind is the type of resource being referenced. Kind *string `field:"required" json:"kind" yaml:"kind"` @@ -13,3 +13,4 @@ type TypedObjectReference struct { // Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` } + diff --git a/pods/imports/k8s/UserSubjectV1Beta3.go b/pods/imports/k8s/UserSubjectV1Beta3.go new file mode 100644 index 000000000..dc2efe960 --- /dev/null +++ b/pods/imports/k8s/UserSubjectV1Beta3.go @@ -0,0 +1,11 @@ +package k8s + + +// UserSubject holds detailed information for user-kind subject. +type UserSubjectV1Beta3 struct { + // `name` is the username that matches, or "*" to match all usernames. + // + // Required. + Name *string `field:"required" json:"name" yaml:"name"` +} + diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go index e1ce6f2bd..0d22e39d5 100644 --- a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go +++ b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. type ValidatingAdmissionPolicyBindingSpec struct { // MatchResources declares what resources match this binding and will be validated by it. @@ -28,7 +29,7 @@ type ValidatingAdmissionPolicyBindingSpec struct { // // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. // - // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]"` + // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` // // Clients should expect to handle additional values by ignoring any values not recognized. // @@ -37,3 +38,4 @@ type ValidatingAdmissionPolicyBindingSpec struct { // Required. ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` } + diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go new file mode 100644 index 000000000..d660e04d2 --- /dev/null +++ b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go @@ -0,0 +1,41 @@ +package k8s + + +// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. +type ValidatingAdmissionPolicyBindingSpecV1Alpha1 struct { + // MatchResources declares what resources match this binding and will be validated by it. + // + // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. + MatchResources *MatchResourcesV1Alpha1 `field:"optional" json:"matchResources" yaml:"matchResources"` + // paramRef specifies the parameter resource used to configure the admission control policy. + // + // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. + ParamRef *ParamRefV1Alpha1 `field:"optional" json:"paramRef" yaml:"paramRef"` + // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. + // + // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. + PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` + // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. + // + // If a validation evaluates to false it is always enforced according to these actions. + // + // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. + // + // validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. + // + // The supported actions values are: + // + // "Deny" specifies that a validation failure results in a denied request. + // + // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. + // + // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` + // + // Clients should expect to handle additional values by ignoring any values not recognized. + // + // "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. + // + // Required. + ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` +} + diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go index 4c3c23774..d81d0bfc5 100644 --- a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go +++ b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. type ValidatingAdmissionPolicyBindingSpecV1Beta1 struct { // MatchResources declares what resources match this binding and will be validated by it. @@ -28,7 +29,7 @@ type ValidatingAdmissionPolicyBindingSpecV1Beta1 struct { // // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. // - // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]"` + // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` // // Clients should expect to handle additional values by ignoring any values not recognized. // @@ -37,3 +38,4 @@ type ValidatingAdmissionPolicyBindingSpecV1Beta1 struct { // Required. ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` } + diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpec.go b/pods/imports/k8s/ValidatingAdmissionPolicySpec.go index c862b67af..df5236660 100644 --- a/pods/imports/k8s/ValidatingAdmissionPolicySpec.go +++ b/pods/imports/k8s/ValidatingAdmissionPolicySpec.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. type ValidatingAdmissionPolicySpec struct { // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. @@ -52,3 +53,4 @@ type ValidatingAdmissionPolicySpec struct { // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. Variables *[]*Variable `field:"optional" json:"variables" yaml:"variables"` } + diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go new file mode 100644 index 000000000..9a2a8b152 --- /dev/null +++ b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go @@ -0,0 +1,56 @@ +package k8s + + +// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. +type ValidatingAdmissionPolicySpecV1Alpha1 struct { + // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. + // + // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. + AuditAnnotations *[]*AuditAnnotationV1Alpha1 `field:"optional" json:"auditAnnotations" yaml:"auditAnnotations"` + // failurePolicy defines how to handle failures for the admission policy. + // + // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. + // + // A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. + // + // failurePolicy does not define how validations that evaluate to false are handled. + // + // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. + // + // Allowed values are Ignore or Fail. Defaults to Fail. + // Default: Fail. + // + FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` + // MatchConditions is a list of conditions that must be met for a request to be validated. + // + // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + // + // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. + // + // The exact matching logic is (in order): + // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. + // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. + // 3. If any matchCondition evaluates to an error (but none are FALSE): + // - If failurePolicy=Fail, reject the request + // - If failurePolicy=Ignore, the policy is skipped. + MatchConditions *[]*MatchConditionV1Alpha1 `field:"optional" json:"matchConditions" yaml:"matchConditions"` + // MatchConstraints specifies what resources this policy is designed to validate. + // + // The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. + MatchConstraints *MatchResourcesV1Alpha1 `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` + // ParamKind specifies the kind of resources used to parameterize this policy. + // + // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. + ParamKind *ParamKindV1Alpha1 `field:"optional" json:"paramKind" yaml:"paramKind"` + // Validations contain CEL expressions which is used to apply the validation. + // + // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. + Validations *[]*ValidationV1Alpha1 `field:"optional" json:"validations" yaml:"validations"` + // Variables contain definitions of variables that can be used in composition of other expressions. + // + // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. + // + // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. + Variables *[]*VariableV1Alpha1 `field:"optional" json:"variables" yaml:"variables"` +} + diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go index 94d89e42a..5526652b4 100644 --- a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go +++ b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. type ValidatingAdmissionPolicySpecV1Beta1 struct { // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. @@ -52,3 +53,4 @@ type ValidatingAdmissionPolicySpecV1Beta1 struct { // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. Variables *[]*VariableV1Beta1 `field:"optional" json:"variables" yaml:"variables"` } + diff --git a/pods/imports/k8s/ValidatingWebhook.go b/pods/imports/k8s/ValidatingWebhook.go index d195c9d00..0d3717dd7 100644 --- a/pods/imports/k8s/ValidatingWebhook.go +++ b/pods/imports/k8s/ValidatingWebhook.go @@ -1,5 +1,6 @@ package k8s + // ValidatingWebhook describes an admission webhook and the resources and operations it applies to. type ValidatingWebhook struct { // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. @@ -98,3 +99,4 @@ type ValidatingWebhook struct { // TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` } + diff --git a/pods/imports/k8s/Validation.go b/pods/imports/k8s/Validation.go index 926011bb5..ee4f7b903 100644 --- a/pods/imports/k8s/Validation.go +++ b/pods/imports/k8s/Validation.go @@ -1,5 +1,6 @@ package k8s + // Validation specifies the CEL expression which is used to apply the validation. type Validation struct { // Expression represents the expression which will be evaluated by CEL. @@ -44,3 +45,4 @@ type Validation struct { // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. Reason *string `field:"optional" json:"reason" yaml:"reason"` } + diff --git a/pods/imports/k8s/ValidationRule.go b/pods/imports/k8s/ValidationRule.go index 897ea18a9..83393bef4 100644 --- a/pods/imports/k8s/ValidationRule.go +++ b/pods/imports/k8s/ValidationRule.go @@ -1,5 +1,6 @@ package k8s + // ValidationRule describes a validation rule written in the CEL expression language. type ValidationRule struct { // Rule represents the expression which will be evaluated by CEL. @@ -63,3 +64,4 @@ type ValidationRule struct { // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". If not set, default to use "FieldValueInvalid". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. Reason *string `field:"optional" json:"reason" yaml:"reason"` } + diff --git a/pods/imports/k8s/ValidationV1Alpha1.go b/pods/imports/k8s/ValidationV1Alpha1.go new file mode 100644 index 000000000..69ab9fa94 --- /dev/null +++ b/pods/imports/k8s/ValidationV1Alpha1.go @@ -0,0 +1,48 @@ +package k8s + + +// Validation specifies the CEL expression which is used to apply the validation. +type ValidationV1Alpha1 struct { + // Expression represents the expression which will be evaluated by CEL. + // + // ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: + // + // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + // For example, a variable named 'foo' can be accessed as 'variables.foo'. + // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + // request resource. + // + // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. + // + // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: + // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", + // "import", "let", "loop", "package", "namespace", "return". + // Examples: + // - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} + // - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} + // - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} + // + // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: + // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and + // non-intersecting elements in `Y` are appended, retaining their partial order. + // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values + // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with + // non-intersecting keys are appended, retaining their partial order. + // Required. + Expression *string `field:"required" json:"expression" yaml:"expression"` + // Message represents the message displayed when validation fails. + // + // The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". + Message *string `field:"optional" json:"message" yaml:"message"` + // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. + // + // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" + MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` + // Reason represents a machine-readable description of why this validation failed. + // + // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. + Reason *string `field:"optional" json:"reason" yaml:"reason"` +} + diff --git a/pods/imports/k8s/ValidationV1Beta1.go b/pods/imports/k8s/ValidationV1Beta1.go index e333b1493..c0856bcbc 100644 --- a/pods/imports/k8s/ValidationV1Beta1.go +++ b/pods/imports/k8s/ValidationV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // Validation specifies the CEL expression which is used to apply the validation. type ValidationV1Beta1 struct { // Expression represents the expression which will be evaluated by CEL. @@ -44,3 +45,4 @@ type ValidationV1Beta1 struct { // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. Reason *string `field:"optional" json:"reason" yaml:"reason"` } + diff --git a/pods/imports/k8s/Variable.go b/pods/imports/k8s/Variable.go index e4e6c9f00..d9a80ef99 100644 --- a/pods/imports/k8s/Variable.go +++ b/pods/imports/k8s/Variable.go @@ -1,5 +1,6 @@ package k8s + // Variable is the definition of a variable that is used for composition. // // A variable is defined as a named expression. @@ -13,3 +14,4 @@ type Variable struct { // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/VariableV1Alpha1.go b/pods/imports/k8s/VariableV1Alpha1.go index 780fc8713..dde75daf2 100644 --- a/pods/imports/k8s/VariableV1Alpha1.go +++ b/pods/imports/k8s/VariableV1Alpha1.go @@ -1,5 +1,6 @@ package k8s + // Variable is the definition of a variable that is used for composition. type VariableV1Alpha1 struct { // Expression is the expression that will be evaluated as the value of the variable. @@ -11,3 +12,4 @@ type VariableV1Alpha1 struct { // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/VariableV1Beta1.go b/pods/imports/k8s/VariableV1Beta1.go index aab22c5cf..7683b90df 100644 --- a/pods/imports/k8s/VariableV1Beta1.go +++ b/pods/imports/k8s/VariableV1Beta1.go @@ -1,5 +1,6 @@ package k8s + // Variable is the definition of a variable that is used for composition. // // A variable is defined as a named expression. @@ -13,3 +14,4 @@ type VariableV1Beta1 struct { // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/Volume.go b/pods/imports/k8s/Volume.go index 6e1280c17..9ec86ed04 100644 --- a/pods/imports/k8s/Volume.go +++ b/pods/imports/k8s/Volume.go @@ -1,5 +1,6 @@ package k8s + // Volume represents a named volume in a pod that may be accessed by any container in the pod. type Volume struct { // name of the volume. @@ -8,27 +9,21 @@ type Volume struct { Name *string `field:"required" json:"name" yaml:"name"` // awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. // - // Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore AwsElasticBlockStore *AwsElasticBlockStoreVolumeSource `field:"optional" json:"awsElasticBlockStore" yaml:"awsElasticBlockStore"` // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - // - // Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver. AzureDisk *AzureDiskVolumeSource `field:"optional" json:"azureDisk" yaml:"azureDisk"` // azureFile represents an Azure File Service mount on the host and bind mount to the pod. - // - // Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type are redirected to the file.csi.azure.com CSI driver. AzureFile *AzureFileVolumeSource `field:"optional" json:"azureFile" yaml:"azureFile"` // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. - // - // Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported. Cephfs *CephFsVolumeSource `field:"optional" json:"cephfs" yaml:"cephfs"` // cinder represents a cinder volume attached and mounted on kubelets host machine. // - // Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + // More info: https://examples.k8s.io/mysql-cinder-pd/README.md Cinder *CinderVolumeSource `field:"optional" json:"cinder" yaml:"cinder"` // configMap represents a configMap that should populate this volume. ConfigMap *ConfigMapVolumeSource `field:"optional" json:"configMap" yaml:"configMap"` - // csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. + // csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). Csi *CsiVolumeSource `field:"optional" json:"csi" yaml:"csi"` // downwardAPI represents downward API about the pod that should populate this volume. DownwardApi *DownwardApiVolumeSource `field:"optional" json:"downwardApi" yaml:"downwardApi"` @@ -56,24 +51,22 @@ type Volume struct { // fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. Fc *FcVolumeSource `field:"optional" json:"fc" yaml:"fc"` // flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - // - // Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. FlexVolume *FlexVolumeSource `field:"optional" json:"flexVolume" yaml:"flexVolume"` // flocker represents a Flocker volume attached to a kubelet's host machine. // - // This depends on the Flocker control service being running. Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported. + // This depends on the Flocker control service being running. Flocker *FlockerVolumeSource `field:"optional" json:"flocker" yaml:"flocker"` // gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. // - // Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk GcePersistentDisk *GcePersistentDiskVolumeSource `field:"optional" json:"gcePersistentDisk" yaml:"gcePersistentDisk"` // gitRepo represents a git repository at a particular revision. // - // Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + // DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. GitRepo *GitRepoVolumeSource `field:"optional" json:"gitRepo" yaml:"gitRepo"` // glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. // - // Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md + // More info: https://examples.k8s.io/volumes/glusterfs/README.md Glusterfs *GlusterfsVolumeSource `field:"optional" json:"glusterfs" yaml:"glusterfs"` // hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. // @@ -98,37 +91,26 @@ type Volume struct { // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `field:"optional" json:"persistentVolumeClaim" yaml:"persistentVolumeClaim"` // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. - // - // Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported. PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `field:"optional" json:"photonPersistentDisk" yaml:"photonPersistentDisk"` // portworxVolume represents a portworx volume attached and mounted on kubelets host machine. - // - // Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate is on. PortworxVolume *PortworxVolumeSource `field:"optional" json:"portworxVolume" yaml:"portworxVolume"` // projected items for all in one resources secrets, configmaps, and downward API. Projected *ProjectedVolumeSource `field:"optional" json:"projected" yaml:"projected"` // quobyte represents a Quobyte mount on the host that shares a pod's lifetime. - // - // Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported. Quobyte *QuobyteVolumeSource `field:"optional" json:"quobyte" yaml:"quobyte"` // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. // - // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md + // More info: https://examples.k8s.io/volumes/rbd/README.md Rbd *RbdVolumeSource `field:"optional" json:"rbd" yaml:"rbd"` // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - // - // Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported. ScaleIo *ScaleIoVolumeSource `field:"optional" json:"scaleIo" yaml:"scaleIo"` // secret represents a secret that should populate this volume. // // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret Secret *SecretVolumeSource `field:"optional" json:"secret" yaml:"secret"` // storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. - // - // Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported. Storageos *StorageOsVolumeSource `field:"optional" json:"storageos" yaml:"storageos"` // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. - // - // Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type are redirected to the csi.vsphere.vmware.com CSI driver. VsphereVolume *VsphereVirtualDiskVolumeSource `field:"optional" json:"vsphereVolume" yaml:"vsphereVolume"` } + diff --git a/pods/imports/k8s/VolumeAttachmentSource.go b/pods/imports/k8s/VolumeAttachmentSource.go index ecfda8fc4..7903af0a1 100644 --- a/pods/imports/k8s/VolumeAttachmentSource.go +++ b/pods/imports/k8s/VolumeAttachmentSource.go @@ -1,8 +1,9 @@ package k8s + // VolumeAttachmentSource represents a volume that should be attached. // -// Right now only PersistentVolumes can be attached via external attacher, in the future we may allow also inline volumes in pods. Exactly one member can be set. +// Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set. type VolumeAttachmentSource struct { // inlineVolumeSpec contains all the information necessary to attach a persistent volume defined by a pod's inline VolumeSource. // @@ -11,3 +12,4 @@ type VolumeAttachmentSource struct { // persistentVolumeName represents the name of the persistent volume to attach. PersistentVolumeName *string `field:"optional" json:"persistentVolumeName" yaml:"persistentVolumeName"` } + diff --git a/pods/imports/k8s/VolumeAttachmentSpec.go b/pods/imports/k8s/VolumeAttachmentSpec.go index b2c550ed0..2b9595186 100644 --- a/pods/imports/k8s/VolumeAttachmentSpec.go +++ b/pods/imports/k8s/VolumeAttachmentSpec.go @@ -1,5 +1,6 @@ package k8s + // VolumeAttachmentSpec is the specification of a VolumeAttachment request. type VolumeAttachmentSpec struct { // attacher indicates the name of the volume driver that MUST handle this request. @@ -11,3 +12,4 @@ type VolumeAttachmentSpec struct { // source represents the volume that should be attached. Source *VolumeAttachmentSource `field:"required" json:"source" yaml:"source"` } + diff --git a/pods/imports/k8s/VolumeDevice.go b/pods/imports/k8s/VolumeDevice.go index 27312a1aa..ee0b0e331 100644 --- a/pods/imports/k8s/VolumeDevice.go +++ b/pods/imports/k8s/VolumeDevice.go @@ -1,5 +1,6 @@ package k8s + // volumeDevice describes a mapping of a raw block device within a container. type VolumeDevice struct { // devicePath is the path inside of the container that the device will be mapped to. @@ -7,3 +8,4 @@ type VolumeDevice struct { // name must match the name of a persistentVolumeClaim in the pod. Name *string `field:"required" json:"name" yaml:"name"` } + diff --git a/pods/imports/k8s/VolumeMount.go b/pods/imports/k8s/VolumeMount.go index a4a000f54..f36befe5e 100644 --- a/pods/imports/k8s/VolumeMount.go +++ b/pods/imports/k8s/VolumeMount.go @@ -1,5 +1,6 @@ package k8s + // VolumeMount describes a mounting of a Volume within a container. type VolumeMount struct { // Path within the container at which the volume should be mounted. @@ -41,3 +42,4 @@ type VolumeMount struct { // SubPathExpr *string `field:"optional" json:"subPathExpr" yaml:"subPathExpr"` } + diff --git a/pods/imports/k8s/VolumeNodeAffinity.go b/pods/imports/k8s/VolumeNodeAffinity.go index 552d00af5..268fce344 100644 --- a/pods/imports/k8s/VolumeNodeAffinity.go +++ b/pods/imports/k8s/VolumeNodeAffinity.go @@ -1,7 +1,9 @@ package k8s + // VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. type VolumeNodeAffinity struct { // required specifies hard node constraints that must be met. Required *NodeSelector `field:"optional" json:"required" yaml:"required"` } + diff --git a/pods/imports/k8s/VolumeNodeResources.go b/pods/imports/k8s/VolumeNodeResources.go index 9ab61629b..47aee15f9 100644 --- a/pods/imports/k8s/VolumeNodeResources.go +++ b/pods/imports/k8s/VolumeNodeResources.go @@ -1,5 +1,6 @@ package k8s + // VolumeNodeResources is a set of resource limits for scheduling of volumes. type VolumeNodeResources struct { // count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. @@ -7,3 +8,4 @@ type VolumeNodeResources struct { // A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded. Count *float64 `field:"optional" json:"count" yaml:"count"` } + diff --git a/pods/imports/k8s/VolumeProjection.go b/pods/imports/k8s/VolumeProjection.go index ca3ad2796..c8f30c4d1 100644 --- a/pods/imports/k8s/VolumeProjection.go +++ b/pods/imports/k8s/VolumeProjection.go @@ -1,5 +1,6 @@ package k8s + // Projection that may be projected along with other supported volume types. // // Exactly one of these fields must be set. @@ -21,3 +22,4 @@ type VolumeProjection struct { // serviceAccountToken is information about the serviceAccountToken data to project. ServiceAccountToken *ServiceAccountTokenProjection `field:"optional" json:"serviceAccountToken" yaml:"serviceAccountToken"` } + diff --git a/pods/imports/k8s/VolumeResourceRequirements.go b/pods/imports/k8s/VolumeResourceRequirements.go index ec6e74934..1260cae82 100644 --- a/pods/imports/k8s/VolumeResourceRequirements.go +++ b/pods/imports/k8s/VolumeResourceRequirements.go @@ -1,5 +1,6 @@ package k8s + // VolumeResourceRequirements describes the storage resource requirements for a volume. type VolumeResourceRequirements struct { // Limits describes the maximum amount of compute resources allowed. @@ -11,3 +12,4 @@ type VolumeResourceRequirements struct { // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ Requests *map[string]Quantity `field:"optional" json:"requests" yaml:"requests"` } + diff --git a/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go b/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go index 43f2ca2f3..4395d6c66 100644 --- a/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go +++ b/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go @@ -1,5 +1,6 @@ package k8s + // Represents a vSphere volume resource. type VsphereVirtualDiskVolumeSource struct { // volumePath is the path that identifies vSphere volume vmdk. @@ -13,3 +14,4 @@ type VsphereVirtualDiskVolumeSource struct { // storagePolicyName is the storage Policy Based Management (SPBM) profile name. StoragePolicyName *string `field:"optional" json:"storagePolicyName" yaml:"storagePolicyName"` } + diff --git a/pods/imports/k8s/WebhookClientConfig.go b/pods/imports/k8s/WebhookClientConfig.go index ecc1f5843..b5df5bfe3 100644 --- a/pods/imports/k8s/WebhookClientConfig.go +++ b/pods/imports/k8s/WebhookClientConfig.go @@ -1,5 +1,6 @@ package k8s + // WebhookClientConfig contains the information to make a TLS connection with the webhook. type WebhookClientConfig struct { // `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. @@ -25,3 +26,4 @@ type WebhookClientConfig struct { // Attempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either. Url *string `field:"optional" json:"url" yaml:"url"` } + diff --git a/pods/imports/k8s/WebhookConversion.go b/pods/imports/k8s/WebhookConversion.go index 9c40b880b..e9e5dc165 100644 --- a/pods/imports/k8s/WebhookConversion.go +++ b/pods/imports/k8s/WebhookConversion.go @@ -1,5 +1,6 @@ package k8s + // WebhookConversion describes how to call a conversion webhook. type WebhookConversion struct { // conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. @@ -9,3 +10,4 @@ type WebhookConversion struct { // clientConfig is the instructions for how to call the webhook if strategy is `Webhook`. ClientConfig *WebhookClientConfig `field:"optional" json:"clientConfig" yaml:"clientConfig"` } + diff --git a/pods/imports/k8s/WeightedPodAffinityTerm.go b/pods/imports/k8s/WeightedPodAffinityTerm.go index 21cb74a0b..2fc8427f6 100644 --- a/pods/imports/k8s/WeightedPodAffinityTerm.go +++ b/pods/imports/k8s/WeightedPodAffinityTerm.go @@ -1,5 +1,6 @@ package k8s + // The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s). type WeightedPodAffinityTerm struct { // Required. @@ -9,3 +10,4 @@ type WeightedPodAffinityTerm struct { // weight associated with matching the corresponding podAffinityTerm, in the range 1-100. Weight *float64 `field:"required" json:"weight" yaml:"weight"` } + diff --git a/pods/imports/k8s/WindowsSecurityContextOptions.go b/pods/imports/k8s/WindowsSecurityContextOptions.go index eafe6fc7c..51011f6f8 100644 --- a/pods/imports/k8s/WindowsSecurityContextOptions.go +++ b/pods/imports/k8s/WindowsSecurityContextOptions.go @@ -1,5 +1,6 @@ package k8s + // WindowsSecurityContextOptions contain Windows-specific options and credentials. type WindowsSecurityContextOptions struct { // GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. @@ -17,3 +18,4 @@ type WindowsSecurityContextOptions struct { // RunAsUserName *string `field:"optional" json:"runAsUserName" yaml:"runAsUserName"` } + diff --git a/pods/imports/k8s/internal/types.go b/pods/imports/k8s/internal/types.go index 4b6b993a2..de3a04f73 100644 --- a/pods/imports/k8s/internal/types.go +++ b/pods/imports/k8s/internal/types.go @@ -1,7 +1,5 @@ package internal - import ( "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" ) - type Type__cdk8sApiObject = cdk8s.ApiObject diff --git a/pods/imports/k8s/jsii/jsii.go b/pods/imports/k8s/jsii/jsii.go index 7d3b07906..61d738bed 100644 --- a/pods/imports/k8s/jsii/jsii.go +++ b/pods/imports/k8s/jsii/jsii.go @@ -5,12 +5,12 @@ package jsii import ( - _ "embed" + _ "embed" - _jsii_ "github.com/aws/jsii-runtime-go/runtime" + _jsii_ "github.com/aws/jsii-runtime-go/runtime" constructs "github.com/aws/constructs-go/constructs/v10/jsii" - cdk8s "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2/jsii" + cdk8s "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2/jsii" ) //go:embed k8s-0.0.0.tgz diff --git a/pods/imports/k8s/jsii/k8s-0.0.0.tgz b/pods/imports/k8s/jsii/k8s-0.0.0.tgz index 232dc0fede578979531770316c7391fa9f16e346..aa6e0a49feb964138e780631989eba3b1a689231 100644 GIT binary patch literal 746686 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

_y894{(u*;EdK_FZ@exf&x;lwc>7rCJ&Gl?9 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 OKmQLT0`|NB%3c5k{=dNh literal 763629 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�r-~ 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

MXFG9cP`AL z{ovB77zAq>g6xmL=Fv?S%2cwST9B^D$R*P$Hhy(rQcHZ3~iuwYa z$Okt9r43!*<>V=N)q>>ilw}&3t8T+bsSc4z56^>j=cn%bHk<<5txvyreW)TqJxf{Y zT!{O^IBaJczv&kKQR92tRGYrv?)Ajn;I4dk@3Qi*NF%wKo-$9JJLVVtkwpy6+v1jI zvwN4V;&&Pg+AgjM9N+%AOe<#zj@n95F|1$wC)a|MJ-GU;6oJAY0GFxF32~gexEHbl z-2q#(n5`NBg=gbWG+Xz_g{{T%Hl@*<0-k``S}&4~=H>A>P`TWnjJy02<+KDK@U*~V zB<*00{x%9jS_UHpw`?`1P@au$HBxo z#mA(s*Iup1&u%YOfpzCVv~Uin@Wi2iK1y)zDFUJds!T2?E&gVRYDFLfCBV46-+t;3 zvupJWUmk()mzIka$k#uyjRIBOjhERUn12M0Ggnal5A#bBT%${S_}?hEi&F5jbh%d; z+ms*C#DJwb#or^lzjojK+

DI0B-?{qZ=_K_P;^hslKWGiU=xo0Goc-;*TPXBT z^$Qv5f7CT4ARVf;4uR zs@pXAJ(Z6#Q!H=?LUtDIG8Y0?_Nlc zNklb9%s6)wtBii*7NEJ;4S^kyKv*)$p8TKj`XMY+{00wa=ZEP&xAlrx!kwN6)UkLs z^WPIso&<+cXYhaG4lbB4Z-R%i$=g}zFVS8l$C>XK!H9SswRlM6$mglvroCp>MZHJwvw0!%4C|3U}#VaaJKn^MmJ697t(==X>pM0N$gcuNu!8hbFp%`KE2z zT4k?zx^B+Vn5#DV+d`T|m;Ncb@%oBS&}52G{XUNf9Ox_RLSPfJ z3Q08@oj9Z_23XFg*xlYLrP=SIJg*@gj1-&l-VlO4@f>~c|7y|iq;@!tVmEDfz=9Iv z7CD21%Wq7P?=a0*kW!^&6-wIE8sa5y=m_B%-TdJ<-MHn#_$Elcy5c%o!~4)~ZS^!o zN`3lqouW&eCC3iuF``Ep4T$Ph{!kso`HwADPO&sgkNPYVBaAZ6Jt|4Ehyr=d9IDq^ z3=*S_vGJ-C-~I$l*vBt#(kQs!BQPf)ge?vJt_KO6uUW_;HEAi>L<%wO|CzFA%0`t5APRGS6Wx_DjXj^{JCgad*RHa zg{?^qo^ZXQl+){M=&A=9-^Kl(@}*|+{u`d)yXy9w1m9+4Pu4*FbX#L^)Px{waQbPc z#Jp^JJtgwKr?fSd)CXhJTQ>h!)SuO=nLu3w4$It18q) z{=?@McbGnG^Xhm|1c}HsKUba#Y_tMb6f~sCv492ERE>vQn_ibS1i(2 z2LcBt>H(}(@|0Vg^fz@sYk$8P z)7LeXn)D`~+i+E}6uqw;H*{QdcZCWn)zwUl6h6Dfg}Uu-t3TU_HjZyg?&-OGm`1)^ zr(B}cyn$T^bYt7&q`LlD3OXcb++O0%$`Ya<-t)+!i)91Yd0C4Z<;@QT3!~xPMxDP} ztld zRu7`N$Ziv&2E;&!*>7O?KoH5912a4it!7KS{eCnbGgqXm8;^l?h#|_w*g)xS{35~X zp#QReP#-tpCeq8^{Vfgj=m8n2n0lB3lAl=t-%0sJh`!g$$Q`495%Un-A&}&?`SYI4&jm(Jdo?Oz%QtJ%@OkC*D#2@H?E7MSp#w+i9fu+&H0r`J_r-W2V(faZR5`E6QC=muU20Cm(!8dOkY}mO82t$ z{rS4|y)@2cov{~DDqmJ0Gbg4;s*N2}v@L4tDF-hp?c&ZCUd~cqPaNB-|2WP(J&w>F z8GY%p`D$HYr80J0ph@|&fbf4?%)1O|y^2q6waKZTUkxn=zQHepT9F*a47bXmU+qet zx4pe_n=%umwMz3wLXuXYth^B)hT~o@+OdDN(*i2n%e$0r+sN*EU$pbUKx|)~vs)Mu z5JT!I6bEfJs4m(pLex6m?7Qlgdh0ZExZ~V-OQuVm#!Bd$i3y? zx2{(jlisyoE#Mdi!7kRcg}Hjr)bvL)Y?Tx-GMGPODh=7!lQ}MKqi4Vs9XrTBUX_Fq zjotVeZ>{ywy2`ViIq%4y>!eSspA66;y>zuI2g+~p{(%`*+l_N&@#LMvLouP@nWP^; z=g`1wpbv=^Gm&9!i)Kk-^Q(p$>Q!F8e-!T*;#-p|@@K9tEA|)I{W;=Zno0WI>D*@; z)8EF1`2}o)Tf-0jnYQjGTbKn=Mkq5X2o%daD_|4_ExFKKdkW0mbf9_-d##)oc4Afx z3qtI3T`9XJw2;F2T>3X6x>W3t=n|Om-zQ-FO1#l??K}QzI$Ko(v#X12Pag$KCCP~f z9-S+X%@D|(h)SD`pNG4j1blufX0!;}W}0rl?m}UC5mN$(oIU zRe_e0m-Q$9K!=SoIs~6|#EHD`W2hebzf~>yaiC@2Yi*zvQNO?~CwiNuR}yCc5(uCJ z*p38m7?q=pv_e{t8gb$`pOq~Y-yU+*R?_Ioh;=XE}NaB7?^L8z{P)96N94O`xM zv*cRmPFScqjdwc=gh)5K%k@3yK8WeMjx{>A)+!g1>?u)xq9qk=lW`K967CgGcG&|j zF%BvZ;hm7JY-q2P3k}ajMx)%b)dz9DdbrkixMij#0B>B9_zw^xJBjiQe<^`q*$+0( zo;w5O@;-*+r4u=lFrGDClQe6^l~axj6ZA7RnLGitBmM6$WZCU8Id(!{Yg(Vch|18e zr5hz#0pA!UnZAFPWkkYTB&*9oBbC+H>^4~9(}-3K=# z7JuYg0Yk#wEfn@dn9eHtDb8~j-a3~Z_4e8}Fu>yxr}hsI30p^+MOmVcF$u7__IpP8 z+gihck=C%OL+=)oNF%F7*UNyj>KS_!h;`GqOA`M+rCIk>k~_vrcQ22QFLuq?Z@^Dk z?=CMhetzEZem`?id&rE3n!LeT_FZA=FV5)HvR83m(;IcZ)|oSt^LVU z6IghbF{4BKD{JJG8Zq=N2r{#(V;|9z_1P$X3Wxcp`>)>kx-L2k5yQw=l@oSJxk!*h zA8gh6BC~Y=Qw82LmDNWl`!DONGSL#_mgb_634=gVbIK2^H%IULdwx%Dkf8VFu*iOG zPThVT&i1ZiV1T8Xa;gw{4u89uurT;@qB_xcyy;$^Y*mZsdi7k_c)CtJ#W&tg+mTdK zd#{pvLD_e2L8ZC)*kv)ga>?cMUW80m|DN;ye&|L zk9hl6pyMbn7uHa~z zd^G9B*d}o>E7fovS7i$#>4V6t>g4eYE}Lsi(7yWeyI5dj%O_CNf?_X-hsCZL00^-B z$AZM8GH1UWzP)-R>h=-Pn=N`2w?SKDrq(t#I?a~Tz;7VnBgSlVT*{pALY7!-cZhEb zE3Cm|cm)IBBD$|3rsK^5NWn^2@H|4kjP&UZ3Kajk^N zEL&&EmaN$nPx^z~w%qOh>#~p#u;}WNn8C?3)eMiz$ij1j(fq*snls>+UhG(P zj^ZOvVgZMj7;NPG#|)Ic>pdDRKECL2!`q6F_bWbnzSoN?oH-2M@Cu!%+@84UuA0IN zx7iVLVgD;k2AR8dscSXf{9lrE1oGiQJ zc1PNGmPjby;yQ?*MY?{|tdu|!fU@oI${<~-43NGdiH0v8T&8v(ZcFQu4)ySe4ls^V zbaJ;0rj3JGia(55-?P9s(H1s<3;tXQTR7~3hJqvk zc+u=prF-IR>nN;Sj(ewRC)DP6y`y2Y_xT=6WV_vNz_tJGPwS=6^jf{(MUB!9SDSk* zs!uHB2c&ZK)k&k~JksfHov;-=>03(|k(`G$TepKT-vFtRQQJZX;S8u}!KHqf#(c9Pizjc1p4{i~-GWjZ)RCj= z7}u0Tf8j~HIt5uph-FQ4Oa`oJ=Q19#zE$g{fA)>9{t88>!BElNyQANsrD;4O6@f2I zJJfHcu_+X@;&!_yKE&|iA9CX!9xdQr`dtgJff?VLHr@IxLj5z|w<)H^G9Bo0s+bVG zU?z;{`HL=Vors4$uV{{*RErm8I}bRP%FKHW2AXCmS$QHUxny91c>A(tX7P?ezx|P$k~Uy4rKYd?CbWNblkg7majGa6!s?0~ns4Z;a(HK^2wBu_QIn>hw9+qtHE$5Ns+-P*?q@5i1hSev#j>*tqaX|Q zh@04!(Jq0hVetO(C2`NCSj_K8yQ<48Xny#&1L?@ z?~nxnE8WNkIZ-IkSNhg z&WSeuqx-T(pYHYI$iA1Bk85-_8sU7x#)v)-?oCx`$=qUJxqxxOQ}ph_ax12?*~b=% zeXEY&mF7Rwgffg1o^!F27=BIqQzG3##Kjw+|%zryVC55z0YuTRdzJ+mz zea5b#jgXLT#b3WtM8olKLBAsp1;I-wHzE^^Of=$r12TZ z(^^VjLKLqnY>@P9B=9)@ect{DP7`6ZQ4zlZ+&sm8$I0iKMD0&%&PkNKD!Gm-es87w z`(x>#3V1=)T(x3lL8h2NJP*ml6Ju%V==E7<+&)y?;RqNak6t9P&sR7ihWFbUvHdt> zFOy*3Ln17Zy58Che|M_5K_ziRHR`Y<&a2cog2D)K^qjgrJN&%U%bYUtfU4WhJGPKV z9()9yDBT|_b5rB;tU2=I-o@I|>#*myc@OD|=n(Zg=4sSs*yEe$P~to`^6dhh;diJ< zS#SA?d$4@J?wL#E3kE*Mp68%5SAVeIch6+~xtXt?aDjfMz2O<-``{j5=Vya7Gfal_ zMr^Jie5XuIaIvmH{=lbRR9>J7?^62Q#Cy-03jlO0B`1Ifj-CU^=ve9Abh_6^3u$#N z@bQV~$%mhT7r%lW%BCm7>a+2)l)6gNwzc0~TAbWoYZY`?r&v4H*}IB&TW68B&f1}6 zNuKQ#lhbamOVv}StN-%dRR*1=dRYs+CKq3}=r@~=(`>vv#@NUKY`5)<^N->FjQUp( zXkHT11L}6rFNhDQRtzzZKH<0yXI8=mP8Ik-#cWf>Y(+lGC;wY`=Do5ZbK<2m@mAs8Q8uRQ zeTS^NR5B+kXl-TMpbpJeCXOoHOToET{&y=IRSTk%)G<^4v!s2nA!{g1->Ud%Mjx&B zEVJfD$T0R|*{rvJZ4E$Vb9;==T7+_?-8?u)i11gT`m_nZkVLbE63u)Tl2k zEQqra(TB6qc1VYoJevv6O6(&B{fRT928{OCH1~KvZ+yLh&WMY1M*Q}=Jlj|}pC9VKs0 z-6l_bHlEl~lpM|ABafg7(RLruyJlw$2cQifi49&-)Lg}_CDy)=IHPsRxzn+GE4}6_ zO5PXi2aq@`g&X3|C~eJEEDvSH4h7{{$L&MaT&48i%ie8Tze4QuPd@KDR%d6#6YCuO z58U@Uo@$>4<$}-*>80K<_WH!2c=p2jjAU?s%dkZgXd7%#;Ds5NXVf=@xb+oIy{0cUaYu>s$iWcL|}&y$KBdimw} z{aAu%LHPvI`2+&*E@M1il8#PFXM1#tq>dJ3Z8t}q+zqRN_T63j`sd(xCf2{>(rx#E z^;95MAAC-w>0@P^N6~NUn0@d$w^PZF;%x6AzE?UrA03@bU32gqDLox1Qzd;~LGmzz zZ@!^Dqin!>}v?Kk@Ho=sRlNVVF(KKOZKKY4f$o#jiQfcS^Q*g*BHRmlp1( zXx*o5+Lpj$*<#BAeam2K;qH%bx4PG-^kGJQm`5yFc$U(ME*?yRAv;;)xdS*aeQWo> zx@Z0qq}ACA&GmBk*n;=#HKWnpV=n=azm3Pq0B4Ai%mtmc#QH0|_xaR3EGD}x_mkin z(f>hqs?{@q`G>(Kp!#g>d`9-b`04g=yBn<5WS8RI5&r?L{kd8*z1`DL7s8r$D5KU^ zZv%ZoIc(hT)2*Q|3FmvxCk!iFe7m3?DAvsEF5IQTbLZJ?68P-EW{-?sF}A7`uP^x= zv}H4mJPZ*i0NF3oNi~W6|jl- z#>NEwT2wx}Yws(+KGs-o44_>&Q|y&79Uz~eY=J#~QU45gKRM^!Ba+#$U!2wciFX9_ zX36;j@Q-=3S)lI%eHwNR<6^(|+va)rE}i>x;ijdhM}~bCneAdOU*s?Wr~e}GfOFRh z3#7sV;$3CTFOQ~^6RI<_&sEYsW-?OCh$)_o&~l7 z`oMmpJ+t=b9{2_G$0%+B_@RftarN{h|8=*HvUL73qFgt`VNBQ2-@)E9f8pPLQ;(N{ z$?g3E$DM~1_P*zwM$-CxI6)qOy_M1X6{Hy>9i33T-p3;{ar;od&I5mNdl`GUA;!X7HgAu1 zM>oUw7+pyE-{bY0R6e|)F3a%2$IG3fZT^OEzI5)e=FbrSeDK+~OV-p1cU|KUc$h zG#>aJ9W|~Yb7m*+dl1eeTOOdu9}+Q+v6~jUN9svW?|8O)Y%;7OyjSHBq{|}^WM?k9 ze*!&pPTl7qoUfF>A%K@NV-PD(VCu;c=m>Y^%6XQXDHAK3xqTUvdoP?(8S~&|_fed0 z!6WYw`%Ed0i1;|p*AQ@?NA)wrVltJ75TK{CLOgfK^zSYq;J9TEo z%*ZEZV!d4rWX+q7`3ddxx_*p)fV2MAxH50)Ssm|tn{m2-Xs>7dWx~C^As^@)^95v| z<*O?l3&`yAn_vTp^DZ1K#IH%ss52#KFzf91SXm=g=PbR>0(=B!{GL>7BV~?cQhH3= zi!b&)=O;h!HeRO7QM=_@hq7)g7kX^vidLiQz?FI?RyaCqw3E$ z2I|*C!8xyyYc9^;)P#K)AoK9Mi&zZi(D+gPNYQ6=^7*XxS!DAG+0VI^$)mIRL(E!jI8?724^;Z7(H0X+1MJT;qYZ$`V$axokK;vIaSqly9@dC>&c1^yJj(&d zZxh$adt6hmOgJC&WxgRBpJb48epW84T+9yd!Ds-c#r^KdKD6(0NIolh>@(y(u3~F+ zMeKn-D=(cF=$jJtPi&5?m$pj7L+t%^wU%?;M4 zDRg=*V?M28?+bmeVb5=@x0XFW%khh3k1t5|&~(nIYP!4V+Lx5^hT8FaY)1K0l%5Wv zYB-dJOt4_QyEpKU!eoMRuAGc(Q?erG)c z-iv)gn&syM`1ep%J?*E1qW$3kXLa&<0=_fJm@nXc-daZ1`1q|%9c)HONZTI zM!&cmJ)KZqf$yAU@(X;jSIbeKhxV56-Cg4T5&`y>Z~t=saUY+T(Zfcu5MEEE(~sH5QeIA|eiP~XO+?dGN?&>K9i4pNiQuzNrRT?) z{pG{qWVCj2+B~x|oIJXr(~Hvew~h`N)&x8A9ObavXM#L~et@msXj<~v@r`2cA@ZqH z2l0uRiRuJE=dt&7*ZLLtcuee<8Ss4PS&RnkIU;y(3*cSmr{goNdxX2KdeTkMJBFY` z?lsI^w9mxWEAAfN=(9n4K<}9wkkfno8@*>!U$R*q=-)Hyq!V61wsBj+0RF~)opbhV zyPqb!^NsI;`}FMmO`EPCryQ3E>%OIRU|k2ufi1Hu_&NY{>xdUtD9Zp3P;JEs?!&|$ zoqr9UpFVEy&+Bjw`|Hc=-R))P zm)^TRzk7cD^8IboUCt(*U$aerHGAGZ&l-d0yUl2=_lCdpiDrT<{KB}9;k;va^Zf7E z&GYrgE!@Fk_3!@n^4~A`&Fb#*b$9pt@2}g-*I&0Uhz1r-d^8tHn>Aey8*kWTt zQ|G(dbGHr8T;3MkyVR#+VO>VAgZ^(vM%1g2+tFRI^9jt!bjh<~{ZE1SuI8Bc7ad#1 zPHxAHrn2T`20c?M4?l>{w1O~e2tO&jng*|$JLe2%Uqj-(ZZ7>uf@Sf^=W7O>cSkDD z6v6*#`i%6)&hxmBhk9NtF^=w;aqjwV+I&q**ED_aO`_A8ZEBxe$+;g9d#Zw8ip$Bs zToBE3rtR`|yvhrSqxWv=9Fc{GK4avuH($h&SuE$kFMp04e~O|PrS~)H{op%Io!6O= z)=pFRd(J#5<_?w%Y5JzxGj}iV$D?~Ymx^I=pw;FJpI6c!gKcTOpYl9w17rc~>0$3-oIP%4*%qdFF7k8T!KS?GH>`UtJ8ovl zP1pMRqi(+vxi5TeLG>lJ|B=yFIoQN^W~UxAbLMkj0-o9%9=kv79F;KMk?JcJ^4p?u ziJw+fZcK{Y7>DnHFBUKP`XiFj*(uJMKLY^8bJ_~x$>jOA;}@F6`VPz1d%j1g25U!;B6p-Wd#t_zF{a$1Bz73j7yXU^|I{yBTGf&r^O^feAU9!M4;C>W_ z?e#6$>^Rf3&0--y2OI1SHs8?NP~H%&VlB}acxYzj5;1yx!&)Qe!_f|l9`zOj{bAW2 z)_qbg4112}z8;wTarIUkgWlB8uVm7BZJOk7Vzq#9k8PmW4&`9H(|6#$>3k_~Xn?sw zug28~Wya@C!{2WWu*~yfe}S~{tWR4t{@Jfi9%KDT zJ{m3-GtL_$ll5Wu&{v`PDi?rzVtbHydGN^f%(N!Vm-W0?^-$F{FRi5PHR64aOfRFb zcju1jqV8Y$dQ$j$yyut^vq{m;3H5u=lb5n%F|jWg^XX7svQOV7_TPl+TDciCo;{b- zQzT{&RoA_R^#6)Iqm!Qp6L>B;>0zXwaSsc0SOTfrKlslK&( zjZ$5}8R$gNFT7@E_)s5=S^W+C9_eg#0c(YI9KO(}!u+2P=bz4VnzB93c2>Zg(O z`?z>f7yV#m%t}$5qfv3M%tl^jCCfiyOhZ{^}RQ5 z+z@f+3NNI<3(ozTVlGfhtPn>pCzLbl@PbTi#YM{*aza7pcSe9G`t`*XJ*#a@MlY6s zA7!5quM+z2k<2^C`dH`p=T>d9EjNM2UA9j=N=0Jhu%z0tW1 zU$nK}&|>RM5NnJ8ivZ2<*nGl%UGEuY(eq~o-E4;4MS*=r&#dze>2*>MrI(}nL@q$FOpkfCxG?g}gGe#Cj&6 zY*`iGht;B+KHcYWF-Q3Qs#t<}4;kYL9)6ICDFnVhZ``n-ZMx4arY62m%{oap>%_xH zx%d*qXO2%D3*^U3S#`amPX+zV;=1BH;ciz3&NkUxxcXLM+<%CAsBh_d_j6FDd+y#< z<6!`Q^lkoFoVAu9bKkgr#J(2?A?rHn|*qC|r>pSJ>y7F~>0xZJjK}$d~6*B<&n&mWw>^ zDU6UOM#v*R5iM&@J?Ak}KWD)V`Nk&3$?$^Y{MArhAUD4);5U`Q1V!g3F#BmX)j-x< z>>c?LTi+OT&&SPWj5{->_XBt#Wo=_1k0kedmZRHM&OwHpgP^m_I6qyQmQGfG=fhtq zdJqWt14yUXm#F)!qyMJR+=0X~0Twfit5+yD7l6k#t8dq{b1KMwSMh$UuZBNfo4f}> zXnfY&bD)rzzJ0e!_onG75Rmtgw%3n}+w=33>bFR_S{e0dRBZl=?gQwtUxz({-G(+# z^V4WMeHO8I0M_x}qmIP5C9H$b`^4O7;5$z|{%Sz9O*Jsn!EQ#gNP*6i$MA6mYK_hL zyhZ+_{B7hJkguHn^)2Y^2RJJp2W4?@@!g)^(5zJM8*^g|;8n7>5xY=K^c>IC6ECoP zIleqjbra;Rd%aKG?tPuXXV)MjbUvq*^CqAtTRt{EQMmyb{r(~Jk^!qYcXIOmj*`d!J@PCs9Aof0 zKGu6Ep#MPD7=K{=HYTSpFdw0;e7^4*#}8U}QF(kJ@z+z&;mb2tpEf2Kv4-R2?WuVD z(e!dIJqcxL>D2rRIrCSF9z=wjq;z!RxVq^)Tgt~iu7V!^HnDS8%%@PFyVA8TU7NA@ zuYI1<{>5>T`c%chv-;t4sj+utqtcm4;@mF&%8-lJp+2<@tG_>wbHjcB9|4}L(X8d! zWb_X7{*HHHY|J&vJ$H=Jifvnd`UTA{VzZQy-T+^|z`iY<$NTwel;;NaEB5g1N5sbM znL#@1Da_>TRO2ztiw)E3U&}|3i_}LL=P!ZXNHI=W!-C|p2D0|t@%yhhUr&Y~WaFER zZ>`>hz*DWrG`>xcE-+dj{6_l^2+ak&ik z-xB>A@Vpm{txEO7_Nz0MwPi^e3j zj-+{#?3@obYjJ%=`UqU->%t}7B|o1aeB$Ao<6;!K`&T~t5tk3VH~i#w%+D(AETM3o zk+Eew_cQw%a#}x@4_}r}RByr*y$M5UA>+)Ugfw~$$}KVf6p`H{0h(3 zOvPOFyj%<*=r_(8?2FF#v$5ibORs(eo#(gG`?Vr+`jed9$@?v$={_eMV9)YRFORHw zwH_UkyU#-kYpWU3`QZXDZDfos#K`eeuMsGWFVn;xY~CAk-vr>W!|bfTopF9;{sbo` zJev%jb=2XA&0I2>9)Kb9 zMdw1i25V@d-JIrWCAa z{G`L*=K z{`*XMq8@z^*XN&4PV*KEk@x1wiT=YkE!<@t@m=tI?-`s6@} zEtnlEq_I;&?kzx8<=sOfDIF>7kOy|i*^iWx22ZJ`B!<7zVTmL9lj>vJzGD3;oY+3n zY-3bMne4Yq9Xb4S{2h)CiOX4JuXqdOPR6r}jq`>+FCX8~7-tSQ$S=P`Jpxz&WA>lut4AF^pIqz( zc|W!Li0$TphbR_xHQ3H4CeY%w%fGK307Ij0Sn8-huy+~5Q15f{@r?G^hitJre;V4) zsxLuzV~;WTy#BdhIf1B$Xgw|-ctGAlI%csU?Rxm;- zw-5ARGy+pyTqY!7lQvlfBZfOb*=7)!lVD?b`m@)L2q`py1i~iEy6CU73`jBTd03lk z7)t0%TcOX(-2>!D3;K3P`*=ls5SXeWCaKn0WZHe~J<7iuZ=gL>6M>OGhmaHG+dL`6Jp`MA>(_aeu7W-*VfU^dD2Yd3aYEIzOIsI&qg>;sKyq)Ko zrh4gZMC+ilUy{6QtYP~+>TzsD);Lw4Ez;%am6N`o zs=EsO)+3Lx7H4gi4P7tg-+qX55cf)UaP4(~yiWn=i5b9#eb4qrM|&^&1&j3AV1-%{ z_B}n%w^h!W__Dknw7>m5p!2g9ur+wi|94;c_P00_A>;p(k`l#C@8mtzVdV zyo=~zPQE4ooBn1qb|3lC^qx87EZ5-4vj*-i>BkwJ`9|`L@WuJ_;uFb~*}YA4o8P{+ z@+9Bfe#Td;YfSll94jT?Q}_*BTNdO^6Egr;R{dG^P13XIPM73U@SeG5ivOnP)}-&h z;&(1VLsjW#(|WN#aqlA5Cu#yi=tI@=@p;o-TQ9;6wQy!TRdeH8%W9A>GVk(!q#ek4 zYIWYQpPYCv@cnA*QRR?~!Q8{35w(%vSGK@b?1o4&t{3{tdpS&u?3>!*OqUu3M~o&v2Zdyjk6M@aqfdtKagR zocm>5=MWj>*;{2o`o6ig$Yz$kt9Bne6_n8{W%oF8s;$*L)@{%r@rYSaJ+6`mI43*G z!yhqosyB7m?eiQ0T?cht}b($;9&<)PD)SaC=&B1--M6 zGv~AS+^M8rmV;u3ri?T3zN+}!95P+V)8ZS~jEUNA?BR7(;6C6S`hQ_l!QZuaQ5&ISA0N$Z>PuGt&@s zG0CD|J=myB|Fq|tF{Iz4hLzSo9f?`qyw29G4f(U`>pr7XQ_6I?pnbvSfGnlIbyABb zNO=-Jejw$*HOC9op8k~hfaK-Rjt2-?l;tt(;F+ZA?+2cl(7%sb)5rVsQWj+X``P|` zB%Ph@uLtFI=AS1#n@E2=@cT6V@8g(bLEAjFng~IUNplNw9amrX=~?F=Qv;#h$>Vj{ z3R&G}pzc%W-BfEHB6#a0+u?fZK7DkQ)i|70;}Ah3Y1-}1!!qQQIpf|Q zXJu1ZY{Qjy_e9?$V<&^Uu^LSc$hQ1Y#GZ7YPR{%QZ6elI+-v>4u+xa=ELy*+*W|dz ze$ailxi_BUjhKJp_>km#i?~{!a{=%LnAaTKH>daa_JQMO-18!9D@KT&-2^7 zQsgRnEnvYp^Ys*O4=R6HtcLVL|EcQ7=tzdy0=ygXoX?HXMC|4B<1@t9^=c?~yLYV* zA8Bt*iH0W+?F^gkI5wNOzf)r}QO`RK8_Khm3&&#AI{kQuSsdn+ILtA+N(FbtmBkq* zTY_^riigO*t)*rg$vNe6Rx3TL&i0GQX~G5(G;(UJC0w?jg~ujn^>bq^;qvHe;wyr_ zt`UpvAU$NW)+4Z)JUpK`rgD&v&cJ)B@Lif85=%KkH(4CzggDAUy0{Dm+aa3!I`NZ( z{M3#!uRV^O$ne)P{I#p=M^G5 z+S}*j^GmxcR^RSN%pxk4PZ(`*$HpZmxeISI}*i_yg9lZ#@gr6UKg zDu$Ecr+pxPnm5;&*6f`~UdUoRpUu-}&FPUCWU$>hUuKV%kliKl6nJ7YDm3hnx}b@~ z$>F>b$@$H&OE!lWD`zeI*xFKIk%<{V#s>C*!nz^fwd_2rTPvc52Kq)~wxNgXRjwz{ z*LPnL^&W%XWI}ocy8Z}On85xSFKpB=IeUO_J^&t2ud#tIPC9P-tL??)k##y{OJeoV z`WQ1yVfRQ|1GL1o(Acw%BS*Bjb9=>HJS?IUedjy zcKXaD_R-L)p;MQhFVT#TPId9#GhD~4fm0o%@Edv-Fh7K}AykZgOm zx(c)C1~z~lhP9{X;QLw++#qivW+C{ohnk{Caj*5}3$0_x_P~Pct5zB|oAX}OdH}nL ztm$tObIZk2bFtUt-^6|PhOl=T8xJ{C zg_Bo)9du39BSHSqds-Y5Rd`pBoyfC}7EL;HL-367$HeD0>cAdeI|4`Tc7R$5r_Zox zj3Ccst&+lJSrW5xbxw!iNEPJG&0X&^E*L9k8PP#p!I^U#l4Gs zCG5H*m~C`!lhpt?Q?NY`VZqhyAtHxeGZ^lYPK1JegF~-^<8Pl!h`uU0Y zZrH$pE?@4k9^>a-d^oZQfpl&b7 zHr#=)u|~!y!@Yqfc3UaGoHKMV$B;ko=hq7JOWkh-=7o1}Kggy*edVAodrIp9Cow3a z=c?AlkyEgRNEdKSaM%M40&j4vdQUZ6NZL1W1{wcP;@eFbi;T{_Nix%1qlS_64V{rm zI>}zE-d4q1qW;l+4t-zpg&Vh*xPh!YTYUDOJC*dya*%P*R89^1QaERhJY^g;WuIXW z#W!Hz4SJ90%S8^%?sNUJcb!6qm_oiw{IxM^OhwHNziUkPPd{%jehKWkovJU=a4i|% zt=}6=px63~cl(d8(^S|;@$(rj#?N)uX*&2{e?*<8JpWJ5S7exJ(_?gAOAY(v)O>{0 zzn@;G>EIG(b(*Q*oLnH^;Fr-^o#v%^@SJ>tjz@E#PBX*@NGpes4o=!N+XH`Aj^MK} z(jx7{Y^F;22u4zBIe^gTo`;Wi74||F<4+S~wUcUJ?=hL4*$*e2&oR8!^!j_tJCbiZ zl6OUk^W@mn>>u{ZTRAgeH_GQY21K^$8{%ZY+K!(u_<{Rmofk4?_&0r@ZSfwCdWpg&+l#j-i~62Jv!@laN<6+ej(N# zKF$tdn~<~z^73O(d?M5af&9VjiCbIr`0p-Smk{r)zI+Wr;7m@9MFe;wmR;eeiA&+E zatyO&h?;M*CECTndNcdsMEfD?4o{6W1mwh5uVW18;5arxfWFU&Cj_2#ES@lS?r@$Q z4=e_+#;ZdN$TnF^d38GbqkBHRYtmx~q5YoW>%DAV!E0Msv+8R=E@T*B2kHFectPkn zKb|CW1fPDMPS1Kd&*|knOjjqy10r-ursKoT`Xn1#$i*}8KATVNj#HO3BYDhyk3xQt zO}a3Y?3(mR_h2@i$Wt-qIezm5d$QlPY}8Glre(0G%?9mnFONpEL3Uvt^8`7s=FFd? zJE_0F{bGEplEOKkDU9;_sXzW)%UN|*qt@d3739!}=GhjZH6T{J_vif%&jNIw3Ep=4 zMF*7|K|9@d8*}~=KbLG1j#qfkPOtYuY5WXoLlANH@|msc2(4~G>*kUzLRdOs@j*2&Bq`&+L#PDpHO`TEwv>5 ze5CE9X#1$$l+*9-vat?lO|UQL+I#IRuku)Et`wb|Y7^;txT7h=Xse$?mzw|4A7~A=(DbVht(jUeEoV*iRUE-s4xV zGYIf!QeEtg+CEl21%1ECubf6j@%Jf?y50C?r~cVm!8&az?C|ATks`QLc%sPFW>HMs^_ z%9Dx6`S3c>7qjrk+Bh!KwfEz^s8JsF(2r+MkV6@CZ3pXoz*t%`jjP*}mj; z#jz{pU4FJbDb{ z=h%ZnXJvMv;J3K;pP=6q>^{+Rz`9xVHNSI@tk5fDqlDNuXT)H5kFn}RTpIh7`jB88 z*ImnX>rC?_>OjKfX@(&cO1o$4&`#`H4@Zt%w8rBgUuQb?Or4rWJ%^VLzIq*p?`#w4 z*iH&{8>W(%=68~xlYX9iELgS=9DknnTQJuobCLUa1Ko4%plaDxwMl$eo1qSc^TYM6 znz2SY*Me{UdRKGbA^gp);v2fNCNNT_&b#Whe7|e2fk}aS4sA^elVpPVYJFM{VkNZB zE!hQcgTfpb8p~1Fe6=dH_b8tTy&hA+7syGAzGxR?V@2g?HLpn6~+)?sM^@os*;+b!Y z7I2c#*UoVj^84N&W)C?!^VK8rwcc~W*^KXqPROrckMdUWe&Mkxc}B;tMd@|$WEkU} zVbi;E5AZP})*$56`+l7Ft)WuB9d;V{ng_8 zZQ9>gcMk?|F@VLwJiCB>H!4_+i$iC%8;D+>J>UK{6i zyII&jh(U6#hU!lsyAQwZ^S_Y~HQs>xLh^ug5#Rl*bBDb-oj+o9EGLZ-*Jd?}QYJHP z-1nS1UE9S&s`_J*q+f(>#c^17Z<~J4V%!^VEvLLIz4l4rTe-CD$SKt?<~{>8DU2I5 zVN4vc-e$i?{Ms`&=7MBB(QhYj|AqM0AYWSvJ;2}Nx-Z017*9=n2Xb-?og{E|9C;xy zCKfj1Hqo8p{tTRzLt`ATB;J{p8}y8*H9&UacQ#`@^x!KX22Aw7pgoG1;>6vPy%)ZP zHQ|`J!Y`utjCpPX-8t~Js-82#`&A5d&p1N)zZGq+UHeGXg)_Dm(Ldu(IXFtXZm@-| zTrd}yJvn4KE%C)}8<>|#XII*2cC?TcF?;m_K2exnGh_I5;rj5i7 zg0C2xzP?yY_ELP8o*x+}ejBcDofulG`ad3~P}KQcN38e2zWyY8-~;9iBs;q-E*x(A zdSXmz*#~x_SXU(dd|V7Uau1okkgmPpxz{sl>7!*%7H^K`^T%`S2R%1%O8vd|Ob0h; z-!C*)eK#f}=(o%G(t9nwCu479Q`|bbNn&tH9;=mE?*fx~v}|=nKcT7jG|d(6F=CCs z1drrtPsoRgJ~>*iKUT^zgkxSsxqSe( zKL38EJDd$fUm;?xY+oM1_&{7`S0`vQ zuS4;a{dD}1bz;7EXLv;e(@!&}&aw9Au;O5~M!fs7_DTp1WZ1|jU?cm_@yvNevFPUu z;TNRIPbbV5^69ms_(Xo4joCD(#3uYYEEg*#;itvVk3~f6;~HZS;dlLkv4^O$%5-zs zxttnn2<4Gjcqn1?QTr5Koy8Q+!4*7okEdb_hRTjicL(`4R_q{@-p_~`C_lbz-2&5R zvJrE!nv*eRueosp#{L~GWnW*fl@s+WrJcawVGJMXn~S+iL)5OQx(%)iD=p}LH>&Po z%ylw@731%SUJ_oLs?&Is?-2E97sKHR-TyJ4K4OiZS>q7Ck87-DHzZATB=%Dsv-Lg{ zOCaK`zI<&%=((I)-yY5*aeS08`uG@ZfzUN)HSZ^486LXFQ)2+3vg51QGKBJN9J@W7 z-cOGSgg&o&q=umudZ*|1qlKPHJPhMdy1jyULG-%*96jIq@cy-En#|${hiE-jyNsES zjdAK4M7(UU;uyO43~PF1zn%M6iaF=($fg)}js3ms(IEPy|F>+$C6=+k(4IKN$+|XV z3HooyP8j6iJAzlOh0XB+=Cc!WC;jgGcF6PG4%~&2z&;B6w*USp-|?BYQoMbBcI`uL zGP*6lM9h@dWt&6WA6^g96|>KMdeOI@tVSX(Po!Z}q1V^Kesdz8Zq90DNk>WTEB`%q zA3E~B%@44(V$)VudvQYTMY4N7F}HILU4GH{O!Qr}6UIi5%b9cYLH@NK!*o8Rv(Ag> z#FG`Vu%8dntTV&&PqAUHq-I2|HLP~z=y`u&9Z8}y&1{-uXB5;UiEBa=yyIN?7`5il zw{fzXl{0EqlF0KE<4vJ=nAtq(omB$A#rM2g7Nh!;V^nem`yswQ$HpT%sh|hw;WIHw zXpPqO$ET*^oQ~x70(|m;_FNoV$?AHJ_@9CnFBF@Syq1D*%XeM-fI1*W_gP%(llI-%cqxvpQfv;p)=v1tMJ*rjN%5PmejlC~|KYo{Kfx~Yt~GA$(GeQ_nE1}g z^p(YXj?iHsAHq3b(gP>=iywPWq8{>Ne1BcdZ|4?oP$!MqO3zS7zK=tuQS z)}tQpUaE=u)?><~^lhj4kyw$2duOTNPsS+af83;V9XIzN0)#iO$mj-9i7=bX;COl$i` z`4dv__<4otQSpkWo_i{4zBo4)(Mx~nv-q&O^*pV!E9_tX+w$S~+=YS(8+Oxi>>5+n zkl4&ym&7o*__=4Z8VuMeBh!^pEnz3Dgg<&>J^QiePGiXQxNA$*ZnH%!UFh)reHZkF znU9zySlkZtW2Uvx?~2(VN7kIh#!j3Y9FG=Gp7U^6#(nh~sngEKKY!)$GcIS76+QiW zBZ1G1TJWPbMzUVL3(JmqyqQz+&f)`OU|xG;!)K5;cZe+#5B(m9^9cK{n6Gz)Zaz9b z7Gi50o8u7cPX1s!O7(4h`I(q;&gs-RSu8%Nq+nOgJ@_`M)|Y<}9cKN5C(Y4{BWEvb zXJwdGarraee60lX=)^o@EoYH@m$^h|U)G|wwp6SbbFu30dlmZv_F_ZWry@pJFA;C> z40FL>BrD>?r$`Rd-{HqKie5XyK<$~DQ8gi%8fP{YfA3@MA_G`$kd?b%ZI6Ap;n`er z-a{W}`hh)g(X*)dt}mFovp2w4gH14A&OQ17bK3gOoCB;Q!&*YjThNBgwE(ZQkUJ&+ z#e;`hE=y@N_`RI4izEquaTC}3* z(&O`YgwN*8WHrWl%wd6FXTOf>?APrayST0CSs|av9%|Vkw(0YadgpbpBm1HUyU*N= z>+ciTH$U1zdnAo|2*-FNRQ{TxWGwqfdjO4 zqTK))?cB?k&#k1xZ)e&OW>k*E!$V1Y^tAXkRt>QCOg=crk&+(kd@zP#KJ@&Lfmbz;XOJ#zm-vn+mNefQnka)92?d<`|Ef!qS<3H#UU@$ctB zd6?M@DcB4h&n(u{=3Rx*Ze};6&4bD3Ts`$nmOG<`)f;phFQa_vH{wx5>r3*h6wS@a zHkqMEf6!CsOmwywtOk&)J$E*?(6gl5y7pfB;|29xl|Sfro3lZ$oa33Bv}Sou;t4|z0L{7rN@$yvAH z)4$(H@8`7HRkKmv*jR{5-p=1Zud277e!suZw``(|^*x=-0D0R*^M(9a=sH?w=Z&$$ zx{w_M^y7<~mW46D%e!j{&C5q%UiZ7L4e_|h{f5eF!w_+j;?m5U(_y{zHp~TRYQ}kk zF3z~-i??XG679VHAzi8L#3%gLO(~CG$cd)>7!TYXF zVXE)EK^A)Z>pu3ZEN4&6=(E!H#%C463tb~8a-AV{TC_LdEO4B1G<9>b;C<`XCVls9 zDdc^eH5a8$8H=1Q$Amq&5Xz=?YNlu{&-5AUPIC9%)@q!uk=|pw?&iMxZjYwh=W)*@ zd#WyT;-&))s_T2y7 z-EN;P#aq+a(#7Z8h<^cz;p*uIslp3ND>Bh|VC}?w1VHc^me^uE9MbH(Uu_^Rr!CYIF zIrxsOk*58lGTFh7`N8Y@_A)fr@4a@|8GrlF-R<4;Px{WU9qV-bZbaYT(iTWg+oK0F zhn&fpd%Ur3@Du4?@@w~qUs@G|Y?qky>*d2(^d@{e_*vw))kV)R_%xo*k2l*O9obck zns>mny2p#b1io7W9@TxL<9b(|lSaok&rjXbj&qHR!5i`Ci*?(AANF>iw^l?$j*m@z zv>EkG#Dt6YdFW4t&r>3QxkPpo>C;My&Sy;Y-ax%W4myO+*}jMW-Zo||Q%Ro5I;qW| z(#-vWUAZ$jp6}TDAErxWjj5*leKxZmzi`j(iR=?GTaD#|n}74fi60z2TaBgH!u;*a z+J2%wX9oLd)H|R{`7RB|XNqT63S0dHb*#<{OOcCZKgg4J)X!S@lpZ-Xr)LNp@VYVi zRWa6s?hVPcnlUQ0?E9XKDf{f@!P0ysU9l29aULHgzWh?Y4Rp=yp=2^Y_`FohMcV&op(5u|NqA;l}{-nWshW4 zRyrY$<5ZGlrDc&T*!%-|xEazwZC;KkoPS zevRkj(RIFL6!cPQ$R7J~5LTS|-fp2aO?4>9bK4}EW~XFNn{6~%*{-0v`#Otk0*HLc zKNXY9G=;m@a=rBt&`4CZp|Uo75K!WNeI4Fu<&ye+#Dt9nbu<$n!IapNtgdx>kY-2E z!w4J6EHq>bV$(XF98> zz*siyJ4nmWf$Onyoa4KU-6<)oXtF1G0lfCHZ9?3Y!{L?dXnYV^EI(d9FP9BJX?66c zKnkbmdiFUJx7IPE1)mop3pjps%biX_#uR@ICIEe=hhaBB>?E^BxW@&j^fQ+1h0!@4 zIpe<04sec-^LMF>hM{~?n|dPx4rS{;?`M9=A9Qu{kmSF{%hSVBcS1_~`J<~ZNFfz* z_df|(K68&;JsSQ>$8hB)zsVF_KNp#~_to8Mzoe<3NZ#iqQ|C?)hF70YZR#8!sr$z+?zo-n_F?Z>JO` zP~RsN&0Yi|h>IWU)I13%Q2o;3ZrInw3AqQ1SA2>`(FDV$@S47r2#jOk zc>AEy_!SZ2FLM}f)z<>>ZL^v-fmL2{Imr1ce#-{sp0MZ+QrxT zh!K501Jnz(j7Qwxrf*|3`5mOR{E!$XTugeNc z$XBS!4Ui)ynFr_RWTv}E_|zP2&( z2_Vu!k5-M2Rz`4*e&oR6ijAQ!!>|nFpZfYo>z`W#{wzrK#Lh!c9-be5F^LfS?jy(+ z@4g2v5<8Y`L5y$zdR9pp1wO}=?na=kTY^5A%hFbj;xDX9k)#%{Q=SR(gddEL=XvPL zo%;8dXE&KAYARLebEAFM|Laci%8_xKNUC|zuH^od$ttTe$l#BaesH`Zr^ccDZ|SC< z=JCkpfE*RV07G^b;xu$lZFzC=FQv&iJhD-Bj0u^V5+nCrKV(xOj`*d==%sEwEN-p| zS>6C|n+9HKS^X{JYNw1HEmlk^XYQ#Gxeh!QU^>9))d&=fx+RAz38B2I;&h7F59=2q zI(n3Z%qRMf_Wg+azDA3p8(XiJ3b&?i^P>j?N?0Tv^3tF6@{Gzd=&>IrJP1F~Yt%2G zfW;J6+be>WULQZYLQ)j|U#>&q>@EMKNYvmNy9 z*M4WH#n8&0Q~W(;*;%(=n1!BT^?8+=3)gkW$bw4|^uv%nLag=hA<}sM{CL<=$F)Z) zb}63%GmsI+$U|<)AlF~pLtASB{i>e6l~9%z!8;#Sm1rQVw9ap|x;w-WzU(lT-^h?a z*_yqBODl`^M9t?5YGg9a7qs-AJaL60_H`f>Y|!g}qBY?pxqxe=K{3hFrtYBsdJAh> zY2kqi-1=f_1dT-#)e}QoD9yS>U=qwmByt`g;-@qVisGwPqC9qUN#ZBt>h^~osN42n zwTG}7>TCWIqL_(I7U>)EDxe=`8|ZVPm0|~eJ+=Bh}{cvaL*IS=;6o+y%93Z6fbOR8KuLi^fCy>gF z(5r&u5Is=yx~`&lnHzZ3(c?PM;UI2A3fzm3Ney0_hAMPg{t8k|n$E!|l>v+5AMPN7 z@dK@4r&3$($}qnEjY`DicQw+I`i5MQ;7Y30>)W7%oXJC6Sj(*)5l+Ec;yzSMjO;J_ z>w1OFqL$Cf=B-p{1;it_*+%o4B4d1Jz}5v@;7@{}*A+>14Wh;=Jyw=r>Ob;(K73Kk zts|4pjG-1ac7=L7P`v!VoM8Dqzi>A(3>g%DD?l|Y85QgC%bm*YrTp-i-}YwhfAn#8 zE||k{f$`vC^TVV1o!V4&C*dAx@;zkBpqE3-c~PwC9nK3)QLB`RfrFhNwOx<5-7x2f z7Y(c#MltXxav&1-e|v1*%|DO@;$c}0f(h3(>;`=~+rQBX)=js`rp=Z%1UodrAZXBVxQWXP!4!^pmw^qi=U?tG0<&e*v<4kU< zlM(&yn*zw7%axV9jN)~#4^yg+9IrSoYvx?3P-%FnZRg&oGi*jUwzTsYdfR`Cj$W(Gt%v)w7UZ$gJKS7+Rau`idveow{kRdQw)Ar9YXu?_mO6iau+b7lbg_CZu2j6B zoD{GQc+oOcXgmAYfB83zOzzjuoz z!RhJFWk|V`Ls$QEa1HIgtRqH}+*Hp{L-!;XSwQo!5b1;AAXpX9EsWLHMKAHbb4$OLE z>gcq{)_Pe?EY322e7q@TaJoEjRkHb{7MoY`8mti?e%PH2;1zj?&I(RS-`x7x(2omy0 z59nD@V^gf8nbr_y#EfnmA_e|{|C%fxzoCm-#$$VP)hmwTlv6@20MaGdR#mML9pIir)M@Ph(XH|XqI8#jxhwz( z)=ee0tT1u%6v1{ZbF~*TlRV8@P^$l7RBl>VE4KYm4!_=5J z$d@?czL|^cm!BJT z%Xz3@6)e8hL zm7f)X_7k-Fnte#wSN|nA=#?wvCne{4@i?n6g_o;?@EJ~WAzH{pkT(^#UWS|QKVC0l zM~o|K1{5iRrq>l&{UXIL8FiN6ly(HBv-vu8Zv(?uHTCw)$A>M~f$M*WUX5BG-+tAy ziaEa97&o2GBgC-t%cHrJ_I_B1DN?knD%UPHhD9a*Yb@tBFj0ATVznd7_^BDys83Nu zMbP-{-Jyb^|7GT>2cXX7wd?WQXdjd8RE&bLP#n>To|$M^faLCE~72?idJhngXZu8h+#X zcU=v&mau@Z(IiHus{yhd)cEF9ix)o6963`9$=ANw0Y@rj-;TFmv3$%(^etSXCAkR( zlOO0v>6dG{e}gnC?sGGbA9{74u9Qqh zd--mtR5jcVujF8+Ts4$d{86VISmn~hpHXvVK7Ehjv_&0m{025rG(A#4xN5GPC3qJD zQE={7FrOxlqjKD3;pHC9oL9YLQxFDS)66Q;8*q~;)o4R-R7 z5|t`NP^W4u{C69jWAmc;qLj@3jo&{1H4(ci)l6%%3^I7Xxp}JH`-{4`aTsOOid501 zIsFZAJiSoDm7>G4bxuPZm1#l3=mElVJz>e5%&Vaq9Mc#~pc_5K?j4~qVJFYSu8h*5 zf8Hg02&;HYF*ZyVmjYv^R0{-}stMk$J8#ie~<=WX_N`?zGhjt6i?#Cq%%V2Ip zl_m))58-#_vPbMC90<+fNS(e)-$3)&cq!Jyrg7L6N`N6%NG_jQXZs%>th-dJvz^T{ zK7McZD98g@6`=M=3c8}CN9o%k-)&MUY^n-){zS*$$sM{Rv1=tRi_m+k$ky`Q3H?ti zp#HO{Uidpk!pGs?yT52HubO-KdT*I#K9^N^C`OMFwsOMq@55G(TctjoT8E^oA9B7o zp40-dn$HU>iOh*T#B<5>W(N166SN) z@i^B%wJl@1MXn6Ky*DeDpLnktgur7EkEohH~pqP zoS}-})SHzQJ!$5(W@rf@;B-F%zL6*68dus+s2`wI#sAH#p*2A7aC5|Zmy55?(-+A( z$A&O%f2`U4LQ(xki8FAf229ce>)@&f2)@7P$xS+@Y_r9lfBg*w9w@VLm01D6(tmr` zhL77^cpf4LTTDWhW_B}72gv9D!V{1-v&ME#?_yK3&^*B(=EK6CdWAQbRbca#>)y|l zUjAfSp%YiP`wjN$&$#fS>AAotwW{!}*ucT=)Fpc-wvapNiPVN}NL$}I>D)GLp%wKed0cOW>va7v&VHQcj(Bo#3I0V#){0>V?tjh^(hF>`c{7j|Ep&6K{JQ&>Ldb zlBlVyh=jP|3^j7eliEQZ1He>H=QfX}Hi>8d{fCf%1MQikt4$XJdYi90rOWN>_C&8+ zXX3g_Gi3LfCw>;sASSj6g(|*x%q&R#v{KV*)^V0=v|Y|)Ms|d&gC7dNKf%0+nfzFI zy%853*Ky2tB2;VhWve&j=%gIoWYefM^sX=^aNKo1F4NodRWu&L0T0A08+`oWaqO2+ zhd*%*>UPQv`(kZ^9}X_%9M`=%0I!V&=2CkEW>J)tVU@#Da8f~|vU5u!{dtx)%AjRu z!F3G1s#!Pm^mK z>A2=M#e@4`;(#sN7kq-x)RT+Zut{=Eo8PAx=?nzS1pU(d_w>LONfKk6#EI|hlotzp zN%~Yk>eZ!@bDn70A1XWUmlqHk;*3BrvW&GWi8TB-d+*c87ry(~8n5RZjJb|nJV{#p zrXCli*oC{isoZ0p)Vk7m?(3%Xi^E4Q*ZXDtLaQrpY=P**oV(Le9$71z*wl!yCAFmp zluPr2Z@QWRZytWj#-S9|VIq|MxrM_I>5XP5TK!&G6{l|p6hgMX9M*P>7^x<so{|V2pDKRUT57u-KNO-#_r#i6sL}0ajRkN$ex)y9P#^LI12l zuKooD)&LA(TVG!qc{{nYvgd~hC&=)K{#31Ntshd~9;2WnNYO_}+UMv_dCQh6uB#LB zj;~&0>S722m7GNTJ0?;f0oa~vTs;s{1uC=QXyr>kmO^XV&(l%FImYptZJRXiFNAr0 zVm2MZSj%?HEN_D*HLC-Oi$6)dE*>xZXC0vlz73=dypmV)u}CqSxpmA*lHOM5ZMP>BbZ9&z)vfvOf@higFO9gsn-DZn>^B zb}^<@&pnTemE9X{(vt7R1NyIyrET~;MJhJZc%YMdvv=OYQZbe~^` zC@bs_iQ@rmfPHi}I|0_FU^H1t!z_y6dYVT8_M(6S^j={9$=qB&|2xNO6-4LE{yHmi zWR)rm*Gcm{cM$o9d$GA9sZKQQTGM?0>{Z^@jem@X+oA9|=@nvX_1}rn zEoCns$5z7;1ye|V7{_?2l&t<2kFoFWA=GCDES`5Ezzxuk{w=%P60e#pT=THk1zwQW zt>1YZ=^CPLyHQVlYf|>Hxpv^Z$DgzWnmCOAa+QY9UXX?3y(nbnaf9`@y+^;T=5L-= zMtzuh+2o`mh~h`xCn_ojF?W>A#~?X-YdvWe{;m5PfmKNkbCBp zipMTUhdJHqd}^#tqtQ{01&3MmT7C&r4^=wt?TZEZ+uMER(!-3-a*%j`nN7;|litF# z?nZsjGQh}%#e4Ikhu1O#ax2^h=tfUNrq;GNrwOS8T&;bG>7gEjzC6(SouwoemA`3U z99oUz=5M3b8!aZ$u0O)3ET@Fld#${GR0Q^6{e~gk4;2ax~APY;~{)!*RNO? z&98%f%bbZyXK^|kvgDiWO0eRNk!SWC-y!ta@DMc37YX>4`P)*~%m3O5=A+#QuKN{>+#luI*;QOe@n(z6%Gq zdAiX489)wlpgUgy24Rf06(X%GnwyC|k=4e_eP@1LU-psdniE?$UkSZ!-@w#VSD>S$MN51SzCUrp+AFY9b!1~4&lRoJL6`ctu7l};hub$nenlQ z52)rnc7VV#=N!AV|x#reRK!59)XYU@<>! z7W8{>DEy5F`#$Qz^t&K&ZnW;WU(BtSjtddw{|Zzzn%NC@7cXz@#%|o8kNuI^a$S1y z#`c-Zcq8P}W5Tyhj~f?irDjKc=wV2k%XztwR|31*S&V2}6ZfZ?kd;q>~ z4la}2<7v1F4PF`f1Sc}~IOvWUB5Cw~Scgm5$|qRtswlZMVtXL79dksRBlMPzutcIT zdl1?Am#qyA!gCba0SpOS{yXq$)%prR8t4N)9g?l= zeYWEKr~orpc{JwJT-bN79RYxm2Ki%Ps21 zA68}p9QDCcD`(Ul_YckDW;^4Q44LU%PBC^YXC_37c54{@4QXTlb5x^>x)=l!InFl8 z(mA`ifpAf*@sicmrpoP(KS->QzMjBiyPU`X0uDn!x%ZCw%G~2ii6>woc_If z+r09GmR&+(87T6!Up%4eJLxTGkFK!p@ z#%11RxUx8SCu-K%GsW6}a)UXYH^|>C{m^N}o|I2Iigo&M28<()o9B4DsuIPv$OdrM z_^I!RC@7@iGE6=)bMPr{aFF{>TjJ8`76(MNaeg$%ItE{nB+H3Bux+Rg3}UlAaXdAE zC!khlEn^DipijZ0xrQ#jgojDkqn20R0;qIHjv(~+w{jmt%(?;|2I}-VB@g_1LV+hD zXHHzsmPG>|D@QwTC8VJ<0_ptq&Ysg$n%wBhiHp&amG>1GR(#(Y9)XlL!YvkeMY7iu zvH+L8LDMB(Sq>~QbuW~>yXh7ilH5H_At1uQAv+}p!oV4is^IbmKX$EJs}x+YD0dgf z%`Je=1Dip_g~WU7~K%-x-jR#SrC z#jYLQzfNaff4*XPhj>d_aBMqR+F|~l`{$5=Q2}%i!_3o`>(iIVC`)AJX{^|ew0CX* z^WzZz3G{_*+edPH$38%GEPweiUSR$z2IT2@2uQ5H{a$X{ctKk zOU1NN-AZhW)rpg3Os1Sq>0N4cMYQutm*Tx7@etAJu;Gv6{{gw7Uv_0NJ9VY;;JOhpxqAnEh4Q!Z-Kw;a;a7f&d}?L~aIhjB zS_|{#5&uxBxsJ#xzcRP!?P%TJHA*=TI6~c(+r`!TY(1i}B+ATn#$iGAE8LtVlN+2l zALWYXsa$3+=r44js+^{x$xje-y9`2|~3#2=pb1&AKLoWBalNCf^$liQKoX5;NxXN<|#pc$gDZ^H1?rem@!~kD@;I zDU&!NUr5be9Ed&GN9?T6hoyQ28C=E=AxCGwEj?SlCgG|Da_5f=`1bg(6O)h&U>z8& zyHJrw{i?ip_f?56hEIFE-BQq7l-}IbDwn0|2za1+D|-|NiAlRpWne(&9*NiHDj%ZV zYfB<-v6?rJFWH-VJBCA4q%EQoR0=bmN24d2ezAy6v3u!OSoFC*E0?e(jZprs2<^$a5$%`xT{+OA?htz8_84)i zf0}^>(-QqG4PB`Vi2w?4rn{y}iR^J6u5fQ-2x&`w-Xe`p1GGswCe=#a4Kvk0Gu1^b zKg~5SE0OY?Q9-2}D1_hDr(}*JT}tW$TX1jro*B+TCx$`s_Z?dJNjz4 zJP(Jmu7$rFO|%B#`E>uU&YMlM6>fD5$?qQz=9f|*BiZ9*EVG_k;Rqg6?m7#h)Z<7*Pu@j>FSEj9{N$dhMi^RX z^Dh6KJcq3Pt2$O0QJsRBh>1Y1W~VmPv1Sy$ILxryzEZ3A*tI8yEp)tj7A~%`#9WhB zZXx$MJ*fzKc8UBO9CD)<7JK{NaV?i620Q)5Fy}uWr1;D%WcugBoG+xF>(l?L za)EZ6z){_Ea=k^=GkH()*{$j{4$)S7v|Q50BbrZKYZLGrfGq4L^lax`TJ-Ea|29wkgQ+FR1dzTgrgR#- zy4wqOcwuN>S8Zav^+(aVU{}^2?sbh<@;&@v8^cp>xT#w=R{$r6M@%JpNF219Bv8vB z)-AZJ)$2#Luh7?fo309rDjD^3D5`gO;8@t2e;gOuJG zg0;wQPY+v$Yg*X(TOSel97a4dC~qWG*Q1voX6-SsJh^P70eK~}*>rjt#QC@`niMJ* z$DW`&X%Gc9i~K3%Xbe9KJujBZJ;lk5-`LQeXn%n!&?v+O`%C@xOLm^jIZg}pM`tKH z_h|Z$@c*DAvSu}Y5=L}GrgO5X+lO6G5CE#taqw5O`#)Q!H=nJyPY?m7%bnx1F+ag} zGW=;x$YL$76yY6!g+EF*$p=&qJEI8ir(H3Q*i5zAr~NUpSxRgX|5JcsZ7eYIcZ#N` zH_#O=b$se*M2ca}iLfm~$nt#^%c1jx>aKDH?@_&8j8TX3X0P%zOhv<~vAit$8EW;P zrQB`ZGFKH34CQVG$-dRnylsJXMj*rp>VMe0@>zF{Brt7icN7Ls%H&98{{7K_|3`mu zJCNmH-3XM}hog;h=_{EE?qM&&QQ;uA6>pkItZi~)s=g9`fKRqZ(%M0Ab=ukvP%)$m z=|wL3Lb%Cf$CPJ-uv67-)=;NSEm#_~R@97kk{Q z<~&P`moGh^RZNK#c7RH2agw&<#ujwPQZ4?_Wu@~mWjCh(_9=nf+E)USEtJB}9)$6S z@*9!*PoN(wcve4U*)*P2>sQ-9bJA*`VG@TLzQcBRvNJNC0^Lk-O#$jjt2!nvoz*p2 zjWxT|nUJ-_VU(eXBvN0kxv-Wp8M#%HoLx6q^x=;fc}t<~_KblOr6S$T7%=} zF~4W6V^Y}2-QHE|<`deo(ufc}Jpi!OelN_LV>B|9=R5OqVrR4A+3$5S5HbIkf+P-r zZUwcT=Nnxt)WOQg-mpGZoc2@172QXkr!TD-Swt?w8Ai;0%62wgelBx?V)>c$&Evf; z1Nha)#|z3CE&1tJE}wB`drgw~WUg^jf)AWO{MZa93{zBXXgl4Tt4p7HN?6Oko7e!a9#2+~ADdO&Z zQvXr+8Q5`>wzw=%DWh)|0U(@3{ZtVIZn)K-yK5qQJIVOJUA^FMQn;BSvWYpP|J#pV z30k*#qxZf$JrH_(VVnI(YEObnT#FR7+&?nSIC?OuJnIVUQPcBP>7FcnqxBSRSD(jt z0xLuS_sU!Ewj>Uv#n{>(4PJKoEK#+~?=RMjliMdv7i#1C;H&oc(T5ZPisdaE-m~G? zszOJ_t>T{W?ERE9Ck*vf@*>j)P-lnNO6u$ zk|N0|Q^Ko>HIdl)@WGwuTwKWGQ>N|B&H%I~Aw-UONPTp=0*n!m$&T{*H)p-M9M_0G z{y1T#hrH(rOH=}OUXKmp<*{V2@$x~|dk+HM3f}-m9=&!14$Q|`+@myq$Q6J#T{E6| zr_HsJh_ZWVi8)^lsK@3Lip}QFk}m{ZT`46r;x?}bkUtS_CzZa^wAnP^!`&A?-n4;_ zJ((}1o;oG#?zxtu8$m z0ui88kZ185<5MBvrZa<;uq`gE-WZ44ogTq9W;wvy*tc&Hk;EqN{ib2sj|ujcPu2y6 zO|oBmJ~&G6KC>p?Ykzu)aKHCspGpXF-1+iR*YBl9WLv}gX7biQ zZN=h{lfXO6kLw{-ry3Zx*lN^evmJxwAot85t8au{-;_xDqb@5U)qyqzekn=W++Rz< z&5Okb1#wME9MsQVqcHC;QcrwB>F<;^r|>szu6^~au!!c%I)1q7TY09QVGHJ#M9QrH zy|zWLtY~xkX^9HSXbv#2aPAuil1E|}>$eNA(cF60x;F>51LLjkMhID%^#@zu9sIC6 zbW=cz?5lrty^QfpNZ9ipN!;5CS@hIsP{?rM#jZuFb7keU8c z(+`eEUGc6N39~5ZhFMm`6yc#aw{KQ6Q>hGBgCMW0`gMhR4@;^}0b0z~Yqv64wLW_b z7{Op4a4d3~^(y;i#7<*!YJzll=gwdPy7g6S&azA|($iivXIl6rINnf2Apt$<`v{vB zo^y=f4lq&ft$jI?v|&Ci7^Cs_$!=srE6(M$ZY$V0Im%zDRA8z!H=-}C;Xo9YjEOu5 zYg-hLSFoeVkHsiFADyo0;?0@j{LND3+j-!tni@E~e4XygU|FK6&hnXY#)XaEHH?1} zsDpjwW7pDldCCa_ap`VJ<*npvTgvxPEsH0dL=kgcf_IOM%fxFM%0leET6Mjh#M!JU z@^*>OKs+EGpZEeMY81n-&Oh(=x4$ki(+V3ke(C8Vm6(!(?7B>FZ*_DFY{6t$$++gu z2klN-M`YgJ>~7u$jDWoTmO26rWVmz5D*&wfCS7gs!|al;Lhq*9^#_ZgqE7HMe7Q;z z@+Wrb$DYfD#xB5RrpShnG$!Y|r6)tl9~)<4U7Y`gv@i9IlOqL8z#%lAMh|vmB&`^Q z4HFO%>LnqK{7d&P)&}yzW|ccDm$Pt>!G6_`eXfB^MAy|k)nJFOC$gPBvKvP;qaB6l zVoJP!ajC^kbU#VNu0#W>Vexa*fV!+zHic?kaV$oI9M=KLude4a)ie-q{R_ z?$g!!hUxHlb*QDz&M8wA#@&!)k>!M@ex~mDj0le=$X)4TeL^J7=@8f@K(TX|(-;9_ zkLyN*J;lq@ytXBlZ>vI7HgoIBE*ze6xG`ikJUe=nTvd{H0?%8YxvO}gBuX!6=PPb< z5gk>YEFLt>{-Vi;ls>Xc2r?2^O!}`jZETPYg8Pky4_OI(O&EPR)%I99#wVWqz)M90 zccvbxveC=9&cuO#lI>`wSD>0b`Ly@d3q?06b(a5{e)~#mhn2K?wYf|Z$H}PbG-Ri@ z%vVXV1^`p}zjhM=CG#Gb;5)|RgQ_%u(0I_=gj}tb@iW~s@cz4DEoWV1exXFMLd0c- zOQRueAl8cW1<$AVS+dpwAiXbqJi`j*bZ-DE^QgBDp1bW;Tlp)#W6Hyo)>QaBH%16K z+!bQ<$F$)J{VG;Q=GYOD??YTd%*vg6ZYfM{7+Q7zmhIBI`<`81l;?~lI;*g9a^pxH zZc(1N;AzaL%wvDaBhntFn{YE;L&Z zGBAr3@_jebcD^BRcO{Y#r_>q&Ro#&CL1DhE8ton<3(%v&JpBqjoo2HL4GAo?0R)7- z$3)M52Kq=V%u@ecp7|JY={l>fHykbhc(4OkgNe7+ywh_&qp{UV>&xl#Tw^M!hs!mh z+*7UPU&4yipC03avPmw$ht9fyYUJ-sbX^;pq9^L48828`2DlK-T0M}lz<$O~m~Y5n zycOv46Rm7W(e`ezgth-9)D*l>wF%Yr%gT|(0>50(r0=lSZDy8O>k$OS?UNU^=ssDTo<0bvMiKO{Vc4HuZrkA+RL8#enWj`Mh=F81Q9pv|p0s zcqVsfUpBY`-Ai}PaPFCYdN!*aUtRHA`bXHvc4pb|`SgT&n?QgwTPA+5|27 zW1}K;%1^pI8jb?-oi*Vy1^)rBfR0^G-KoKMpzj?6bnB*=0?cKk6p74aW9BZC&dBul zch{Dft5{+GmGOB_L$7jZ6%O4igw!%0#ss)7SKFN4qU-1k`v;igCEsC78kRb`pO^Z# ziqpJ#-B=8ZOSe@Idx6%ji^{}pzU{eKR?f}H#zrBk^8U)T8R<8=Ia!=FhqBV0?AXq+$p5gK(hfz)%Clr2tKV4Db zdW#06I<)+@@0SxOw#UeT5YbQ&aqBmCiQ>8_nbtYJ7+a3Hcb&V#&u-t0x8<5h6WI^2 zPHKX1b(*WeMjd`YQ=X%vCN3>E8|(0mt{R!O@=f6@oG`2)=KidwCh4A=?vl3iQRyLO zOpPX6h-$9_6UtK)vy5Glp5=rC@rL*aJgcHz3Skw_l%a(o#ycch|CZ%`UyBwaY3C4p zkjY1#tt(lB7slt`okd(4FaArB($-_&p6lQ}niE21#%X&HxbZ5?8?toemk`J?EZS$f zjH%aPV0wfahg^~g*3Vgv)M2TMO0>sZi4Il75PP({nzsuvVO=loWUVkBepW#GFQMaEk$MFzfM5SD zu@_O}pz;X|CTc>%XQ>6kB)q!XDTo3=8D2F%qu(WvSPFEle^Vc!efWT~e_VcrEnJ!Q zR-}x<@tqW8O@v-|x3kBNGEGMg({*^lO;)+HbL+aQv`Il2xRYjL96nYmAn?|WgOrxu zDRMM{3b9~J+gON=;IwH`G~y5Xo96Hw6qCfOHRr*eb9Pv|d9Km~c56rq%WmN$cKDrj zLJ&-(yYFD;^1aEf`t1fC-g`GFVlfI;JgNIUTnLv9V6l^TL%6v>SOjhI;uIrQxh#4F z`mof@<6)nN>ym9>%_N^hrD$@$!=D7e!XL~Jl?>}1w90&1VKGi*Z#>`z&d~#*HAGS; zn<1guVOZ)MXK|u0&$!tUx7nR!@vZMKFVBxO^~IiVT1oOc5OB-``trZKmiE>m->sIq zpz1|GF`3GBcr;uc_h!Uuxdg}*H)uXT6rNDy2Vn|3*qLsdTBi_KkfcrF3>jXK=Iese zK9Z^c?E~lWOeKU>@pz-%r#n;b=ED$fPaDwbfW{J z#M+y3ghNe@u4$(u--|4o4-d_sm z)>O`CF+TUS(*$dtyuN^Wy^7vibzJz02!sA=B=Fta-l&uGCoej?XEUXqZ&~M1d9O^% zZ^6VwyOvTR6CG40+uuO>;J^aGT~|4$3E%M++@D5;_*2>}y(BgF3hbnwTXW&xO_U-M zmpAIo=r~*OAVe3w?zO3~yQfMkJG;#7NE*;2Q(J#wdj2GJGlArP1b)y{NueXy1EgYG zfd_asB^g^hM{^@JmnwOS@)k5n=J`YY8I2J_`foIIC;2tsy&;ovIArWf>tNW1<&;Z- zaItQIDGXItdR;mCB~UwIP9MBFu;jU}e9;#l<@LteMIt@E z+K<@+&-ctJVF+`TY%CHDywCCOb~-86Bf-N!Pu&-n2w?uudV=^~H=P?*WLWxe{bt2r zWY+qf7nf%}3i@lr$coOHy`cW8^+WLrKen<6(?L88@i8 zTgC+;(qt2-lbraAj)lO29d$>QLocfE9PuQgDo(!RM+J z7mKg0JuSNX@lILYKPniT_io`{S)64IIM$t!Slj#c zU!(<1csbsGE`!k{;fwI9W*^x(mZ|$M`2fzS^QS&HIV@g_+t$Ag1dTk!c$j_UG?e@M z&_ZXSE=8xb)!kNjKa+noe$a((uonFQcOQ-1J<`v>S9-c$wiW-pE|w5&1ipDVvaPoS zt%kbGn;Q3hRVAnpPuYgqv}eX_5%Gt^ph5E?=SJtKvz2NojGD%X z+CBe6K7W>KRnP1hc#THwzE&HDr@4MscwaXE$TU@v3~;n)<@AfaX&DoKvTd{+6F#*u zy7td~UGrG*p*hs)f^d3ZRkMM$ndG;10X#0rLZM(e?lQFXr?H(YuEOLL2EBT*OR$E%Aj3tu&?Y!hse*?73-W~HIThf5bg6w#MBkJ57J zk6PnjyQcjxTfMzlaC0T5-B`c$Z64p1VwuPTnhdWv$WuNo3uK7q(L27Y?g{8^FnfET zCyEnGmGJchn=98s&-gchj8A#PVn;(iV-EGdqsS4y0|@o(+6fG#WJPDk9{38~Z`IT5 z^+d@_#_cTeK9ZN{hFv)nD^5~;C(hnEHLzt%^#c5>{Pi44Sj_?g$%~bTNw!Bg0D`Bv z0Nu`ca1x3xGe0?xgpeUAQGr^3ULI+D*#j&zQ{QT%LsH!TkvMN4$}mp;p?b8h!Rj^3 zI8}ly10%r4#aIRw>Ia*Du#aGyKCiP>-($Kw0{!&nHVac*u;XuK>Dm2SmClf35yY&~ z$5ReHMq)6xfcQ|pKi`_MtQ9iPk7HhHSVjSp?08?lOB1l^Z}+&bt-X%hKg;u?L!5q$ zdXb9w=`!X^UI&)1wddxeOe5)}EH7v1zBB7oco~hxgcaSq_E77aFnwP2m0fe_;l&SE(4d6lOMlsSsUM58 zRtr2IXa>vv9-e`!Q-(QlLDeuHs4TcgQ$axM#?O=qzLXADnxwKv-sX@YzvLO@UVcme zf%t_#Z%~RpFTL9YqxF`-r@<7QD&Tfz3)qdn0L#5OnfYy9%+s01&qdYWIJG+?5Baqp z!()wZ49@!W<^o}moaqER>bGtJwGy;DbjQO;pk)j=3_olYx1|qsGI8f?oEQd1!1K2A z%+eh>Who5X$*KM_=+Q&jQWL#TF#QdthUSfaqOT)MZfnX~=$*r7KcNcv?^NVhfPd18 zTKp0>v~ls*C!q_e6*`!t^o)Ber%QeTk+6LEmJGtwO~Rb=1J`|DRBv@w4rB@a)4;4r z0)J!DXW7dmcGfEf?siflX60k{HyvH102f;nrA6>OkY-DIf@G?mt?xlNX%F2-6sG(1 zl?c|cNPPEa4-6-^&>Oy{dPFy#o8StFRGtd*Z*dBgn8|IUzh5$Y?5X61)pMXR1xnsJ zm=B>I$_#|_HiAGyayD__V1R*v=vX9a7OZ3{p8(^Oetd}gwjro;7n6GjiSmI}?%uek^=DMQmx zOT~53Sw7hu#-IV!NbGICI@sI8N~^=AVu1qquu{}~ znKJPF#dWfmqsjo6Z;7yUFz-ZLd`ZhbYAG0N>SdZJY401G5iKss2PXAa0gR#Tclx-P^_f1Bgr}#&_ zPJeU$f~TV+e=};+llap(&xR%I6FyE)p*E9!SDNoae?{a9QU1)0uKJ*6QD9`C{!{O- z-(NcX^WUNh%?$&qGigKr0aElL9G+%d9>g`j*K-DKSBd4jg+H%K%G3j?7rME^lV9VgevAtX$B&E*K zkL`CD%{_)qQ63}$Ht;({r)!Ma4sVRxx4oh%>|rv5YzM0fWXKMGX4EUE+f9gu+%05f6Z#tKb`K z@^d6pHUom0CoLfo-lun5@yPK1$eNTcYds_Vff=K?qsyPnAhY;O+Vs`V zBzn5{YkJsw{oLkZCEG`@J*U5kTRDM0v~!zi$d}r^1iT;R=Ram<= zQZ(teM_aVXd1fx^dbglf=U-AhM!8E4Q@zRsi69^Sb(k!buoP-d;n}l&jsM5HVzI^) z1ik~%fR%&&Md|+)>dw^0K;Jh>XUy?IA?x)Am%T-6 z!A^H)5GK3<&24I14eqYT8X=on(8ozZ_^5Ph+@G;agbFv2GY)2a&_!i>5fO3(# z9Ex11$dNiVV@-%BIU?eF&{n@ihgpaalM@ro2XEvg^+~e(suK2%;AvEC(p#ZLS3B!r za&Lwb?YDa1d27a-5pB6;gIfx5Uvp|)Eye*mjooaIaQnz*+pD(iLF=D71Z2U?BafUV zVlFBCe5uGOt`+L{?|I}8;Oa$0K4ni}A}EodXy0-NoXx1K1b1`)_7TMdVcv_b*UaQ$ ztg*{h9l>LwDx0)9Ktp(9O_}C@?xQy+B>)_RyTIh?7smYj%Th1Ao1Rujwm0Gv2nhNu z$|U}hms9}u*DMsz30h4g^zW9dAub*Y5b}NRU&3qk);ba652lRf5>oK1^y?HpJpod% zDWRbMrA9}+io5*bmG=~`*5DXYoxkOPY@mSOmErh5yg2<4uNvcm^uC+NEDcI`gUU@| z%iCJ0E9B}}1Ix!K`%*(-+=G>(!Y}`IcKuS(vy>J6@JjAkilKF%NlDP|Oy3G&2v*uD zz%PR~y?2`I?A{)zZnZIO8pfPbxKtoMUfS)GV_ts!d6Nkzk;Tj+m-Y3)hF&Bt_0T!* zVH$5ZBcjHg0nQ5!YOlrONaJlc6WfyRevNF^9Q&xAS;n`T5}?Q>a>20+uO1$^Q*U~CA_&mzf9jLnX%q$Eac6=J|_gN2kiyOS!)JxAEy##+?uXA zJB}$og;|V^wd4%jeaVUJh=nTVLN!w3s-^MT>}J;LcGln2^jAPV=ciN`*DQm-)blLs z#>lO1i#HbRf3g^US#quruMmRjk&WxT9VrX(U+Azq&(|&hm|tgyr%<1Q-A}_xea`rk zvcc=CyzcLpO&;z6k$5HJ&!dYl_nKN% zAcM*{1oZg+(D_Y38TBmWbNJ^O#Po*Wxi_fLn$Ee(m#K(r2;DWSZuTC(A$44oeeF3g zUkqBzUgfvCbIPXn0)%Yt{4NZ1zAdg4_G-{T{j><+!ITtn1!=)7Xr;4t#Bj&-L`L3h zrysK*kxQ)Ps&&g&m(+apvnV&hxMh?fy4l54=kK$<*tLo5ga~$ej29gHhci9*8`hlsx6M$lA zEo8-)kma`_eLs#=skc~ryu}2|n(%UC0>ihb1+3h$wln0S@>5m<*Gub{4a@>Wz7+9$&D*B0{gcMAPS9N3_oL_Yeycu^M8NlD67 z82q!t+@($Sy5mup=|ejeU4Jvz)J<6ZAVlYS;@yTg`WN(9KT}t?;ay>hKc%P{6IY`m z@rLPQ|09Y}cgRk8*({VkA}!8 z?_NJ&sPbLDto4p!UmESfccs;oa&K+G( zE4rvuu`pj@F>-g>6MB1Cvjg{G@ahrYQrEdgiJB)qf3RvjOlVC0KtA2##sN20ovs)CdoKK`(%x=P0%&0 zuI7VAqY)Qzm${%F{8)L43VC9zei=GirTR%@PS(x-4R&C!^noxjC;DCk`WC{0R>$e+ zsfLH=V^db#GO+uLivA+~L}caHpylCO@}C9MiJ!k0^-k_P~gcC0kxX$A%!E zDiF_K96Y@46JkoB5I5Cm^KB}rl!k8y4eC?MiN#^#US$CW2aShLZ|(?g>*qa-X##4* ze<%k$p)sBvDo0wU48vkEy*n#QN%t8ZCPkd-5XiS;)dJSgeAc}cxNI#cmLb`l0lQL0 zy>dKsTQ6&&#pCoRV8t|@-=}gtrAoA{OVY=<^{Qfnr??8|n2G)yg35<_9hm0uS zojm!hrQ20M%tW|V+RLX_lE`U%zLB=BU#ne(#|O2}G%Dd;xSMfAF28$qRLGcUFyTa1 zMXTdNOY&lxT|nQkdeP5VqCgGdx(QB1L536k2zmfG58-Fm7yn0qLes9;cyv+S01x@; zF3g_Q3bk>Wg&sl@KJvl;$hF{{>7-<2;6))DY{ZlpCZP%ytC+_Zm98~`tgw%&(4x%nQ;z-jsf-g6PC0cP zJ5MdZO71YtI^{t0)>OFt=ZxCB&MtzeA1nCj-K~qoc>~b2s_uh@6uaA7UfrdD`5#{P z7+&6)0MF(o&+Ur9@=@5oR`M$^s?~eN8*8d!f}a>ogq)i(PL&`Wzfy(lg1}n(OW1|- z5BbjAEF7F4+qlm98av0+3)TB2XS|=mNN3oQhh+E??S!nklTyU43rt?!va@AsSG9$S@;^tW1UAMZ`6L z5kGNgrepY}va`L-C2DK5{%ZX>xiWdGG0R0R5nq3QEmXuPnHAHO`dkg`tleAt<9@Gq zZLvdLH0d}h-u`gLpcEUZM6PqBW{eX;aGpnHn@$6a-CmdK(*df_KoxG~Z*0JjOMk9n zly>0F0I+)Z`D(n*kCF>0FW z%HoUE9ekRQ{wouR_2V?zQF`xDojI<>)?JEWNO?)9IC}ak+-u_-CQnyYhZ*-+_Fjsn zW2t9EaMkHNpLcu}J2f(_CcQx6PL;XgHseoJ>HymwuEvCE#|-t0<-dMS_vPvY_9yqA z%oWZlh*)!le|ZkOMzIn6;B$c#ng-zV6}H-&eSHd!Ci{F2czB`<37;#xO-no*uQ68D zAaQw9U1I%R;j_U_vrc)I3f_I7H3xeb--wQ6FdZw(J+h zpVWd-2a^R)xH4dQZYHiG$dD66;M&d7!ds)IVw+vPDUV?1)DfKb(EF^AAgtKc(jin8%|=s(W#HK;r>=M5G%ab8zl`Q zi*skPC)zHO>`zj=z8?%4-?$uN!u2uX#;(VmLfKR^iJJ$(Ur9xGad0iCnT@2=@#9sx zS~bp!;mwQodE*aRhrXI6L@@boKQ!A^-cGx2BkiMteNoOP83QU2i_0T>Jek`&2kP6v zw4OblZe02-Yy9bQ3|5|)CM8lhk$EniY&r}c>o2h@|Hz>#{iKEoc4yf|$A9_Sq)kRZ z-9??gMNU=Xas4S;hVWMyp|@I|8o5>6 z20!5Y((uT(sDlfPq_L-XQ-A9cuE40_q%ElDY==Yvf4HP=L*=(pD(wT|oFMMaULi+3GCxFU`xr>E^pY}ZE$v08aP`2 ztUAjh`LGz}y;`>Hx4NrCe&g+lo$~)VWxo7q3wM%kcMEbgiAQqTHSRjUgNUQN26EJZ zlQ?__=e_qZftS9>8+Vf59C$Y0_&;p( zx)~?JiW$u^S)~2D#n*b`F9G42gh=1r@8dnbw*@n3ZtNBTEsA$a&WmQtEYyuow}c*@ z&%n>7lU!Uw{FpQO7cnLeuA|J>%laBNAFud}3I=0VY`^#w(j(J?H&Xp}XBgM~ zW%k_VFUYwT*z{{sri2>VdlF6hWq-+k%V?AI`5rxOG332@b)WnG+#v=#ReNaJd->Mv zc>zNeChzu(^0^~@UwlD!hG`hZ!-p>43z~Ifk43@GkKbr_$`*ENb3)HNcU^V5i=g0A zi7kQgdyb={$NzK;DYii()Su5zmi#xf{&i_!6XD1Y?noKi>%n$=wkL?^j7YiiHhqgk z$%XQ}H?UR@Om6LG7(3}cmSRs)I4fX#=USMo<*cisizPa1QSYo@(De(d`c7wvp-Vpg zPuwR~cl-&&abFr%G^|Uwm~fD4qPK|t!9!pH_D&SUnot8&K?lr_?l7wdGy&o|C`#{1 zpHefYF&$5|uO&y;Mrn8a)d0q>=G3{bb=L#%+`smA+mrI$cz^4i>fK|tsusX%j2j1~ z`EZGXctj%y7kI0*D@u4xI&-d(R9KFm~md{|C@ZgpCd5OW-0E}W}+5Lb3m z)7hv`n#HkAohBB)_#;tvg1HyayfEFxK@Vnz7Qf%*<|}AS$qT04=PM42wdM5Fj8?PL zfv0hpBE0{#Iwn*Ps>oeFFqoW8gD zpuuNzfOOl(sI?mX8>4E8t~Y*5_<8QWQFDu)rGL}PVS00F@f(xt6w5kLQ(9$DE~@b^ z!&$QKX&7nA2>t;4OV7TLpde+u!f)T)n^a-43li*--=}?d)%z>YltxJZF_~l&DT=Ko z&&Pag2qXdqT)~@GX6)&G%oF0x`*-T0A_V4@Lm;#5ZMS5Zk%7nb1PHUUMMz7bn~B!q zWTf>|l4T#TyG}Ppsx#V4PoS^-lT2{T0p-=>7|3@eVy^Q-310;ja2C(99&g@z#)?YN ze?S=h+vs@(Rns0&4O=P7&063ak~_MS7T{NZTeYGhp3tL+PMf4W^UGiQaXvnGHc3@Q z0kzs0xbHV*55T7k&&CufY=Ta_sAzNlgt-O<2)2ZMi$4(3ifEb!`Inr?<>F_LQqT=d zCsnz+^w|yTV-4FWRFVC$KlA`Pl*GOf6~J1T4fIXN8@`OJCr!*@8_{^|HduI#?FZGH z9p8i=am`k3YH|+1G#*oSj#o;U$Q1&&dW82x3rZ@g%Ua=)1l+VmFn7cWLsT^9qf1VJ#RQfHz2<31@J`QiltGYaDWbI)660YjSw*m6}R`hfAj7k*AJay2w zR*=`{PWh1w*hvkp&LJN*mep$ig~qdO5DWFhVF%#yq5Ro(o_fwH*~x-9!R=UOGO?*z zxu}XbjTD_uUhe*NR3*N*ltx!r9zlZ)Pv+z#z^Lu_2Ya~VMigTKQ#BdAZQ3gCVe{W+ z2{bL9VEWV9)FQ!l&gmyg0;Zk{ywi0t{1;*l`msI#{xGsU9ol;uaL`yG5#d6lGogir z_H@PrX5F`}`IYHQtpb|k3M%f)*&YuM;U(sg#QBj(G&H^jRCJ)qJ9YkRMnO7d8MOf zbzYCGfcy_AIRX;WhDFu7Sd*H+gh3Q3X|6_l^!%IpwcmS(M^?%h>u;oU)gPh% zS*a}B7x@i303!Fc;R0kcE7+anB!d7G;#bUidZK8knO~aq!M@YloZtdDykQ9`5EflK z06COwg3P2Tfk<6Y6%97K4#w=eih89_5DP$BQ`|-3J8JftNQWPwsMC>fB8GSPsekyS zc!)Mt?$y~xw*%xC`C(s1z64$%EyOLTzHi7WlyhY`$$gaD;GOa200bZL~4fD4qTq`(P2Ac)mPE8Ek4kSuX}&NmX|v@jdBN+|z> zHnv?tVwRPvzS?pW-A8Wo`TkXFU?%2tk$k-IizlJmya;byeC<~>-{a1OoAN{s?3MbN zCI{#FjD2aTo{}rvZS;u55#@oQ+t?P|5dCmCuBm*Wu_0ljVNtdd@|;27Dpki<4=oL_ zq}(4Yubj9m1T`1#<)Y)tBT^iv?^F#HD{B=9&LmXKC5^cMEq_baU?_GW)8_rnt(BAa zD4%VThB^qYsb)JXd)g}$`YtT*5D*Q4#mrp*ayNhZ-hFc=Gtx?FIPD2Ez0Pe9Z^?;fE#+@hIg(CT$RxeVRS6y^=*CkUk*vC+E9VX3kv zgX{Nfw%krwA#$muCG$e*gtaO2gvu;Dheaeu$=h(rg9^&yKjiTtuOHK+Bl9A24oVy=Xc_2EW(#s2wx5rscUu9SMomIDDBZ}Vh zS!|91%$yGS{c~TWjU8F8XcXzzx>2&xUS~w&u4$jE$xFwZH*)Md^74*$WZ+(INV%~S zfzLxBQ^CTcaVJ(Xc{^`vT_3osAfL~TTJT3o6;+ENCvtp6}JEZM|`Duvu z=MbvxdaAj{+_}=T2ogFcmU@KaX zmfvcb$=%P|eLbu0F@j_tuc>CPOuYNtx*3Db?@hxu7=ycq(N!lhJTn=+wtDp6_F4 zEq^^1i4#69>c&4IbMlVQe3!CLe9)D~AT>u`ETwFWQ6CI>Wnii%U`nZKjR$vW@i+Iv z6k;30i391%%n1tO;oBm4@w-qTLp1BIq2DTUZaJU%@Znz1K%RkYvPX&)oK-G66k(Ub zOhZ3PN=sEo6lh=pU{73n+h{ja<;xmK!!P=Fz+KIeYWzBJ5xoI2vXCxKat!1NkQ?AH zk~RT=RYkO3CjzqO5gbMH+(v4BnKwDk-++m)XVo+i2zQjYhrjYEY8YawK8@ z-#umOifg#q?!Vr|-S{)+HLZS=;<=clhePUE1jKN@!sWfP3UduLYTYDE7~o{cLOJCU z$D1%LvY~1uieT$%KyZTZm*?$uro79y0_1Zofrtkg?-=E{*EWrAO$fi%*J4D;ZAG$v z%2OG=TO*8dp)Z84l=mfm=32S9qRj2GM&Yq;Z)(!WkcOYkWnB33$|$YV-^j%}sx$m$W;c8Grn;{t1CW z(Eqk{F%k-U6)5|wv01opeQ-WM=@#hBzSw*h_#VRSBxQf<8P#z>CaEP;>Sxy*p4z1G zCgjZ-qmoxxrDw&T-HR&h<-Z0wAeX>{jT^g$RJTXg`#J>urKB#|4^JZAKvjoT^p=)p z2NWR%%x-o}q1aGV^3p;kN}O?%ZuK$J_?)deSdPiala!4$pxz@%B^B`=pV;~t7g~`f zBine_rhl=oO5d3hKq-su(oQ2ytA75QJBHt#l=;oBM=#_TCks`0^#&a&7wLVhxl9A) z%!Mlo>C)KWFI(nNjRas(`TC+Z!sFDnU zWqyi`3j=}Nm2Ns;(G^CtEL}4^HXy164x!1s~~spH8eieve;-_(|?A|J>-oc zt^h>%0oOnsG`~n9OSWs4a{aLHDUw?$DfxZC**E{@=YAlGNp@?vrF`_xacND?^wQT| z^V>}_9G1r-e#@*CU0L#}t4sAzxwU;4ZY49>(--6w9wqX~%5!9lQz<0hf zPY%EbR$jnjwAAk?uT84lVUW)0mxHL*7cxlWfK}j8@LJ>1y~E5W)3Jukb7x1g7;%Mz zX6$c%lh!+FYdi^zN{zsM9syNDtbD6km7cOcBn##X zuM40W#Iq}-zkeJ^E3j>v{+kpv>3w2_jbYC_SBou&QE>e<#g$T7^2A45pT+YNq=pHj zC`wl~{;1U7gD?PTedAcvwNo1KQdjnRxp3EZQ;|1sBKIVOmea#Q--;RU4X)Z+r{7t} z9gm}ZjD5s8mGgZacFn4&8~9T#oPO7G8#Gl~nN4|;R3QZT-NYe0)HAvN$#_}zt1B^@ zsDC3zm;PZ}Vl@q*!0trRuoPsEAF+D?WL}erJvm>drD|@mj3xDu7Ye^rJE{l_Mr|(N z#@8ZqowSr7Pd*5-1m)eB74ONB0CLPSpV$z=t}v9fh4$Vmxouy+-n*01b=n9U%FBlO z^SeM#(_D;ZFw(6{!`&D7AK66aUmz+vb1KD!70lV`@m71cO~PX_xha zD8D;99y>qs%=Tzih)6o!*YFj@DpZgR+2l-P2Hc_ZmZE!2%6q(>S9BU#Yf%G5a-Vb3 z1?F0+b7kYX_gGKN44w#BFI!w}maoAUI0-f91?n?R859QHm1CQCnjyibYd?_r7?ke; zpUn*`#CASGl8S%d6ELVaxKShv(xbCxv91&_8KE$#68vK^}=~LV3_ZS;+6NwW@|NL z-u(KOW~Tm$AzW!J4fF>kJNa8XJY{`ASUH$ISNg-sSb(FHOsOWdoFN+dR_#?nn8NcHe zha}~l_2|YjPot9}En<}ng)u!)!H}qpjB%H`Qoi(H;ww|Qcw?SjW1fMFSX)}vx3KP| zM)BkeY3RvZU)mj7&4%+RGin9Y^7x&QNicWsj-RPZ;?r4$5LXNL*FlR;fv2SYRhFB2 zxMf!0_K9(>=d?pZ!Ms(^eb)cYcNhnP4>R}ipACKs39l04fGl8OazX7yl2FA4m#GJ0MdJcriB)1JduWY&0qN<(kO8Dc=p zhkdmmxFgo3|9G%%rl7d9a(y3Wkbe;|w0jLyiS|H5V_Cqi%fRa3PM+;Vj~D)>xcUa` z6OwVoTw!*5<~)vTNKNj+lblw57OTp=>NjsNmkXiv8JpJQkME^Ku$gdQ1{ln{%c8%py-hE0TUj}%7cFF zQZXJ#OQ$^Q>nYYs+?798mQCAK~dY5twIum zTwUCs{xy>Gqc2LDIbK@Wqo>#t7M5$Y9~N#=4tnf2!)md_ zs1HTvx0LUod@AMwnMwZMHvb-22UCh&vX^g#A6&N*ZTz-hDm$0%fje7Q{5KQI|5|u2 zaVIsoHGBUL*fTbBqL{i|-boV*={r~|3n?0@5u8<)Mx4rjl1pZ`nKfRCw+uRSrz*FB zw~t}HclGuGH6PBrrA6*KANMr-IUgiJ8s@ap1Jn;(TFF<0l(X>mUJLlhzmstPgNVCJ zP8viTiTXyM<|h@ppbU!K_U^Se>71~1eODUIf--Jv+Xn9osn<^;G8in3_BgfByU0gO zDM#qB>QrIj`;Fm~e^5rG8^X;tuV-Mvd$w%DQPT{T?xr_*6>n5RRKT5wHj8BBgyqs4 zHW>lR+zK&>g4#rpL4@5rF8;PE^<&9)%F0a}{?eB_Me5Vn8BgaV@9XJ~$3ZL4i17cB zhm1j}(V7WWp#wmp5#&!%N5zH+j3+Lzp*%+?HJmypKnK0$zMyXbu?80*Tx`YP0pEvK z&hhcT-x>$MVb|^!+?potU?3^VBvMw^>s=4td~T6F0T-?M7r6UQ*~QsQE~KOBj_6CX zx!*|l+03ewh`*zL_=w$CNsag7avGc7`J-8X~xGh6v~cZY9;K*{Jnyc>#?RgxDy%q?k&3?zR5)Ob{kjfVsmxZ z7mU*E7<4DsrNj(%Or$DnvA5P|mqf4&%4(v>;``Dsit$6fmDqe6q zaDSg6J{9#9$i?=4=OhX4)6DdCtvXoLev-ZTX`=DM zVghf)-7a#&rXYWE0%0Gsb`sHfr}2^In~wsPQ^*B5Lh)@=$1wCS7?5m2wHO>3_`CYQ z6X%R23n#syV7(?Lp|H+8Wx*TUf}557YOntgI0fgq9S}d*)NH>C@dlynoh4Qmiv>~e zv>Xue=t1N8A?i~X(~tWb=4Sr0Zqf~_uX7c#^5=vYNK4Y~u783a4O%kiJ78bWWyx8v zWO}ot6yz&RlY$N&R!j%pedPQ$z=!1OQB$G%M)mYa|LIa!f>Du#|1M2fuBm@uM|vwF zK(f>FxW8cifCKVeHpmvsw*{ru7q=}5y!D-q9Cid*zi*N)c49kTQrQed%F__tNW~|~ zYi6&!VAAH0x=zd9sB0Ojxd~O)no_q$Ra7vE?#xm`S$xWeMGD3!)Q#M|B>q! zP_+s7KlnTkItA7@4NVQs7Y;T|IBq>JkaZ`GzAqq+DWRkSTMhqlTnaZ+BmB6Hy)LB* zZC}^}-QY%MI32@Yc6i=c0rMD%X}8 zrHQ&zPAU9f*iRKlP3431jgOtKc=sR_loViDU2o9JBgY)iqBff~{7;8yl1YV~-d>iL zmx;k6urAn7(ACfut)R+%)f<1}&%4Y-rWMq>H4fHrcSn}7_1j%-EV@F{a9QeayaivF zW2(~gc*KTzzICqpq@z}lo&2|^X+r)gN_pv#aZG&vJyy@-qCGbQHGwx!U{7R@A(^!)esjqQNZ#4y0$+vtD08KD7*J!RGg&qP!T?wPJz7X4GeG z4t}V^woy?>)DP`9$kzIWx1Und?wN_d0jGNi9jjHKD%h8cdhnH6x2x>uVwjAGVo5$q znkC2Em9*WB_>G4X%GgBjW7mjiFRG>YOgFKotz+5N7P^r*VIiy_@2y;Gu;|_%js07_ zA~lO`{Chdq14e=gd8s}Z)|fg%kJL8`l49%$k*QIhD5`>zG+SGJZY^kqAD`f=LlM{W zjpw8`qgsK3|0`amIIdDF(OL1)2R)Y#h+fqAcWy$5_0!^WUpPt4!4Y{Q<7UI<|hTMnQh}E=-Nw!6jdoP={B+zpaUZu=z41sEYJ*08cs&c z0}$tJ$hC!^u)l~`F<6lJ%?@A5&_u^8I{rh*d(zKxqJmOc1Z4sd5l zQM`=QkTgNblv1j4s*Iky{)HDGIX6E29iX_&Y)9AL1tnKg)7AZtsm(M^+^E(n*9)rf z!GuK4T+BU4P&hUZwVbhYHFFYobdut=j=(jkL>}1!E_pZL7tFb@97%r?@Vqk{HVS4$ zC1}k+tw@TTZx32S>ZQ#1ZM&3I#*FnX&j(MbLsaH`(`d(SNaPw}(VXhr#TnJiw8}97 zIhjCV6zh58k;gq9>m9iDA*TRk`X(~gSL!&Cx{XyC`)`S7+KNcJK|;8ldr7*ug&HVMAPV2+sig=6WDB1OsHFzvIU#a_0+hYEK3KYCiLZv%mMpULB5 zJMmZk%s{q2a@zpG&DxcTw;Ow7*#)V9M9CL9l|-cKx9&e#mAf%c4wKCZj6X9hD-t&(Zui0{dJ-lodfC`W|` zsb~Z3R?N}-1dYU#9VI-#h+FJfsln{t>U`aGvB&i9l%0l?yHb90oY7=F1YdvcJfVDr zYLar^k;TSot|th1PX!y-6-y=>rHTd>B|I*kohGMYZ(a=5rdtQc6T z>-$FD-l&yMDb+!W1=Y5anX}#AIZj|ylD*{Npl0q>)JSbd?Zd+#Chzxoi-m1T-~rR} zA*ZIFs+JkDnLDqL%Vv9Zm$Wpaj^2X_S;-v!e-``4Hwsp`Q-~G%0QT@CZpYaNgu?OU zC#aw+z@On7POtcWaT;@Gryj{N-Hic?)>Y68E`L# z3dxG-bFR79G$(DR&n4EcK%8e3515>u=p&63We!$@xBATkg!jx-rvUzhx0)=mzQ8@l zsk!V4XLOYn%3}Ho=Go;-%M*9yO-_L19Yts+Y_9}m6)9x4WRwD(5HCg>qa&W=cF(>{nbnmQI=E(mk(bsH=<(@@Yz*G1zF|X>cC%^gk^&^%*7_vE;u?{*HeyILkL2?huuh!wb6GZF(y18_r zs5}$|O(DIUIn7o@L_1`pBA=My4`4LveILT=whe(%JYzMZC1=T_496TOPA4<%C*KV? z7*JB*@`yz|E^cbpN>~-6>>Uu>RHe_+z`c#bwZXpkPA`U^OXZXnAl&P}gh0ZL-Zkcr z8I{(u$ls{OB;$X|-hv03Pcx(9fq5E(%I~*^50@b?{m@H?+N9p(vi@%VPUnyBJp8mm zt>(HDW9*xv+Juv8rBpWo;(-24%XbGL<=sHBy})cbhtJkz9&#D?!F5_N@RDC98Vh_k zb1Iv2h)BaF+%i8U_{}S4#!V-+it|AQSN$*e&wuDxsiGfkiQ%0G>GyxS{?q~w+9;aO zi}}|QKc+n!lThD%2nxvBZ1)A97y8gwQ^#iu`5gWJD5Z=s6D;X3FIyMKV&n$&M~*XBjGmmO{GC3MYlA@0z-;NvQ^fK4gJJ z<_}9XV7ARMSt~}nyLMBpX4>P{h!~-$8y5Qy$1dTjr?R9|EloL8>};ixW&BFo7LMD< zi`>u28xvoLP2N!t8*)s+3oF-c$}zz4=s=UVrC?9JZ(4C(zV+wvUB@of@af+Tzvmxa z^|$V1;Y(g!Qvc{|Pn8UvRhA1yUtJ(es`eenkaa67-|=`!Y1=-%u`Tn}YSdSUeu51m zvf7G$M12;|Exlwb}xI!VsaSb6F>iW>k-xnt|siV5$NB@VQ|Q<>oUQ0 zS0|Q!Clk8uGhopsoO0Q+pjgG0bzSc06FTv0^zKn;Y1p~NhJy8K3eHEPgf#3v=WeZ{ zpH(a9m@LYJ6Q;H(Z39(}Nm^ee$sWuvtF~QNqINsK$|x`9TtN~HRVf~Bn7QeWn@d|G zzmTWZo3smV3TF*PC*k>$@aalyuMDGqx89!At!vOXpY4ulQu7#CZ=9W`|HtV}eY5C6 zZB*$jV(&CbJ@5yUtT!3~9Sb4uHOgS|P2J8(_dYbohdm82#H>`o=9;vS`RCvp2jNbA z*Y%UZVdWE*RVQqiGk@&4%c%fq9hMu&mBy=KLun%NVir0FU$;YQn7#b=TU>r!er84F z@Er9acwuKbVUzzlyY>E7UrxGxgJfmS%8}Pch6KwW7<+w6`aA`oe~VkYyU^G$MN1l2 zpt^>zF*)aKh|9Q(+p@HilD92IH^)e%9S%nz6WJ+XtM#X(%-8AU)*%mf$1=5>Oc90;FRCa*F*d9(2TmrfU0pFwJJ7A1u=DUJ z8KO|HNW~u~K?~UG`-V~T*J$5}!BpmCtOp#0d^i^?NBeXr(f8ZDdM2+Q??g|iAhp{1 zh5Jm#%ie@AV->o@riDq$&l=jWgU7xy1&p)55#}s-S_Hgv0#oeBuRmsOp*aaYN-D?Q zboTeRo`!mnz|l9R{ojRe_^%cT$o*zmtTJ<=LOTzpGv~|=8ps|-w@?Sqov(KU|9IKL z#2W4w0!{4a80rrDGzqA|wGDO9yeIfCKz}r@2y|Yg#1x!g>^&0gQk#LC5ygfLezsea zt7pdi+_8-Sk z9;ZWA?sMrX@hidb-Yh;>HZJYpbRsazJc{3KREqLaXMalGQ7(2%xlwMFGF$zG8oUT_ zZ&cfv(=54-aRsa~8H8RMV<=+n4!QFAr&ObUT;U)O)uUgBmwztd*%#ws4z&O|MQV>g zZu=q!p7qoK+q3iI-`#fS!NJrf%I@z)wi0@01Qc?YSk2&nei1QP6U%rqw(G}Sa7)r{ z`_{=|uiKOlbUm1SnW+8(E*Pt?IMS{kHfU*&8p+aC~cIjl`6kC#q7!v zyDNdh!e4#T1BTo>GxujBG-^JXST=^QrjlQtCUxf5rTXU$Bi^RHmr7w zk}nwq@`rNext)wA(?lL!sSz%^S+-vA=Kb5ZUPiHy$b%PFm2%s7Wt3;rImcGNq5>WS zlajP)@UGUjyOulso-n^{yIB7hIeE%U3{lbaBDh|56_+cc-xIUTgE)C;D|-jq0^$Z* zCupzYK7YDPP-F>?=qqU^W~C||Ds`^jNZ|JFMdqz|*5y>DE~QMKhmTDK7l13fRfN6R z`?BGH8B1ExyM`@T4)w3kGeHK6cN>~%$xbs!#p6Y%=IpSas`^$ve?$1jY|fu)%Q^Re zKD%C8EwinHwfpz~u%VW1DS`73V=RBP_Icj)DFK9m#ab5@!}FGPO%19QULY<*1`6+B z1Lx{YMi18oO=2!MC;ON$3S`%seGX$fLG4}oVl)qC=Ho8B;u^kl9D1q&tJoOe9%1^6 zpPgUi4Ja4nUgwo`?ax4?7KOo2$Snf3-(T+@eD=}sop#s+D^iVro!l)Ic8%0!`QDRe zwJPOQrt{+tx#!HKC`0T;vYmuPu)i`G(8E zlWL!j?)(0h$}W$d4>6wM9?78WtUMO($Uch49jP||aTY)RKICr?x;>Ljj?LoEqOw@l zR0dZ@)L!no6Wx0 zh0WiW>s+ftRMAQnzQuz3ORfgTtx9K5Ie@V~n}J1HniBW|Xz4f?1N3DNn@nF6&NeR>VoJ|nh@c(y z$!7aFZzK^cs&MRApc!c|Q%BZh)E-ug)fc#(0ib03^$O1!4g*)cTKeIKCsn|&s|2YrGip9Le(Zu4 zeY*~O2$KwE;xuV^)t9NBH!=3nk`BS&yla^|)AeI$5-ewM1$KTwiw``Gm0rFhuh)vz zlvx-$iY8{zy>SEFM!2OZ;#-@@02Nf?xUYlFla`R=wEqoYA&kwNjrGk_MUkrQz&?2s zH<=IpAnI=%q@eE=(FqcmQ1gr-7Ukdewur+hP(en;A5pe+cUAlE;RV1@5g3)n7)J^@ zEr0l2XBy!gVDV_>JNqxKFVUoR$;P>tz|#MHT6a z27K5=bk?T&9=lYi9tYF2-auc3vZ{hpZ+#Tb84HswKGufirdkHJlux2&PsoLep(!x6 zy+j8hdr#A;kHK62|EjzPYD0@DW49?$xm$)_J3mq>rPD9HN8Rl2ZpU)QHwN44_MF?= z=+Z0y(3KmX1H#T7W@jR{aaY(^jgAapUt%y=YcmV13f9QA`3<5$!9&HKpd4iqtDlP6 z=xVdyf{mjwc!OhP6CDwUf)4)(NpmWlP=|K2u3BZdF0A};)-@cHSm2yaFrr%l9+;vIxQ;%GSiHwM5W6_B%I&n%_cK6J(4A!%C1%5 zxi#<~ZyPBfN|5tFHT?UJ<3 zVK!SO$z3G3B_a2H%&|F#u!Wd&b8Z-hVaD+7_xtbt_xrE+xIIC4GI(;zlQ){eIrpQ~y=(hLtaG-DB&+8}_xuJ*+po_hu0p{<2xylkrFu zYwmZMrCkgal-}9(RghZLs|IkP1* z>tK2KVtveYzA>BBO6rG=dTxvj?9p7MPUCMS(K7kGVThs%P|fC@yXiX3o=+VL3$CZBKM8to z6hdx0JYIHlxl;;4d?U@X*BBN;`P=l#jZ@OUUbm7#eE)&Xxg?)6w=Cao2qj_L-7?XXa!@d5OZn=p zxn+*u2*5>_s%0MbO7CUx%^h9R8yTe1-PAE%$kHcA?0r0glkX&?s#(mJL5;uC9aGUs+Y?a(tVkd8%jEO+ z;z`*G^B8het@&QLdNS~g+ShOltDLmu8Ug+WJbRcIJ&B!AjR3PP zweLm{w_AJ!tcVLt3TSl_mq?cl*-sDh=F`%@sip2y@Py8w>aT}HFa!TnGse>nmn;=R zY>`Jw6n&e9(mHh@H@w@{Uyo8|+XEv4_GH}4mnRJ1>H2v=-hqut2-ggMs~1%*>CoJu zip9*-@D7ssF>d1uY0q7#1WFWJRY968e)BPs|1IERTb}zK#WOA&QQNY%vwn&CRw*FY zIEwtjMxRP4S1>b=S$|48$78w+`LXvPhj#N+TmKj9^3^D*&G+d8dn#-{vbT3vWh7Z| ze(OeWaulb9RxJuoWG&bQ78Lq=E-lnEG#jcJz)`(TGbCJLy9v+P-^|77t^GunZo{|Q zxBhbW4h&vp*aDYmBSXS8yTAs4gmW#2#twCXV~(Pe>o{!S+Th2+PMU=fHeIRi*h|B# zjeCl-)``oR+5C!dE-`J5X`dT?f2;MRBW4J^tovCg5<;OLP`)CSP%5)e5~62$v_!AG z$DjJaGVzF}Cd`0xs|%UR(USLxst{<4^x6)rxmx?Ud5L3r*7KqSdpY^wBod}oqAk#z zqtjY>w3qa2O>pr!qof?$;`RV}spGE;5v@W@HW*$MS{5Wc%?Z_J2+0uhs!`kJ#j8!s zS!-~C?>FnfZa+ZaT*Dn==}Y91+RoAbxp?LKi`RYmV%Q#aplwx&Palt}FJQU%N28V| zbxjUmly>%vnFfWcn*Rdu9BM3Ip(lOYOvzpgD~MAB`3H7LJ-qGZUrO~nZi(!Gn_{E| z8%*Ni&MQvoESAe=3xu*kGh*JYtJudX+53syt_2p?21e2RfSGL*u*`WVvAZE- z?>hJ(+tDf@26ZzaHjk>q;&8lIxGm*td&knpY)+`HfEZmFuOZRo8w4Bt4|V>h!e(2p;>M7;xCeBS4F8yR{Fc)c3mj$BfVo?b}{lC&)* z-an#Y(WdcDl>4cCoi?vfqx}Syml_)qs<{3Zazo3Z+ToBH+vL+if&7lb4vZ#@iz?$R z(Ec488CT~hs^hg5JohrSAtIN+jRwFhRuy4eVpWd1odqw-_8TS zUrQ-60q4q3bFOq4$gxdT^-~@Ef)OJaO)Y&>PtcK?>>!l zwhum69Nc4(zcY+G&WDq0;?_aw(zzZ|zpZZNFoTV-Z)b+|qSNw-#m@%Oy&XwV7^75L zD{LFT*4gR7(^N_wkwxF%EpmZ*3`yVAu2j?V8%?;XqJlwMEw~rm0>7-fj&HA15(WkC z|0kXmEU=}qr*fm}Tgzn?9d_5W(XvESY4Kh$>&pt=YT&4!am;07kqx2=1ozw>`6ic`I9KU*JY+HX_!^hh}P1CG> zN#=KNEmi_$uYEqbYd%?(pS>WG>GwUqiDp;4V(-oePly>diS$_*98GmN(eW{g_x1P{ zk(&UU=x?nj>ty=rW%aiqvH87#$p%Um4OtovRo+M2g)mYeo^=+yew{jRB=dI%vl=5& zFAjYE@(BOwb}ovrNKoGI(;-L?GQ2au6nV5|jNeAa=){j&W6FD_C4k0Wb0KbZL^&>9 zjtE-h{SM?$l^vbMhgiZIwqwuQNY@j95;$TeaV4XAlxenWfDg*Wo?*`hx``{iVO5=%F>_arz;`~rDecW&)rW#p`TwQ z2>@;Cm=D25Yo@=hf=c7ii~5a9xjJjh|5`Q;v%Tyo5p;-0D}M&YtqyA%ohCBtO6)vE zuhb$mU4LM};6!lhR(_34o;f`kxpO+JwXSmwAfBB!66<>!5|TiCP?9ZfG~<_dM_0#3 zrkY7)c@FCeOtk$!-X^BnKU@>h)n{(>So_L*^n zbab2IS0-k5PbtN~G9R(w&9vvq{>5*`mPPV(R6{q^8G3)RZlx#0ji0fp;QQtbL7fR_ zYB|F~4+N77ig(VzGP$O~ID`}_Q%GBS|0noSr`v;Vzn5J$F~rzqN>-!>#X!x<3EO4i z4sc$6J1#Ozh;nbDmDecH6RxxP!Q|Kb(NE!N1N8^c(#@?=;T;`8!CSRtHe^wsbz5bMCxta1X zse8e{_q)SwU;KydGvFdge4#MlUBel=S7S1arc!#TEsQsMl^l%tb7B-LnGM}8WKN_L zuSiq1{2y)8&H`WEDy7Jw?L4WWt;aOo%T$vl-RXEMlei)!IqQ3RMEzm%?t!&`Ri^&h zVV0TzmIxnA@2jW_++qC+1*dadDop;Im-eGhDZU;0p?WU3QNES+4tv~MnqS5EsW3k! zqB4}2Su@;DzfC%m5&no;l$HE`r9Es7m=H6TyD$)Om%Bq;K`uI2p;~|Rz$K0;!rh^; z)-VFBryT)**$$q4;PJkKIP)iW5>ypu{>StpxrvZKB?UoYU;{=Sq@vU!<)EI&S?)I%F9U^VvBQW zy|qPJk>x6~Pj=t_9obYAQ;k;j$e7N{DzD&Zj2sr^g)y$$0+eF(Vtubz+$27epTef1 zA~Ks|GWl2Cj@tVX5CJdb3JkR-mq4J*)S|SoopAC>7(6T4U_pX?xngqS=7v{|J|iv~ z+VGsQfr_P0Jg*W9V$1=}0XO~3_34&mjRRpHzYX>qx~Wkiscoy!yldYH3PfF~^t@ql zAsN-6TBe=RXEY@)!7KM#&KB!lZQNIRYm*IaO;z73oyh-C+oi<&uH*57jRjk-zxP-t zsJQ-;4f|xQ(#E@`Du<2Pf|9{Zoiu>m^b_4CcLb&kmlQ0x@1gdQskQybERK3XvpUQ@ z7O`U~6^)0#t6p?ITH-pC7LWvGe-qSQnTJsRG-;-zPfCa4N=V}6sBpr&Q`>#cZ^cNV zw6>}Aiw%JLWMYe|d8T*${72E+?FL_Ga)npuf`7cp%P~Ch<#xA4_E8A&2l|03A9dJ`Mw6c>Nc}E`%)6E8@_(R(zLUXi8sIVI>{hyY-RC*vjkp+S zg!Yl0y6Ydow|o!cgq0n7;xH)-2kC0Bq$I4xRggOCrD5EiZJ#4`9wPYC`KZ$^K5e(9 zv!^rDQqZeajxuW&S5b;L`))h?(s zidT@sCaBl$gB~z!L!gwK+F^mQ3im1OhN&O_e0r&MrBk_!Dg9{8g?Z9gTzVal=@%~% z_!Mi`k)HHNJe==cZyMndJ@f6%fBQNgZ!RrkCzCRzySI!tdQB?6Q?>;2>aCKdexi*# zxBR;5qF{jv;4f5ZjS}mvFCM(i7yT1IknsX`A4*pETiJFzi6uOw07D}K(#gLEFulX@ zO=KOTFz85O%vj%c>OtBmbBw$a=8bv!WMD(F;wjjYxTXzr;*jo_BHGlh?07u4Z}9_tzb03o#s{&!UwfZ=3XJSxj!bFK{R$)m z^pW1rSFS`*ISygfylja7w;u#uko#|PQ3*Z_^;355nOAFU;ksjH@1>3N{`|XG(5mR- zq;@xh#n{h*90P|EO7*(q_I4&*ffI~Uk9cXO*y&7T{K<5uO^)(LWqGcvRh{fuPvO07 za7eUrMO3QY&iR*V3osbpQZHspdvRX6%ll~xDO#zGJc+=s9{0XPzjICDZjH?^bo`3- z4IPJ^M5kb>W!nPSmvW=2_(4$q6wU~1HQJHifSk~{dpD0VR2^*EcGW@d81iM^;?EP@ zjodTdV_NAhJeH8yeI*26BXBP7KG1AEU-KZLU?t;{B1lD_6DUKGfMQ9)3y=B%PF|)F z_uu#Z`po2$;N7_u;_(+93A@%0my~Od;rGC1gpbolau^>~fjarK< ze8rPgBygu<$E>3;FaXtN*$g2hEbRy$tp1DGH>N35elE>2{YoSR?6ba=l1ly>cI#`P zB!udfN7H^?U1N^XZQ(M+qdK3>=Ct1d&0jD(G!?UtGkiw^vM)UVJGEK=3!T^vO(ZZ+ z?Hx|N{t3S?oTv6KF3l8V>0e6W5>ScgtHzk?Xi*!YLoof?Nv-3$dtvzU4(OLv(e1v+ zz7Kxy3ZS0XoyQ1W4!LKmt6@POD3MMNCyf(F_$ydy?vhVSKpkV(f8-p6^GQ#?BPkX8 zPOlbEWGjAgCbECl2CNkM_zJd$ZJQ1SiSmkfr2X3aJe+-WWhl}vaD;wPS!}m*g*CbZ zTf3#(a&Q^6^^llHr~AhmzlkYk9NKu^wZ`P(JzqB&B6AIjJFXD#?GG_}2y0NzifX z#1|cZtyOxKo-G7vf$>+6U{kD@1b*=GLyKt#?dv7R?Z`Qh_$pPD+26;E&Plm4_Tw!_ zhH7U*Z7jE%Qw=0Wp{SZP>1v#wZ;?4r)|Cka!is|X1vfItOwKc>^3upok z&v|LZ)r8mh79UXyo;E~GJGw35YihwU>yp1QQLr|gRgY!I$c);Bad64z1Qn>Pzg%;ob%35O27p$~HISvWDLqsGYm*Wcs?3Nw#w{y?P#6y|C^pyk$D6)uq`G*eE|ZS^vb)3WcMW!~9>^k< z9Uf~?NKF&zRN9$Pi?oR-5%pUwIz|{X>6Pb99olr3xNPX)If(b&rtHTREnTl|-4!NP z#~~GF72%`y{S7HJB4*6F1en#C5CZT<+?Lv4-vr1s;A_8>qr!j+N(uyT&DpIKyr$DI zH}9y$VyL$W($=G?uMcLzP(QIfzLg+#Yqe)RDbinPehx9e<9C`o_5I##;5s{P+a-}v zvBA8rX>V7F&MNCLpf)O8Jp8pRt1^D=gk+m=HuPH1=AE*|G1OPa7W#rM{uHtCF53>~ z8tr+!{Ah-5sS5SxM$4DVOO%tymvQCsaWg!s&Ha6_>`&5Njg%w7^&ij%#WvQ`RVUtG z?u2~;Whq*IdULJ9TkHO^KI_FnO;h;VfxG+>61NkD*(Fl*czJoZ%L;mym=ti^Q=o0@ zY}=4fJ@NhZ57T+BLHNi^yna=iTp|n zOEw3wR${3oLY$b0a%Woov@IH@t|uH7HQ~+BgIM>l7Is^0!3yp=U$wwY1AK^H}~RgNZ@e8P8LB~=WvM(cXaUuTs#mLY-9DVj3_ad2Ro(vT|ED{y&G7#9*EEz&UO()|4JIbC2K#^<}jcX$AzcK2G= zr{6z?F=A-$v{`GZ<^U)Xn?NQ~6^1G%{)TtHdG)Jqa$#w1)O%XuEL(mqd&=Way}HEU zg@3Y;%Bbrdr)czh^G#OZ_hdTG(*~r>?y^_y)VZ)E)~+zq5D&b!*SmD$No*<%H-egF zOfG3InG|jPhm(pgMiMb`2>pQrSjJ`Ubr)!cb|3#vwY6$Z-WIror}eOHkDEzK>Xya* z6>H`zO`X1(s4eTq;}<&yZ9|?N@2Hno-ub5y+%+h=ucYmzBXFZjgB+pV02 zJRlw0+q-_|c4j2;Q)U!KWi2Cc6S4^5N;>1`SX$ZNb|pMLyyQYYXefxr+nN4DZ6^Kt zMAB3vu-J2>mRnZt-Pr8a;QCQuUH!9(MOV*Yoaz1xJonp`l+zX;eS8MsQ`%0GCjt84 z=|DUmG3^r(w9k_*+^TVJ*+wJVrhd2~Rj}Y{EvhX;ZhC5(*ueO?z3~C@TRB<_krdyb zQLZ%0gj4@}Q>+u}a_iTx>I7mdL9e8vKCYPJdV%Rf8Vc!k6Jr+C06{UCIdA^+MU;J= z;6>Z{f6P7+C-$>+|A(J;eeN*_^1SytvkaQPC@IHJ9;$w{(HW$WF3~tp+9FEwrv5-i z51E9T7|}nL%f#gT{o0Na-)vZL!9)7%L+mcmLT-Zj!RdtVvs;Ze`N@4-WuNVxO?#4#=^oE&aSBlxD6=hTwsg5`#X}AAPaM~2Cj>R z3p6Oc+1Dw%n>KX+948`1V_&-f5T{@$Ika`;3U>K=@!iBu$)|R%Ztl_Uys==KLANL; z8&&FzV-7vu2z^iVbAPlO=$gSJ`*#0M3)ebs;N-iGmF7Djj<>zS{L!_G+8k`D2c6IEoG5hQ=;P-b>W_1GR#h)PVd~vrEp{ zKEAeppXrKhobtV8Cz>%3i$Kpj+1}h*YF?V)yE5t7snLh^Zh|Cb{; zm>ZFcM{Ey|yiNq&aZ$v6AcVJY3vi^^)gvZV->_P=FVpV_Ebr$hj*lH9lx3|uIX49> z0JvO0oHrynt)o(fd4!8$8XcoU&ZtNrqX~yoP+!IF%#X;&hApP@Zrlv?;~jrrC`FAr zEQWeXGsprIvno1qjXzv;?7sjhUeZmE&{&kI^Sje5_|}y?cH+8SDMT|VGhDn4_E9QI ze`s8%Vd?sr_!89P72_b$y9+JZI#Gzfu@VFD-Jj|DDNO^Q%!)d(MRq7yER6w=Hm#k+ zl&2cq^u?**y{e2RqQvN7Kq6?whslSg`+Km|p8{v5#8%@TTofTk@ z%%42*)LA|O_hP%ckJYpo;H|yN-GPEUo&?4VbKEf3*8A@Eamq-+B+GDTij^K;Job?K zrjZ+a$fmyW?DN_d3z-y5ZUI$E`ld!US{&s?cpC5XBtC7{tG+)!dvZeEA zb&Kh*A66)nY7waZkGb`JwJ-lV;W|E@Ph)J*^fr0}`eM`n>1p`Y!e?yL&bo{eue5{n ziBh<4B~}L{+Vu#whXUwH?;+d=07j%I!n|o9V@6P*=!j07@>2UD-6xnl@PMkLf!++Y z58du%2eyfaVZ&oO{9>bw7SGB1OMk3pCQajGt~O%E6;(!!Y#%OZ>w-dEqy6v}H~?+J3D zXAut8$j`A!%u!eZ>MO$G8maMUQq;&7e7@Bfkaahk`SW#IM0e96yKyHZ=MhQUVQ|uB z*^wN{ubk?^oYqhtUySZ>zdqr@B;| ztfTB_wRu&?UAY+vHrFBR2GE24q$|YAqj;5jE!Y~WW4SJ$3f(C}-}i6?=R4mDC-!X$ zdq9zC{}!{#^fwN!+DV_|^!@F0I(^q?e#pPROEimr8IjHG8Z!?(6F|H30#Y@bh2;h# z@2WH{ZAiV(xWH*ZdgUQo=-$noBZF5*L*)o8gy`HREqnGY{L7^AGG&TB9bnI7F_4Plnla2ngLffy#ee`Xpz!x|28*fL9s9QI&NZzkJ;6?)K$rt=q&9a+ZOq>?hBxa@c<#t=Xrw)s`fa999CgpO_eXpfYNyW~(~i(Tnz0Lo%0= zxs~~ZHMXA|wdF^+)N&pKFxOY_QZB+-t@~aZR+^>a(Za2OuauO7(1n!Vpnj)IwsCHT ze1E3l+44`zE{uvKjYv(4S#W6istVA!P36##-mTE(by;`T&9+llcR=>0VoCbwN4V3o zvqmNklGV~AT)gEICoDcmdDLMl_7Ptls{dELC6{BWvx^CHa>*obPB^4uuYP9xoI5fT zvl-eIs6H!nn!CQmyd~Fjq4&Og)koSzl$efQ;oI%gex53K!NK7Jk4a8-jH4jigD|QA zVluew6>=dM1~_!5wA~A9s0O zW&UYVl*B4{14!B@8UF3OGCp5?X*aM2*S&tk{Y8+2SY=>T-ds^h0i>W|kicL-%rlUJ z;vxE)J^s~j0+X%;;DbKhInm!hA%ezQDy()}*%w)Zn znCNQr8{37%V~>s6*Q4Azf_N)jen>VU>%QTkKIh^R9BnqM ze%=?j1`^zRi~GFowo#wGzuWD8fM|pKQqP9tgN)W8wFtW*`#=!FVq))lV_T)pFDCfl z_dazqC9&Fu&Yi(6bwPZ#NB^LtG~2mQ=`@MI-m9Hu^Tt>UOY3Ul#eU&>?96KY55vAG#;qB5w8Di(Tn4E# z@p`dXi~7#)LVgofboSZOnmPprj#u z@oi6Hi@Hf$%g{q#8pv|t+pFRt=`Nh&nLXZ(A*LVspVfibL>&(n4R>GZZKW-wDpeefyC{%t!I?Oa7^WH4nZxwzIE6=uRswVL# z`Vh>bQ7(|dRLWGUr`u2uX`vCf458|L2=VwTVrmSym&*@r-;)O7jmv$t2p(Y|tm-!N z3&s-`n~pI54J+A3ZmodWj`ovJ`4>eyCC({CdULgiq*cBgJ`O&)s0yWzAo0w9Vo+9# zadN}S9skWKx-#@7cu_33;K^s{Z&6d0bb(d$*g1+D%6K-hc0sv%Bt){UZ8#vwU3+^| z=f;AQe~?CtG8B9I#0Gv^9?EEe^~U$>7In5w z;XssWh_z|EoU!&0o^1f(IXKn5@aO)XIAEC?4>?fpzWvi#5xeJ zFXqa;=sUZHF2#4KA2gK2rf8bD-@Z_~Q53k3#S9raEW&o?f6=aEflnSvtaU;XP43M4 z1@P}1)*t?+mKdQr_KS<0K$9iBabcBGQ~DmOT}iKdU%ro%R;Tz@{ky$@PmIAcXTT2> zGPaDeYwqS`>TS#aOy1)>cd9cy@b1#KGD_^(ay~|7mu-2+xg^q4J4x2P6!C=C|zFN?508a^S^8(trU7r_E0pOrY_tziF2@wC(*r(DtN21}5j*$C@1Iz2C! zE?+$WWQbD%TvQ7e2c(fpfNjM#%mkJ@D6qVL^&n}Zp5-b z$;#+#%Tv+lAD>TuE#k1oy;SX>Vx5r6oi+ES=#(qVxm%rm_!M_6NTc~Umj{dwqk^w2 z^X4LpR6Oqh*P0w9+MY*NI!2HkZIZmM8{ck^$}m}@ztmp#gAG^~1fQm_!r&nK$Xv%U zZJr6a#SLjq3@EkjrlaLfI+GTUFa7Rsbxb$QH>HvKo)eViua^U$*nRiG{pPbnxRB{ z1JboWwM{=oXdPH#AQzc;4<-8d!+1x>5&q!&#_DTtGyVi5c0Sw*LagXc4?Ku7u-SQ) z9RA1ID4C{o99Q*$PhoafnFCf87R>v)Gx4~{E{Kiaf$FnhQH`}LW2XaY5{nG7t^dna zFMbY6Tvd>&Cm`R!JwNNG&^>Q547)aD@){0~?Bh62JGK9SV)WCwl4n~u+TNJQI^vaI zG<`!g(oYQZ%x^xT*MBa)&f*!OHLLZl$2sSMK8kvtPff-rqVFUARlbD1f;Fj&jER**Y}{LEWU`Ky`mbU_s2)0n+A!W7 zD*nxLPk@zY!222g>SI;FEvkvHi^E%&MA$oR?U>EezolmC@?F`q_s7BFm+?8uw8~Xt z%9p; z$vL{uuVX(7F#28H$pY62hZ9uVdp9OTVcN=4AJvfJqyxQG5-ITXnRNH9}i9BwNcCd%`#WRBfYeD@|cg=+Fd9YLV+|H}M zU%FX%j*cWHCH`(Ous2wb|6wwdxwq zf~P9=<<0n+@qbwwEV+hi8=Q-o9`}fQDOgM09=$TvxD1zd#NP@2@Pnkc=W*GRtCqie zpPjZFk#3uqM-(Bp8Lc$UprLTWdB1V2f`y87Zk3Dxfad-p*-bpPnt|y!z(4^>q}~mkqV8P4C*!o6{YE407?P6kd|Ey zt(@vSl52!U$V)VEnUWp(#g?Ge#<+oKE}-6E8qONtt;g%kjCBr79PhQdU1FA!W{#C< zZEMBc){Kj61^oyr(V672IV{r=)>L%g?9m2XoYU$De+m&w=2-thQziI>SQwpR<#et! zD_Naxc(=r3h9K5v%iXup6~eQb`KS-$xuowpabl@A-7;1rRyk|*XkXI3+leL<;_vOb ze59&-nBPs{NA8+YA1;A@$MK!7a`iyxO>aY~R&J90!TlP7Ej4u3%0tXos4?3rXl>Yd z|HU5RBLoguR;y9))});mO&a{U^LE?Y1_(sRO(nw)5>MdSfz*_EZGOKLvAEbuFP`*? zFR-r?o=>SB?}$mnnJft2O>OwI>dAtxbpW@oHwk^X~d2?{3f>u`~eZD;BRY~JSKM+n-p01TQqm+^9y2iqve>zpY^oG zh)r@Ej1g0=8U*_H6qf!zXzHl$xEw5llI<#Ay*#dr-R>B+FZ;$OkJuPYr>La|>1j1j zPX+poquq)>6c~r9TFxVhS$Q!ejvjcs;V**FME@G&yBSot6We*I&i1Zyn;Bj;xINxI zwyNpFHdmFKU@ZWAX|&v@Zd<}wCwP@T*Sa8*kIdruy`Zr(jRa|c9h>JSV%tf%#=rJ% zI)&=1uJ#FGD|V;0mdfMx4|B6w=V!hDO^^-u3o2;j`zB+}Ss`PVrIMQC8l4}==&Kvb z&24_SwjB0T9_)0l)mq1@_rcui(p6YR!GMi8dxLmkix7n>TKFGIvWcY}`$XO1qnAC; z+!Qpba|5d`T_^ti{o7M^{FCDPj#g^nqKL8cP|^vnjW8cnjEwb{n3=84DaS%QQ$C@- zJKR{u;mFvf8|1%DYcBXB8=8pWYCy?x9^>};7vHcmZJ17Ex$CnJsFFO)S<;kHdN(dn z`T-88VDe=)JTs_`tnT%V|CS8Jl>!l`u@EkqedW5+Z)vAMrR^5!dq)oN01D%?L8Ves zpWG-~1NN;7(nXbiL3qrN(v-csuMb+KxxjnaMU@~!K0G^RPX8dVaP~JUo$MOOrxN=s zpH&l`(Q@j6OO)!b+QZkjTDM(*?|4oUc~_Nz{Dw8&MCcMEH)l8-%8LuN4xgorj_E5K zFlR0;Tq2#tMrTmuCJ!xb#GMb8 z8rAsb{!p}Q=8|+2&b0BHsVw>zcr)>Jw5Ge!!|iX8kRR#1{=^H;%#+*(2$b1Xz>}a8 z#aC}>3q)Et(K45sO`eZHT|(BQ zu4DxS;%!&NNDQBXs~cH$9R3OE#f_J@LF)LAq^YmW9o0L#O%iBaU#EB!dcCv7=hD>~ zY*2oHa)XRJwLU4QdrDg83RYfZcJoz4#`+HiPVb zsOhbr)`UOn6rFrObusPc2)w^pAZF=E*<@D^so{qCZuok?z~*7TW>$-Elq5^#zKDg@ znFl$cx9UkupCv!3)yWrqww6xUE0&zZv zzeCpu#k18HSw$`-8a<;b%m40A~#?>TygspVx79Nh|;mW1l-TexRcE_<&RWVM1X)ie5O z+F2T<6(yPA%CD&J5H?ptk9zIBJ+?t%<@Ua zim$Fw;L>D}(Y*UtLfI1ZiMame(Sg*X*qiUw`jPcJBSrgayv;`xAPM@mW2%(C)b!jM z1KPUmi_k%=$aXQF=N&`-RRefSDeo1ld4F#Q>`|<2JPIFdRQq?}`)IKdv(>1x(p6fz zwUPoKhBk+Q`EXohz;&YcQowZ#Q;-8|ZIb%2D~RLOJK%{E&xq2+dj-`o>q<-fz2brN z8N8jtPy>y3JeF_gz1L4tb5B$QYYp;Sh_Q00%^S7K7U^gEdVVbK5IPb49Q-!v+K+QC znK)31uj&)yF|nfJavVSK+_Kkq^Quhcuq{VQ!lN4^_8VzhYisN@EiY`hJD#bTDo1;^<_VtJuJ$x?x#sJO9${ z8TUrb@}~KdC;z6d1)Yj^WsWVCXnz%Nz5rgewMesacQ-c}UYL8#O9r@@Y^d9l31dEU z5$A3$SIsLZOw5gNI24t59)rKH?reD%7TOP>L-mqM!v}TRM12w+<)FmltlTGF%TtJy z2vgRGVt=D``zofUZG-Q#=NdET#Q3UXdr0wr4#HOB1wovi^jOukgpo0dNi6d+$YpT# zix0?)7o#`l)eNv{h)JHhMTbGa{vD9#qpu6O~I?FbH{m918A~QjLxRj zZFGjjX;I66quoYzfg+R_F;1P-n%b74gi+*P+MamkbAx735!IsV#MvR47FWjl&jGIX<}4-|<^!(*-W21i24Kn+7B(TP#|iN6N|DUd_{Z0Zgn}ZH z+g_@NwI*h8wS2ZK&((Xf2oP_&zR1Wb|Fp#;OO>6S&8#_SC%pjwq1wlMY{)d|0qX+N zW}tqaM-hsSkF!U9i&qLwaGLO;18`E-ai?GdPyR1cO1bsi*RIn3&BKo}Hg@=Nc;e^v z`7_mpXAz&CQ$ROpCa>Zw$!9Mp*Vd%koDTW?!^&xwdOkC7|Bw7jwW;}7l1L%uWT_a- z%^eZCvla81>6sf#qwgk5N#uJv1QZsh_54%D{fXZZQXMHNaTE)agP%6`+J{?PD6eAx z-dOUTxX-(jujq4}+7~iOyHRVmY_!F|Aq(Yez9}`VN>qmW-2z$WH}+={rD6KW{icH> zBeD^-Do9HbTi$DA=9Is;&75_J>!SVR)#p)vD}-Db7(~zw`-{L1qS8K58^x$>k%y-e z_-_!*=rTo2tCA3sjYB{$~RCcU5<7htRBD(`d;<$m3EzGR2*i-Z!5?1>Tc>c^6e_gdRl9Uy9Wg(HvzU0kuKoJKJ|FB3TCMlMcCxeEA{cFfd5N~@ zi6UlLzxu7IhBg@IM#gy6Xs`b(4^bQ#xZ>d^nu#^JK6Ll0q*wFLdTR|+0o$!wagPe0 z5|J26c^atXDw$3mv=GJ(rtr`6e8OHM0NQkamc76zk*W`#+frKMR}(8)+6MC(_c?bI z;$!rp3!r$xSPE5c0>r$X=8F^yQM9|sLo9%-Q58*IHadp&;nXnIbV0RAzuAh@F=wayT(PD@g^51` zzmvbjDQM4?2GrW~wkyZ+b6VZzr57f`7OvpoE^M$8r=j_$Qw( zRKElbnQzHZ*EuT2JPQw;<3L6ksN@g*o-&@)iCl3Bjb;26xSdwrA~b=pNz-irgtf;pAl`r><=t}YoGg@{_zpV6L-bRN%H z(?=Xo7cSQYua*|vHO2C>{zhAb_*!VGj7Zw;#;{|5Yd+_hTOqR(xOOg!rGMVQlEuzQ?II)EWUo378l_9?XkAXn|4Z3@ ztED>RB@c;M!?nEWLq?`|xka9@K zc`8LEB;_2U8qN7M%%)Q0oG53jgyeiaZgYq^Zq9R_v_K(Rex{PF%rqMStcF+e^2wH$6&5eehhBx_8{WwX_tVutYVMDDtX}5DOF$oXJzx= z)gtH7r*uZ|#?uuiS%wjoUwy5)9GS^9pD*PRaR7P0=J$p>yJv`Nk-sQ~)LQ}{)x&FH zdMk%H@8IpDHK;73)pkBJb>7A^k3}6~Lw>t@ON|xLMy55$~%^w!X5jy0C05`X_rr@s!ZiYw7O{X2sj*4@n=p+nWjtQ|f z>KZjUZIFvkTDN`8xtE{fQP=TPVp>MAq6sjd-hFVJW}r9S>0Q9TOnuWAwqp$k=$Op7(L8Jhl`++;R;4HcO6@O%Uv9(MNA180Ut-3r5R{D3h zhC{ahbwr;2vHPSk%Qn`5`i3hy#P*ufx`ow!3!97R04fp!~L z#FPqY0Bar8p{~en{R7}fspy8l-Cw*3P)!+y* zD4@@DxX5xhKPmJOte@}Bc1TPx@ZND=2-W{Hm-=1^l}LJ~VUg-Tjpyg{16}nv+9WCZnZ1*Us3l>tX!F?*0WVfY`hfwfk0cN_L?+$789oLe0J1 zK>6D4ruxmKO@(c#B-QGX+@cHv>HINp@X!mCv`X(7DNVIxMDq?;L|1eFm7I>Bwb7Eq zv(tnnvr-XRY2pB=jAs)2Y0=W5OR;Pz)rR_xIq(xzUK6Bl@O*hLc-P`lLrCfvzO+ut z*Pz_6C8jM!@?@S`0AeJ2N@2{|kbmiZa{jvZivdBLB~Iv(rTf(!2NUd-Bk265icQ)Y z_rHSdPg?Ieb}M>p(XXP10b8DDW@Z~0?{E$9#lT`}U$?_$7nW*9d?Sy)NVIObH9z|X zlNlzFY*tkj!Id>G#~sC5RIY)aiMV&c7zP$IGsG&w))af*|il-X4)$ih;_BgSSW;td4K{7NB^8$J zj=1I#JDg_EGh76gfz*{ROe<6_$|d3 z@+$55Jk(cFEp>sSIEd(ckw0`9+$9<5NaauE=h(X_bP3|5Lv6VRF{gton79IoXfOkXpliA z!AjWYyWbK{Awx0O%kD*wPN^0hYo{#MXx992G_A_@%eAMhoTj*OuK$LB)^FCd z8RhMZeXp9R;t-Uv``!Oon=xGksoI7v#Icno5^-eSGBF_iN3O!Y+OPk5$YNtT|*E^6EGHq-@3bmpu-b;|&~yyrz9Mo=|P{SMNDAh83ffO!MIT(wmQ6!h3RL z{$(~U3cv#s&$EqtQXHJ`Rck+yy+UjPd;gfw2)!JyXITn5JDgRp@}!q6dd?+xcC^Yq zhxF%V1z%D3kFCve|NcK_f5S@?k&lp8i1qp*jp41Q4y!)@cCD(1H2jQxad>L-cva}3 zK!VX7kTs!hWTVxF8b&|3((rC|z@Wv~3#sB{Fe`)I@o`Z0ov*+!TZAJen&#KFJZ7M) ze=m5lo?)wsQo`kgShscYQ3xIQ30AEVWO zzHYxei?cJSQzP&c_S8|f>h<&7IHRXw^Zqt6=4L$yu3ys(JGdq7Z%2LAU;l#Me%&P0yw&i5q`Jl#+ z5Fi9)`$QQMuXnTSK}UbLT~%6G6>$K7l?Pg#s9Ps~-}jU*bvt??-}_;$%N2RYV{{UvelZw@^31PF2*G5E_Hf%0qS7iIt2?WWCU zMbRIz5grcuO(K)At}q{+ z5{SU!kD#g4%Kt2s!RN~UtQj<8i7U5SDgGERFC+zDcItJ7|3rI3%l<%@R-=D{)Q!Zem9X4;F^U2WfKi|>LXh#hg~1t8tw|-?$S9$S@O^-0f0oo3zOC^sXgoN8d6VA z3vW!E7iy6QO_Q4L|B;S2Dnj=yCu&oAX9H+SN$om>W`Esppo)T$_~V0x=1RBGC0E5_ zniqkDD#4+O^U^UNU5au)-OL!dpnuB+1WZ)$pH=pasv!r#hi)Ct5_%&0^#;^FrRPUr zsKGVaq~1B(oPNxXBll@yrFybU@A%Q+?TEzmQ`q4B>BIcsju0}-17q+-(ofShw3KgA zYVTuD=mp$%=~nXEiTS&s;}bqy*zyJ~tmzo}Rb~MG*v2D+iY=G_dqMrC_ol2Ds*LXOqrZ?vTUMu%5_yD1los$_HW1>IaSvt{vMY3@uK`qJTb^$5Gz* z=h&#+S*C5hwO2_qRu7rRmPEx=OqCowq%WRoV60rQ1U;i(ov}Ok?4Q(K;v$$32CHd( z@Vg5)Ya)vHDQRm7S{!@3Mxi>Gd4eEhU2ZkN zE0_7Dvi?h5vk0y*CXE#cDOb|}&9{N#7CQ|!w!`sb5>zvpB_M>tx!YHwX=~}}> z%Xfqu+f8L!^beWf*wtXbDCI=;o^U$+&MLgOV&R~6(gj1(3v;T#sN`H}8@x>4e`CJ= zf$OyJCr?Y{-?ATI3}>A3{M06i-y-CQxtAk*0MkJa-1q+?htuDs;`Y$(1c_zPb5f68 z&T0Wx{&eIIvF|w1X`-2^**`V+`la{cd_{f0p^WCOg^oA7;sRd|4uO>Z>5=Jg<&i@W ze~-)hPJe`kuAI6MPq45y3@Zn}p`= zi4ebU>M+lilEuvzm!8zEbDu-szwkh{Wj60u-A{K>l}80xH8mMpQrrXSpCceoo8tC& z1(?k{^M(nkLNpM0-hGo(er;MVLp%T2_PFb9F+R*qD^|J!JZY_8y*>-$5WDCNdptoB zlHl$B_L^=6bwxUaK?O*^504=XiEQOzXAV5vVbCz8$h-tAUp4%G_-E)Jmn&PYxvc2O ze~MlsoG7*x1~IRzK(nL$tI;4u=j2Emne8%lGY9X@#$d|$$Ue^Fugg@Y;C>PD!f@aa z!)PvW`y1y4)|skuG~rjet?cKDn+$C_7QHLo!>lYyR(|*wC?mr#t3g;CSmu>4CXQa2 z|3v;p^*7F4Or3-Hd8-?W$~T_0Cobd~{W&cCG9da@n^lelF^R57{D$yx$i4^vQj^;Q z1YTzGSP<70X(UF2`u~pxrMkp1%h{?Kl!j?H3Zk0+rz^Ts#FUJ0(Va+MnAQI&vduT9 zkz5mtDbffYXyB3?7AR&V?mDG`;qx#-9vzKz_+LND-}!QxCShwx#(Hf|)c6U@aqP@@ zWcWc4w$U{?-iO`-f$zz3Az_sKsdkzARMy+W!p23)Drfr1{z@=-aWRt{=4kFAJTnFqI4nnWzEqs29 zL1&}UHG^-CjRvrfOo)feME%*GEAq#PsRCE?#37tMwNmQKgYIJh)qQ;t`$-olR%N2v z}WGbkFf`!w1{_f^(PB zx)(6Q)e=~h+GSrxl@g~Om6!^TCBJt*n(n(Dsx(s^vAe6AXvLgDi`BMSIg6Ef@N1;6 z=8j97dE`o*@hh{J;0bxYXW2RXvyR&1E$6JOBd8*K?G5ei?W8Z8(9ab#^)?xd<5Dy8 z>*@$f8ztU^mSZV&rk$zR$i7+ezy06OZV)v1fBVsmVuNXiY9d5^{*`t^7QhreR`r2JI>A(BcQgOj zn+5%1diL=3VVlPn0Q%#@Q+r-9h<6hTOA(oo`GLy1SEE*^=0*YJf&O>)@byZSW_6c=`{65LUdAd_X{6J(uhOiQk3f;In_M9#z^0^>vb^5hEc&jLG)qhr(+X~~)3K)0?2!<)tGA1$WPPv<%DPGHD zabkN~4QBRQ8w@(L$B9lC_K2t{46L@%{SqGLmYl&nA9<^`SvMW}jtUV%1jQ83LFe~$ zu0Fjv^gnagBbv@l_s9GV2G4g=d2_0VB`vqBMl#}}Ka8DL&3{;Pn|eGKAzy`kHd%hZ zu}>cJ6C4B|ZO*zcJF`xhQ2||A2UacKlZ_8~(Yv91y1U=sviRn&gf4-|C(uMgUV)#r zRh}nh7>2ZqI+jK9sOu7Goer8jKIThCy|gL?8IN}pB#ou!=mty$ zF@(aLH4A@j6=8K|^WborNXaR5Z$kgcEhQao*4yW56wR0{=XUB*=@{fc{|cS6?p&w! zeWI4j3E2#^b4Rm{V-Y4eJ355Z5- zRV+??8Jr0?u!{h%o#v$gRA%;EHEZ;{RxA7U=6+W_BdkR6uWGOl$G`3=?HO#?d{;!8 zl=H!}0kTM*pe*VkIrC?#45^{c#gD5111)QC^)<7php%10PRJq8qV&h9tB|24j%Z}$ zw`zr}Tzw~`0y!H152Hzn3%biv@pC?aLcHPTL4P>Un2*zJqL#y}axmkT$mkSJ_eezP zZiL&CZYRIh&Mxz^$;-hO#tE@p%~oNf&Go2 zY!TYF?r|x|aYxx9l?(zg3Ha>ZA79@%wlWlauL~Ab|83-<-=gYa6g@s@B!4VYSHAf< zP~VmbCe}o1CDt?;u!i@>ugmPQ`a7oAaWjg4F$2Twxq(E#q%>qQ7N8g!bJv#F@H)}S zI*QSUPy(4U@l#w%~$ z>;1wDZUj}mXFqy;?9q%V8N3cx+^8-vGO#+bzw{Fq`%TlLLGxeOIwPR;S*C!F%srJ4 zSeZZsXaB3)-2>k>eex{rv8;zR1*dvfx6Fw9_0L`}#RzJJ5Xs-W5^7s?s02%QJGg>T zaJdvc2fgbP3*Ct)e42mfrAN0J*4qnM;}K2F6E%v7)5t={G{JR5lO;|C!bN|q_U0I1 zC1}d6&N;`4w+r6ZJlSYe9D=0hDfWs2W^>?xVX+fVCu4K)SE3K?zV2O^M!m{uA9`#5 zd;Sbun_l*yex4~RVO!nxV*dI-CU2+)`Q8s~I}5Yd9NjK+2M6?jin8g}Yf@ejjVeyy zs7rje zLZjvvaK!o2olr%GJA7r5NsqR=7WP@QGxtgP_mQUqDXCDUO0p2fh;X{F>ELc)^AndV zzxgj9@msn2P=v10Z(Mj952rGu{?*`oY=h|4EO_p{6B2xrI5Q1}hVk{YNdIW^o@Smo zGsm0SlCDknUVNzUW`R*H`6+q|{;vBtByq2+N;G6+@SOV|-)%(LCD8f@+9%w=`9)f& zd=P$1&vz%{%^(jRD_ABn5;aI~x7-SR6qWbi%9|B?T}#DQ9N&u9x)dx9G^o`TTSDr% zkxZA*j^SQP>i3uf2xz~WsOFjf!p+{B^PDZD7CQa%=Vp_7o=^BWOW>1`ybyKiF&~@s z6HWAB+#YVqa3`Ntu~wd0Fzgkq-ToqLY$@Uqc2GOQ`5Pt?hkJmn2_+G-iDeY0fWWR$l_JV2g*ppfK#{snb7iL3bEJ0B(r-2l7dWk~o?^9G*nmT2Im^{~mn#mtK;*X~qm4$S_=)D( zHP@NfoYMbI?`;*Cxm4dkUGAb*A1UCmN@^~`-XE60=HI4TN7Ua*_+E8!^JAHnU?nb2 zjMxg{uH{d73Ok+bAz5ln6t}3cL#yRda?zhEYOo?lj_HbdN&vH~Ap6_n<@xh;~c#Vv#eSPNsWpyu+2ke z^O&7EqiYR2l0?V_-k>g#8C((ng>uTWKOg15N-`M*q%h|z8JGkLV;b!{3d<`Z8M5}Z z{+5u*_K7bHv)9n&EhL?Y@=dJ@-29vxL8dMz*6cCr`I$EZAJ>)*%5Hw5CZDtBJXfcv z+0l&4A0*axkK487(Lq8}X)%iABi^S3cWo2-M<=jg2cvYCyq?HNSfdQQbpf1v6pH$i z?0M!yj6=W5XN`i%9kr?cQ_2PbFiHYv& z`Jgzc%Mv<1eU7O2J2&DsP%5{^8nX=in-?qrUOjtdm3Jkc{{(M~7Q}KH5G5{NHK+Fd zaP&Y`@GNc|&Ql9#y(f<9m}5?_!9Xaza)hfSh-CHY*+!6v(!^sDUxMIMz;uER^@RI1 z^*h$vys}a(PO3jaa#_;XoRjZQc=p}@rFxc=Wf1A<-V4Zc@-S2wph%OB2hP?6e@A}_ ztJqdW*k?vGduUEBqvCxZhWxw=jqB6@z|d*pHEG4p0SJ2!0DJi9WqsnjD*4(mOo2C1 zy9#E`{X4dsKry1yz5YYTiu{K@x^3(UU-=r(OMj&*u-e?d7ex|dn^vp_R^&A5!A?{~ z4sasP%V{V#OB-@Y@Yq8?!_Cz)ZudfPLzUYACo9a2+puOIC(b9m5XPx`xc{*8(B;fn z`Os9A6@R;8etbbjEP~{Pli8inuFF2g{JE`fRC#l>dxTu3Z1GHAp-Ew1?ch>jh+uxS z+a@h9I6`s-IvaKwz(S>t_7d*w0E})pPa2M{o!Qu-C01|d#IH8W;#O?w3(8?-Cv@$m zqlC+`!x3NRqKpt6wf=&F(mhUCRYI@@ZQR9g&i^Q2PN7R{RB{>@&*&EdWo)F_jol4jd7J%Z0nT`d9cXeXXThK634vAgSh zY&mx|bwP6XRR(dz;bQLDOu(uCxyAPxGyB zUJ2WJQQnQwkGI@x&AEcSiIPES3#Pi+f&(2rIio&OZO4!swzD)^@HuP(4E5bNnVC4m zH#{3hZY?%{sG1sf5xbm5JX>1nhH+*2Pq<;u!0_GoUPQh~^}?hCo7nbecjb=cFWvIm z%&R7PA?4)>4_6*5z+KbD9NDYm+pmoRz3%$^|CDurY_|!9_0jKdp?>L1O@wkF&@dRo zB~QP2)YC;~CbGHPCC}v9LyIoYr^9s)QvLV#l$K*a+PBT0U)M>xX3x2PsGkW)u{FZ7 z^K2u*KyLS_Pjw_Kn0DJ4qt(MJKk@X2Z_QjUZd;=X@vTi`liZoOAl}M3C`#5@lM{&e zm`^?Ky=-ej=@70R$f{$!jpDQ_VKcj>p^H>9!~gam`NdxL8Qa|x@Gd9#MU(}^?@(}= zw{VI}wQR!q1D;nFjun~pkG|Z46;5u-Ey=Xh*UwK2E?r>gby$N5Q!|3e{zD~R5UKCr z+8PmuL+33@xHXX51tK@K+P#Kq>l6Ksa2#P zyZ<|vRpM-wS7-ZaLQ`brpSuSBhyA|Ay6@Bhq5g!7WdVPYT!)0GV9E4@nu-BTi zsdEj?FD*B>ivF%SCr$^P0eO9r$zra&c>GeJpiLB9|A;DFFKCh{sH?qe`8+#gjlD^M zf#2wCsbK7BcKzCJ>TDzwjLq`Msgn|{E~>*#%r=83qDF63o?19vnh*ZQI`R4w+_Wjf zE#G$;ThiiocNx6b(QK1_b}IYER7`WJu&W%%PGca&zL9jdi{$nQB*f|OELh>8^#MOn zGIjQ7`AM{qc#Q^1++3j&aLV$pCqq5EY`wA3*k7k7dt4iwdo4a?h>Dl&KPBRJa6{Qd zV=THhxvwU9y3a@pzp;S!S922m9RbKNa(HJ%o)gACTTMmeH8ppAkp+s+XTa@N5K zM(q=?ORQ!12&d_grWNi^Yp(XngTb4vMKVcX!t-o>53OrZi4Taz3*zX#Svi&eKe<6Hi-LwN9 z_eTYmjt8N_(8xSN5c3e<_ktX8n*2QJwR(hZe72|n&)VQiMpU1iRTv?xHJ( z{Gj&cPkEw&-*eZaPI+D1qy6CNJ)$$Pc^9L=U=kx-<^l&|?LSU<)ryOhPCUMyCtbhv zb>DH`V?Gpl)s6L~n3SC6=(MAy)0v^~HYg$OU$iq|_~n_OTdYWJH#6y&d1b3(zy8c^ zsMmqcZ#|WD8REH*cvIY$_59V)`xRKuPhNbHf)r4UrtiA8m1S>qr9lU`%(DrK0+|Om zwfin$<6&rbOX}HO0X0f#?yp?+-REpVunSmb1K)y8-oF{EhD052E^xtZ+`HK zSj`OHXbYAPxAL+LUoq{;S^!;a=$;JR{%_4bfwDs>XsCbSKOEaRl0j1%`}>$HY%L~Q^<|8ZWtE<04JaZxeOQ9Pkq0QR{I~0+|$?RkoDB^99fo00XT>*ehV$7JVIT@IF;GceNh;!?^y*IW_RX8{wWS|ZMv7o(&Jh}pE6&@2&o%|C^!?}|&K*I)` z*YoPw$rc4mkk{7$<%i^$&kn4oA;fMcTSvT58_NAr1zC{Cfzh{sS&kS~zD4;A5Ap9`5w zvNWu58EC}{+4XTkGXk}-zwL{<70W|1qqXgB;0j#56lIJeI`9b%u;iIn;|A!JF8{nW zjUTgIj86BVPLNjT6Np?(ZD~K>?jS#rw}UQoYiV zPNhbn$isEm?erNbkl|_u_jU|IAQ1f;u{3+7qv*hQK%;2dR~uvRl=v^iy1wJ4NU2rK z`wq^_w~>Mh!!FpGnQfo&e)TBFd#hguVP{xzS6Ob~p;lv6##8kPo%X8*QoumX%A3m?4E>+l z*Rmd{2LNkQEx)MswoD%=_-5*8H8Mby}!Bpg# zT#7Duq(U-E)~nqqpaoigDmzqUf(;lcJWdgL<+jTXz6(Q$!wpH8t>?aj_U5N^ljkO% z`Nz7MwuUzl4}Suqyr4*y$qO#YeZ=p{k91D1z-Vy$~5#D!%1_})9Xhql0 z=RIf869ON^p&wB%em?d>S*NR%Z$+l#A1&ywP4?ZF_{22p0R-^?X-M$9&(Y zP97|zig;}+MuDT5UJ(wg?^?GqXIzPjK&Av51dM3*Z2U!wNrPAj$DzjoJZB@H(tFEpNN_ROydsA1^ zSP>^Mk6QnICmDzd^9?$^CehZ`c6bxeD%z5fb#n86*GVU+q?Pd3gWC?Ds~+bZNjyS& znW9o+B3I>E@V4l1C*t@_-^~?J{|feJGXuuXiPml-A!n>cCWs4bWLZM@?)IKMO} zYYYo}s(sa)!aZ8IS?hn3K^zO8@%>Isi%zF$riOs#WJIRMW$qyI{ghRmq>VuX^OU1W z)!Gx6ZjhN1tre>V5J$3Jn>J-oNI!ysl$ty|6#*7&Xat@-bLnAsM`)Z-x)n5y^5<=i(nlwBFx&@(n0y_(&r12Axr0>n;S3 zg(4TiyaDp)Kph)S>SNiqr3Y)`D(Ey8Kg;s~4_pu)48+$ms@kHI4Fq0m@C+2lZWDcm z(8jn`VnyIqw3kkWtZdC$eOO>%8L-&=4?$z<8D=?7;D5|tRN-Z@@06bg&pN{{hyC%X znWWsE(EhcjV=B-lo8Q2E?`s#8tw++U#%Hba9Z)vLJxYBWM#26k*xP@1yY03>v9wa> z_`ia;@&7J4fq^7+X25ecW{fy+FqRVws2H`<$T^WAS6vm@KDWJx{>1y(R0F2SjL1P3 zfg)Q5wXa1RA%t?Dd&<1glR`WC`Ua?`Gds#|rmiGOMOG6oSa*NeToyyf4J8l&DXuPd zNx#*WPFMlZx~G(cWM7l^f+6A` z;7T!ewtW1<{c;UIesrnE0L`76Zy1UAL-^lTW@h(t(>7pUV{D^z^+cI#RZD`IdX-ip zl;ay#I2wkBA5w?bO&C!6#5Y^fOa}S&pOdjElP)7(;4OXW(E{3uIV;8VF;HrD*F_dl>;DdiR7f}IYmJf=t zaF#A0vhJwS;pnjq`rBw=c9E!lHT2?~1{THx4DJhCoO&{kE2MKcKml4YA-Mxk#3qQz zhAZ+)uBh4vddLI-m=f2{5-$nVK$+I%#S2a+(ftRbIhOMH514EXQfl2!e&Yph!~vta z{42w>jb|Xi1xYgAOR!O{04__)nX>e@VqXu&SMUiRT?Kuf zzDTS6<{8w*hJ=TI6TL0Fd<>(kfs`eQ$~mh`~iC0rZ|M6DSm*5|5;;gEd1V z)7QiK@(nXO!;Q<|d0%o{iXVyN^vXr%Go^;}g{5#QOchF&dztR5#NKuTTf>URA`S8E zaF2>7VbVW^S6(fa2sGJ5DzHD4tVc{49$us6r!_Au!7RlM0x|6y)n-N%-rOhQ;w*)&kd&!5FccWPQlUh zw`G=2+vzUk#Eszo2VdSIPD|ou3d^yd&!=_={ey6({^_kvbzzve6Lv$U7Xhb3E5t;v zOuxN>k5)_FC+JW>gstg!eU`H6=^RRmmd%5fk-wpd?h8`(W`-o%Zt(JYIb0qG-e#G9 z8eIZVm&QldH``DwExnep_?WP`BR95B4F5b_ ztt15ArKY;QEpWbgsLCI=)wH0$1^Hq7l)63oY?Bf9urxOYUlk&=Ovo^*hQOX_)Gq~i zL2N~$TcWiR2vWpAxEO7~++CON3U?TIZC{*@o-LE}2nc5nJ87(yuHqk*DuNOE^TP6j2cGC@QYy|EE#{K2 z3d2m4wk2y(YE3eNY?H>2Oy74)xpH;qM>x`ByMj4dF`9=-O(x-9>2>HN8ZWPgo>~i8 zV#t@!G}q{~%bU|Rdb{orP2}1G=;|aOJa>>_YqmF@8RLls8ri@NUgxq|5lD1G!(MvQ z^bG1qr0`TMG*D(jzQ*ed*B33^uA}XTewFnpuw8gezO4r ziZln`VvvlU>2%;O`Eba7<|o57YuEh=Gq2IK3P}z=BXVsixE&Fw6=oWCn9AF(Uiq!N z-xQwfNr|vukWtM_?sFHRAGASYo^#(OS50|h>DP8INIByR^Me0|9*XQw57xyWK?Luh zxy*fEHJ1j$j+mt3V;E?K!E_^=U&sST(fBjhW3lg06j~_2l zTy<>c-a31bd67}py_V~0acZ%OrrUS9kS{b~T|(`>{HpW4nSZ#x@nwz3WL=q+7PH-N zrzy0PO*MM-@kwN2gBz{y+l*-~;IFL+jB2}U+W~jsA3iiE&HADCn)4^rBRcJ@y>Xop z85Hw_w^BxN%iKG%OFTNheg0@{so}EI^@Hy37E^UfE+vE8V zC0D8aik;gOlu9=iJXRKue#?7#;maX#;`#Oc7%h4du~{J8k-7Obc-WIswdRuk>`)ii zcX4$_uwVBhbw+IPW`Ab@jDTA|?mOI@-I}~@*Gp;O__&+WZ#a?q^iLp3<=dg^_*eJ5 zc&Fkbu>CYdodQi}22vby?Whf(!G$TYt+H~?u%C$KiF|WX;eDV*)%**Kn|ikMZ^tLN z(S-C6`M9>dSD=U1)mV+#FxH9W?B+uH>vGGiWeWpD>u>E#)$8q)^@KgpnU03uCVfA& zVZhuGl-A9j9nHMqnp)9l%fg}vJ`>d1OmvuR$ZmInDq9| zw*@ztQHz?uOmWU3|Di#agv^^vya`u1?z3(2bnA;w*<@v@jLec3DuLx8bh19_0lF0L z(nbNiX7giM85FJvqWzuG;`*hJk&)&B?i4>KMJ}11N1iOW&TEYyYV^(*r>~at2n!zb z!JZgQ?#UdR*fVpV;`8${oxWhJuMQ~={f3=3i}YIoBsmdA3HBk4Zo;9Oi|?-^We~Kl zU;&hoj8NoNy&K6($ZQFhu_x|)tuuFOA@A*uI^C{S6$7u+9@?Y2R%Bqivx0du>oQVp z@U=Yi#ZZ_c#+I|iF<^Ry{|1OPL(!S!cYP5pvD*j29tgtkGuw^ z>>0mgDWt2RagI@qZvvk>1)nsA473m-*}FNt8MJYY$8d4@NWT=}$x*-}EfBMtlck6hK zl3=cKoqKPSJiAji{%be7>){IlWox;MVl7d+e5oX*d7biNCLrdF>+##SCz=|}y+mors_sc|=8 zHh#rD&kQL9(%Z%ACN^lGTSfM%@VoKMa|(Z}ZZqZ?c0aKgK#H3l3a(ANL7OT)I` zPX&c$<#&i~SQjlgM-`K}oqAPaD;UblJ+h6(WeA2~LYCdeJnkxBRPnJBm&=O)wnaZ? zujxa7;JuO26H4Kp8Nzs%(Q10`;n1QJyKGc`f%vVa_3Og&Bmzzz&3+3W#bKFM8S6WZ zPM#N~SWyo7;_Bl`Nq>Ekj_$wyA)#4vSvDcL!R>jNu63fw|0Y!YIKq^MK4I}3r94iJ z)6}2atb@|#2y92nSxe@bq2NTWX8y-JtnAGIgSiq(rscq(Q5w1)HfA~CIbz7=gzAEw z&b+wpYKp{BKFi0)W34jh(=a+GV|e>9m2_D8!TAk!!e<>>__lbl6|;mf%Bnv zsb7+#1ikH_6kQ)s+HTw=XZl4TA1foJ35g1~*IU|Uhi7l~OF*fiNyl`jjF^0bRo)(F zP$M~4z|X(8AG~Z@E{T68m^J(<{(LHEBQxp_({~I{5liL6Kh=bjrHXVmdc(#VKOalb zS2QK4lxH~FZnP~1%Jda?bPFi#4vcbiYU@i%ysc1)^5p|nu%wlqwdWNdOp7IQhjNI} z-1Fhi;d%Y({c!=X%)LtzCh(AmFTqWti`_@aKEduq+E5rH z-MQl7zFR_GgIRU*wkV`#{Vs@2X8I>G`KQ(n@Zh8EoR9>rG8ab*2LD`OZ1iCm$lfH zhCjx?bN;S5=5`O|WFhX!f)5><&Z(RU%dFAmb=mI|uYzW5FP zJ6sFyVgEGALDLl~27e(Rc89*^l21PW<`|_E$h3AgwQoMvNA;nrxZBOnH%FMA$<$If zOrG!ccLchcs1x(P9qo#*v^30c+HbK~LTY||${q$Ls;qRtBs9lXix-gQ5@R%{w z5N+JQVrO-2Tvr5hSpqc9V~RX7n^W0O=1O&1v_mku|1Fs55+@2s@1qv)z>G<2hgH%R zlaVg*In22-q#QcVdg4JgBE>k+rq}8Wwyy3kbMJTae?wMHmG1rt$T$23Y}=vIZ0!=e z_)p-UX8^6aVICB>^^LGCgzFX>?u+vgn5@f|tplyJJcvBAdwQGxLiGo)P4C*4lF111 z*&2~|a+DVSg>-NoQ+mn3mNP{<3Ch3>0aJxfYptA!5&>7KHb$ouvDC{?hV{U}caeU7 zCxtw;0tAX3x~GB4LOLw!z*$Gs&ir3w8YfCisx)vDAAjBSxFa_Uv$r;Ge6V0c*F2mz zR6EGCzu6VR3u@B7R`DHsJ#?Ttzc#tY;!<}&^J4++X|?a<&b=r_#!e39_jvmc);U}j zX>s2(n7_PKck@cuOfKOk?r0I)?_S6vrNxHHL&K}20q5Lk)(vlAfBM9jGpb8?i(OO% zg>3%$S{=}-=tUiP3=P*js_|CYNlsM`dpB@VA7vR{lJD0 zlIlXJseVUKVV=_r`{p(yo%8mHIW5oc`;=WW@RdOiR`x{f_y6nvTcfb&6BCPggC~#~ zIskow%BvY4T+E`D7U$hr@V4)}$=wr6V-e6<0HCh5;1YK3D*R$N00>tywtn$5S66(IZRA&KEKt18~e>WXlB6zB4 zxM)QDYIw663y`T;UM!Sq)#e(m1jggNgL@%Oh%|)L;RU0(txjnIfKM(Kfp3TU8YQTy zy?`8Y=7&BAzN}1)C93x(_ay2fQ7^fyUEq3k=f zmOs=)+RR^Ed5`W^AhWMU1I3!eNtgmGYLAg5uGt&zw4s_yA5gx}gY@nuLAyD3<1@Uz z7JG(EC4ltkq7IU)Y^8|1d-qHXL^{k~(T{o&Y|FE6__XiR{Szf}Y&adq=ndU}9>fHn zGae0<15ONKfX9=<_DHHJAoDp!|}CIh=cd-UX~ zjEPlz)SbwX$JtHcS{vuTm2gYd)c4ZCiGxBq>NSE3)=74~5w@uAJL@}Gs8i-*i#eOve+jGP;$5L;-oyvP` zSmNy;>Nse(?&XSxlPrp(teA9(Z(QSfz262&X4UGtx^j%b2$$`zXBF>6zCMosyg#k6 z$-kjeDVe95wBoyJ&tOW{^eszwjd5ag#=Rwg(EXS+nZ8Pworsk^i#wFza!wcTWa5g< zt;p{46%7wXx&!bm11XH?MVqL?GFQe%)SXfE{?zny$Eug};4+)h&lGHUdpm>PM$<^C zGv#&}KQ1~7W@HdLOEWjteSFIMq@L_>HRlZ%jP$;W7NukU^n;DWX0U9aHFaI6xx2$vMi@p2_D}G zcpUnCZ&*$#tU`%&t_1M3FN=yk&iFNap?w@LGRXJ}u8$*}?as|hcN_jVq52*iP=7b* ztM73|Q>q+GNv%Dv5aQfm;o?s|Xq30)eR{p}Szw54_3idabi~W&YAF)o_U!^{sYa*1_*V z+7E6AVHwjWnwscN;MlJ*qnGXW96F`L^C&-&OzK%GW+AI((=!?x6#6VXX7|^$@jI)z zM3LDB5nG>JfyF=fV>}8cJuE*=yV;VH+qV-4T{~0%7#<^c$|A~RQrQzjuBITi{P4(E zyDDZ2Lc90RT{bgOC{zpYPy4)KqL% z?j9sME4`bbDsCFwSZe6l&(t3+!>o0ckNc4?bTWDxy?T-u+HU@4@!d9mUbGyt)P1Es z`@leYXJ}+i;-%JH)ZK-R84v(!0|@q!2$T3}^$HARa<}BNlp2_4$|9Zm6_`OmNuBa4 z*gD5CzVRERv1+?*5E8Ul`2Uj;+uldz?y}u_>+(*md5>`{{BP0oBB1W07(;l|kxg>* zwCjZc-fDjM_P@dNQ!@dG_{a#Qy>HVXz25aDdX#1rxx^>>(&)dICg^-^_Mh#WD zE1kD1_;oZO@=og8qsxQ`B6`HLPYVUflYVi%UkZ&qH+ok0+Pg3BwE`U9bXUJ0R+@NA zxvCUBo}@j6rN)giv?B&%ywSGSe$@_2m5xUu!yzjLoqy0FdV|`|{H7U1d!MiTZ*JtJ zO&MjXBzCh|d0g*1_X7rMDz_jX`>iIa5M`!{MAzG9H7E1~J>AD23Fr>_evoL9x#q}P zdcU6qgHL|Qfe7|Qw8YBB@&+E&-H2gOSn15=fDAhxQ}vnM zl5_E3AeYV5EWeE^+o0Rb zM@!pcwf{ta!KF#s3U8m?iH5oAnTucY#;AK^ZzH~Y{!ipVP z0)Z(#3zL|l8ZXFOY@D35*eW;-dXMttpO#f=cK4O_Gp?=>I>0`^r>(15b-t#JR$ zKE!GL7&By>rX*FFWqUhjJlh?19w5W9c?4uz7`hWd&^b;O`^pKfzZ!7;gX`EIW<9%H zDX&O7h4&*lhH{z;*RO_Hr@V_o{g3uJ7n-}@qv{IH*P&9*Fo z;bR->*}akjr|Id3sziSveE)M#_sv5zyuT$Z|M6D(1Fl+|-Y@jP^D~Xh8{t*#JK*%S z8HZ)QYO)lE+yF%48>&)4lcxSY3Z{Ny4+C#D-3sj@#rZ-0)7rUW;6>F}mB}*MLRrg_ zpPkl^h3RPFP3g{gvBJ;`c!ixdO8b`!xx?iQ7_)OXlH!_@@pN) zQvjkeq1Xi;0NXrPjxunO4SfHzsdy*E1{`LSASrEo!P!NJmQMPmWx}s4%!vF>Ew6+I zlvKb&M5*(+tp+bR>TTT=lmzV&OhOUwbHYR9=W^jF@jvPxPHYY3oOYIMh~_&tY#(Wx zp9Z&~ObGUcBf#Qf{JCFe-|;>X3*odzyYK)~dV){3Zc%LTjg$cOY_S|KlWFY66qJuq zc1$$=>0j>~_A$pa!j}YB^3Dk`+nCNCc0m>zmNRdqjEoDoVdU3W1sLY%GAnvY?NOI9 zv0YjOP?hacoO!GMzpek`FMG}1kinEj&x?<(Mw2g;#Br){m)BNzR@Tra(|>93weq;_ z;**PHy2HKt3xVs?SV_jI`672}PugY$xH_MyFze`8!_`XJcGNW)sLi{yU>aK<9IBLvD zkB1{d{j+L1LtQ-zA5JV=bVj*01c;x-nOeN7vHx4<`PIn&4p5=;u=<-%x}mPuCY)gZ)!| z*(Z7~WCOE!?Dnp`Av49iQ=?_RmD0L>?ruBp$I5l{>3rc;&*kIKVv-uiJifEa!HdF8 zX0nqhH&mjlXw=Y3hT=%$5o#48IS^m?r(e6ixniwwzi?vuqgK#~!7{<^4ao`Hyx41h zZXc1%Q4P*Tc(v`S&_5qVC$uP41~&=vnuT@XkH+q4Dacb1sRbYXPw>Z;d$Q|ajNX&e zc_x2?5^iWx7{bHjK~>b{-RD25j!zUcH!FcSU0I(-)t(BK)e(hbMV^PWWn8mAULn6Cy<;u+ygw`;7V z|e-YK47$$GG~baFX?36Pq0Cpn8ymARK}m2_ZeV zP@Up#)=X`?6m|C`R@sfQeV%7<1* znq3YutV&%_@p(|@eLXsPw!3h`PRk(k%a;8bpm~dKZftl5<8A{f2oT?m-)}jK(2Dgo z!gMeNwEo%|R)p(6Q=i=PNtzo&?JV)~yE~TtGIpuTxry}^ZXevv7oG!#!fx+g-zr5)c z^Wa;tLJ>emw^61G!(T0%63}pxzDD{A5A3-`j;YjjzMDR`J{|d6prk6U!h#&x;^fx7 zw8yU(>%LgR%)XQI3T#t$cq+~Nruo?^)ocR!as0tz=s0GEy1NDJC{BIC<{imEHW0nr zVgFwJflVFY@yw7?ftuZl_{@za&20U|ew})~cGJVa|FwgvS(>~xX7+kRa$YkPW7zX~ zdG*d?=!1FvQ=((~)y@0P#s+H9NzfL5vj5v8ry<7yt6 z-3a?NzT)a1{OhGxQSvzgJ)8weGf(3|Iwwv`0*-TR1LSn19=U&uP&R#E3yeAHae{0@ zT^otKPNRRCh=hYX_=}}=q@vU??QKT7oeolU^r{v={T;!eyUhFUdP_S0B%TsNBbmnnhH-%TC{| z#zC)lFiK2!g2{?A4fDrPPkupYzHJRo#s|Vi)csN zA%Hh6-4k&KpO$eUvbcB6US0>mS9Gl2D?~!yaWQ1(^ii#0HLn{Re0u=cG+vljvvKw= zZ-#mvY><{&a`~(&J)wd*if`=Uo)u_~&~Tt}r4X8J1s|dIu4|K$mnG8kU3Nq+Ec&@v z#<>J?i$ZK|-Q~ScW?$**3C}oyTLhT_%&JK`yQZ8+ze%YzBU^zPfd#`&f_V+j_jMs*RSvF2mXfAC-qh^bdGcb89m*!aR1a@UJBi&G=Y zSi^$n$#eTvp81ga42=G^R`-9Bx#sick2W`q>G__!{F;(gb*0kfhI)|(3L|5YZ30(V>XychiS8-NE%CdPhY?;<}EoE{hml zN%!mmEv_v`4}O_a$!motYcxnp4yHW~dGjuEw)Y@?!BGXTIDPC7Yg_!n(o$Ns*I&lW z(DN?|Fv)rAlf&s8tU8UHB{De)iaXFJf7g=c#CWwXNN&zK8Txyp(!KFbOaz45U^jkp9@YO>kaR2`!)Oq~bv2412>Qbb*K z7v+q*FaFmcejwLiHw9lhFO4gAi0ih|v^-VCdURt|S>=s(U#N*f8~UJ?;}aBppR${Q zZEA};2!H%|e}-l&uVDwE^4ZtW{qn8H%qy{8ipWcE3M)-r4hQu1 z_z4;BTlWtt(&dI_aK8joRMNn9At8q&SHOV(9dKW;)S{~T>|(5E7qm{ZHOi)Hn>4Cw7q>SK7p{M4{#yD|}mX@IB>RXi> z<-$n(Y88p^O!xaSLE4Um>!;aMM@=YPh^$+434c(~8i7eqGU2R?v5VFK~E=c%jrAL_7_LiEaeV_N-ji@>4X) zJ1KV*^m@sCxizTHmdfaL4sz6nUlcMR8eyn{1{lI8Pw`?G@>(Z`tLLyG#OJM9@Q1<> z5y4XL$6ttx@(7_r0FV!f@aoghN)tkVvNm|&fVO7j=N8+Qn|#!fdy(tCYDG};A=^X( zVh>YZ;{G@BUHQNVYnUBmA09uV6bCFTvru9htl{q?>@86DJiU8yPlx4p%53}L(OCA; zwL|h*fBa^+2r)k!ZI$17zM)0_C4)!Z3e;Ju^q=MNPoqPf`~#&`jP4(FkM-+7t*&iu z>hH%S)%5(>o(R1uFJSx{T6Y1HM3(Oqh;+OTP$AH#>O;Y)fUm_$sVReB;BE3i{$&Pn z7O+k9B8I+MHOT{p#q8%YmiCA^`&+Qd`OW?VHe{}+Q~o)k*l-cjd2~f6LH?wXW&x=Xr5WYVBF6p|x|(>@QWi zG3OWOWFb(EdEhbdW@7u7*1b)_v|&wAB7XXAAtK;IcZh);TR8N(Qe$e6q_arJ{SJd$ zU1$7R_S@?Q+|6dtT<8Mq6g{wD+od{HWVG)IJRMeJ9BB+I+PyYmcL%NE*%FiM5;wX< z?l#AP=iJt17q#=yh1cp8mZC?Zb9O~YL~7??o7Mc9?F;@3@2pMh(d$Xed(?Hj2kA#D z5V+v_aqkioxLs-NVoP&DSUZV6kpw~BwX{Oc#8|^_eT)JPAN|JL93MXHnGImyv4Na(`Mi+c)j&?A~`3j1#1WZj{ zE>tSYAZ0WxYLoATpNtrm=5yh}=yd$(`pDzWo{+4JZx1s=^&whDBFDKSF+D>XVI59K zQ?{QXtj%Qy%ZQ`c%#v#_R7i^7#pC zEr*eRji_8eEC%~YGU`_XH<`T3qA>%(4w)n`v(wP0bC+!gE!|HzWt)b}B|afAniA~N zoy9^fxi1;I*Gg4Q_8ur~rHn!Lbj1$NHcI}8sfEc3E}FI75W`trpr|2jq_XOWuh4A# zLH$3jDgD%z&{5eo_Fq@B;!Ip2wR~~Sy_wkBJ?exZ_40N@>k_!zP=5)o`Tpk?#aPgR zc5*zCdUEhpZ~)a5#jP=wAG%^KL8I_DBFSPc^ ztqA=b;TZls0m#oU*)Js8F3IrA-)dJEtY}tJPhrlQnHN-Or8Z`nhX=dMef`1r3$Xl( z>~$|1dbvQAd`vT1HVv&i?lax7`F$7d*v1zH*%awMApy{OAg2|yQoMVPtn`{8*5k<8W}1PMU-c7m>hF<^Z-R8i11jjya}8$t zriQL6>csFPF?d6>eo}1CWUStEKbnvH31&(a(5`k_74&I3lP^c@yH|tR?2-EeFaSl5 zme=+|ip;wWHNeRH&}jumy<;yP_=qJf-8yk(@CEUH(bVw9oLEeaWA(=1ixMf5Lv5nj zrcLa}KJs}TW%)zcRd9A|q}-ZFGf1R+=&S7uZHFlIRTA-bn^iC8kIb&}hl8)E$G6{& zCZ$YXy;hYt`7XCiNzO#j3;my}JT5z_w;)+inBn(1s2HqYn)y-y`j6gg?(YcdnGVJ! zM;f{Y5%cYjw{XeN3T8!J<{#3I@qn5^;t;2wC6fK`Ul{pD>qeecclN3xHTNO%5H`9= z#f#$;NNT@WG~s^KjK8z(y!Emhz?O6P7Tii8ioP#7{C7rPYQd&Q-w%DNaR(dT8!OJ6 z>z3&0{xtg8lDen1Ko%u=+vDO{=ai+7Z!#suj0fq{Uwa2~(7lLWhG%F@p0Th2JoYNm zByx@%mTcL`ZnyaaF9s(J7v53il&z`Loj}vy{+8=5tmrgV2LzzNV|wV)KJB;;EkAX>#Tt%Z&bx(|5lvO9qi>}+Zk`Cv&@#Cb+1x6_{ zIaGI79P)DvYckl>qzXBcYZ6LUqqUe=Vz z9R0S`aAw4?Mi*^|w3puRc?<5z*}K1QeC7bZSg`b*l)%fR0vMO|WLhK>BP@R(87S|AiC#IFQ?b&b2?2DkWZijpLSOH$JgPUKL2R-d~p4 z-nBAGxznjOuz#t$xVcjHXo$?OO4V)w$eivLsc0={m%hqHuOu1O3TlY#5heA#WhNge zbe5@dQ>=E&1e!<|ttApA4P&b9vi`~;25n|fQ;v0ckMz&^Yt3RkRzH@BPyws#w#hu* z_+6{5Gei2lt))9L-Loo?zf15y+Vd^}a`ybodj$g>Cp-h8>%b{9z~g5BYVX`i+MHT5 z1s8Te5kv%J!bd{sLMEoN_8PqXJfJml)YDd-j`=FxB1F+wYPDQ)E1EMDPqo?QEAJh? zB0p&R#e#tO#ht=eIC1<(Ccj>v?woYoLRC%t+PXW!5lA`m=UIh9dMjcn`^K=BxMJF2 z26=O96mX{^jy*r=CiMPL0`Cjs-d&kOUrSdPN#bdGxtcNJ z*0XwoiUn8J0r`0?YE3RqUxq2FK ztPHc&&PZWMWEVDm>_>W0R>{xH_~1q9x8qNNozdS98c1>W9c(KF(2WkenU7&{#2uDi zu-^{}n43S|E{s|65$7tJHLp4qrA{^m2I??H?*fa&+;k`6Jxz)o&F)ssC`ys2!|>nz&Aag$rU1Fz%;^ zladr138T{OvVNHI#X`=9BkvraDCy*1(XWlAtjx@t4084kN4`?NIGwF=t1t#4kfJg^ zlovwo(f;%vK7FZs!zuQ3RLR&q_o?^qwZ}&@) z%u?u6P=|oxj(>Hk8o+gWF!Gj0Zr6>1i|_Z+wp2L&zb)l_ z{&dyIbv;4NLZc(JX=;}E7e3Nr;-%)yK1$t3Y%6vM^k>U?c%PEgs5*@gClnyJB+3)& z@>}j!2F|S*>~{g0+i2|ac!z5apA56$+`Zlwu0pP|@AgW+c^uPdN!C=mvZ6+M>xyd1 zlWVsMBekXXWto8#(!Hu+pm4B9s^LEuGF7IN(S3e~sYZ&?@A4-yl8SZ<%*O;Gx(r5i zSD?#}vjsl%91gX=LGRf1F=&xxipb*t*62)}#k)E!%E+UK`}iF`Gp^}oT%BxI1l#dx z%%fe7qQ(koFWhFA{1W;)0e z*;@wZP3K7$Q;MRcULB4}$+6yv#J0=NTcZp$822X`rqt9=R49zTJh z?r>FeHTBn{s^xR)Lh;2Va+I(T^@EtJO3JmQ#))itxxC1QfY)<>Z70W`t3M!V=t@iG zyFoaIkXaL9f{U}uc#ugX_c$y)v6s!=YG*4-;7er&O%mIhN}UxRtQ9$VypN>jf;?y? zeYev|zke0p=JN(Rd6jBeuSazwWsL=qIL?V8B$nD9t`0P;M7{TMpOcjju40YVEO(h` z&W^5Lc5sRe86dXStR%&lde>_l0_!y9P<%A5NFdr3!L~C#E34e`*kPgV!$PjOol1Qv z(k;?q-T|&B^6eMtBZ#0nx;|qs^-&7~vJ8}tjAyB&3iNp@JaMOq$Ro4bmFS@`{PI$Fwm?(BVo$c7{&T%aKZn!MHaG9pk?a{Ta@*Z&7Gr4^oygU7~^S+Q#X-omC z2KAoPWZ!c;q-nH&Da*RE;YDb7qgweJw+dhf?co?JjU((fBTXxV3e34#i3;0{x32mA z>{jl^1`*NshcEbC7?v~k=P0vF!rtilC;*=Ax(;k~8PTm4fBvhg^E=S`P4PpFCbkLo zKOYxL)(9)bU$O|)k5C$U-K?%-K|YmjyrqI&txajdOXV79b@CJv~3 zCcWWVkbo?2=qS6EJd4V5} zW*Al{)E*?Ke!2=GM?&61tqMnn1O!iDP)LhNTg{6#(f!-G743C8Y49S)Fa3q^IkcTj zXA%#C$1$bgDt>kvuv2-5f~2NX4-SL=t;~9&KibgjFY&M3d9Iqsg`Kvgj}l|dQmuds z`*gppebh4TD=i6CW=K?9148?AvIVv;?;f{b2qxIycP6UsgXO$7qcfqHPOdsvTF=|N zC3f@4wT{Vre1)|Bppp7l_wMc)w3wLZjvIHmchzNCYYdW>nb6i8o(*#*)2AMD@_L@( z<$6&v!>M$?9MosSlQj{@D%!kUWN^XIBs}nw4^D^Sr0?!Ohs?X$2lYpa>x*SIba}b`ndpkpmr)6fv3%UJD{d5|+okmNhfQJd8=fg84+0@gEzRgh z4L6%mbrLo9{LHr}jss*^kK9%@@>P4pePFXn(v`yJsoH8i-4MYIXZ}p7zADvg=T}(p zr0O2~q4Ad;^+JCdQEDjWDd#UhKq57PRQm>Yg!y$f@-)BWSYpenLYRwOz=jWC%;N{(*E>8 z{>U{+cM9?JHCZLg0gbN|gj!FMB+D2J-#m4=VHm3D0GXgMJo`ONpa2ytTAq0zGC^p^$|&}!vC$(N=o$`P8u)5@D={hgu3%bWi- zH@t`s3QFFTh@}_M;|R2eGp3L1flcTudD(SAUsS>@LoXy3^++Yp?Muw@I%aK+$G*8Q zhR)-U?EgM6TXW2t9CXR8vD4{+YpKXjf$RNKrPus9q(Pfn#RH8VV;nCyTF@0eizu9f z=dJaY%`cfK4LV0(!!d62e%Bm^fx>EHHy(FywT32j#Ll=Y9%BYR6cm)=1#jhWXmdDi zVhmW(4t;=S)$U;K11UBO0t{Fnc5qAfqbq7DXNU7ep#&mknB}B1(9rIbybKY_a&N6_ zgc|)Y6KCM5C9_<2*dFV@BJEax-F8KN)o$!)m6MOu z-oIg>r%RI9n56z4=Gz-?Wo}Lu;H`p?Pnn+}{su`M@vKtvXl(|rtKfZHl?4soZ@Xl zVG)0QAIV}1Kc^c7Y{z<(Lo@<`31c;6N_Fkc+2nmU`i2_Yt7&c8e`5(=-Urm-XFAm^ zx@!nNVkRF`F=i0n+s0{A1n^bs5mEtGxS5U8#5Y2kC7J~L0cSLB>3z$OF5JO26!wEE$}tn)9DA5? z-zR&qr8{-H+gcjy=8!1q{m56-nt=d0r?uy}ZoJv#NwZ+L`P>K#MpDIf{N)^hG=tNV zM<*$fi|x6*7D@$0O=A8|I*#QyV7SsfxUAj!YCmrK{x@lhf=7+mV{Q6cmcDeLu`IxT zW>ENPND;T`ld{3@V9-cleQcWsOe4PYY)Gu8P>OX(Vsa$K;RuE}(fqH0;w9KnlyvNV zsBT(_O)dN-`cH_-UEtYm1jbyf3+H&D7Jb3&#Lj1_HA6?0dBgoNO(OC&WSEwB_ z5=bY-jeMU+gBFY8p7XTFQ$V?Kf!lzFkWqwliVng2H|B-5DEc^^FSq&5OW{m)_qyY0 z5HS7n_|;vJ(kn)XBNrCJ_cPEDw}#yP`G+se$O2>3XM zB5x&WId#jGxd?7*7x|L+G_z}Bbu8q6d#yLl`+6yq7_Pc?cs<08DmoEWRT3d)%b+tV z9nJqZgT`n7IvpGG2iqbn*M;PNQqNP*i78JBNZI04bCh!7a~9vEvw9{ML|-fY@olwv zmikhntF!qwQYMPOJkx%bG*ZXNj2akv5+b^=zMGoZxMfAN$^=t}66g+r@xg+P!aY|mxu-V3hRp)5?h+b~jt?*ENHC|q!OYeh zAi?5hu6dY4!)LS{irvq|4wJs>U!SOf7cY?8a;YCMNRs2Q*}ORTZOQ1Sl=4rL61ZiJAerV?K+c?A*J8R-7E+v2E>7IMMI zD&*j#HzTE=5u8Jk+4EH+G%#Q>#{%|JDIXpbtdMYLkJ2uiW?fA9SPz58$)`V#t5mv8 zfd+40dgc}lL6~j74ylUD*6<%}W?K3DN0{wbaD!~-?^2%h%_8EanrJs%mdGz4rX_n7 zHammizywJ$9b^Nmag!OfU$^BI_i;&qAN4T7-v=P(h z2=i&**J?3iuuYROjXC8_lZ<}MxAiPiTZAB(8ltcdyuH}@H|g(xoqyFXY32sa8F`Bp zLV518Aj>0^wIao4%r~k%Al^>XNxg{>Hffy%?W{|w{Zt0i9W3;x7kG;Aitn7S3i`aJ z%2BZ6&iI^^!`4^y8xzpQS2o8BB=lbn`@b@);*XR+saTRm$&P!n8G!Z(r zb;rpqs^^*}Nfb~2=y)S!4v!ebBHL_yqr{@~0o2wYXBDKrTo3bZCrqeF%e|WOYmaR4 zWB+eg$u7l(omzfjC^r)6h`l4_Faf2VR-1^ZGx1$4mfjd~)Qb^8y>W#rh9UkzB{eS> zduUAYo~#Ikw9oEc`aSjhehIr}pe>9ZDa9uokDALx&FUEp`n}2WBs7-4OC5;*Gf+rk zgFz1xjw_~BdL~jO74^r991w{~FXy)==V8c`BgY|yV4}X2Jv>-7e1<=%eGWb4EOHqfk6U492|zq6(w((Z3+EV zPSOY|><^^Wf_XT=!*qIW?DVq=UpA^1SmbthVhC>=fuOTY=E4t)&ZT0^?f)haJ9asp z*Q2_WIW!blF8od`oNiVy?!Fj)m%$i9v>DWN>)EztjOHC~`QFNVw3XL>QR@v|p6JcD zg}-i=-nbk&D};eV-S3{^$3E3w1|C(E;2*G7tFLSIo5+d{Gh%UTDT#7J94?tGo*cd2 z?G5~OBPY7_9WBhRE$ZH-IQ_+?-mt#S99aBh+mvF4F^gY8Iu|Uzt6SR8+^mgB-1Dyb zp>1~CRBxWWn|*pY*Ws}MBWFDmnXnpr7-<&hgNx0>Ju$Xrg_6hP@&ifhvB)}o@8d}+ zAU2WVw0Si|CI;uVp3u2dik(W392lemG82$BUM>jBOW4~!lKXQ+x6039J*aqMo=I?o zU_74pnY{gvKko^*UgToWzx%O1HsT`X(&BgT+<+ahS|3hhY`XU%n*}n!_n_Um0rrVZhUYjnhqDPg_8qo zI+>d9Z&;XBxCLC(f0arbjh%n|5%Xm?uo=bR9Cq%(Stbc4j}DOY=fD4l`#PR2$$PQ) zdq*KRD|4=6UiphgI+^uqzP2`Wc+fTgc7LTFd>jwz*DwJ=TTO6TlvA&0V>CnbB4qt> z@=56gQn+oVR^zP?HJ2t-T?NW*mE^wqMkdN%oVAZ0IgJrB{zsf+)!Tk~7deYyNp!0& znx9M&bj5PG@1|_TyEQ3<*nZZz({;GT~ z+AIAuAZmlQ?Buve-;IKTmKAhl9bLHTcmn{HEd!Yl;UFeX>>S1#NyUT)Em%yvx-ooj z?^K8&VwyHNDM{6t$`U~*EJxk-QN(RhpRx(1j;12TT4`%OnxJp<&rgae+Lc9Uou>9n z|ATz6rQTa^?6JOI%$ZIn87)wKzE_}r+c}Ad7)2I|5X}Uvwdg$*vw0^qk{;&k{PPRl{%HGRm(;C-?iQ96fjlRZNs)QcSjBzNWFLrb6*-=;C&j!coF%|m@@NY&x>mviM*8VAC&TwP^(+$)v z$I|h_7tniH+M_~f9Nwa^Cx_D+$)1tkW7~tHGpeZwiNo%+=IN(mE+M)zkGL+98ru4! z>x|AryM%uE|_G@E-`97<&})fHrW}M%%OL6&fxj z;r-H3=y7Dlmje`t|7^lNI^Oa9D5C;1azkbCgDj(&H0>x9Xp$Mw%%5N-a` z5;N#hf3Vxns*oVq_va>c9Z#BKc%nw%GP8AQ8Yruaf6-hVfUqfOf-4~sJN&nAj_EBP zj=oHlzdIfahLLqvujf!ltz&E*c$Xebz4v_>SAtC8r;GYQX7c_@D`4kCrY3k_y!Yo3Jqpd+C ze`*#V(v6sSvD$bMngO7mGdLK6hB_!`>;rRaNRQ5Ato9sd6X&sX8i6J!PL(uRFUm~UGBLR+9^yZ`cB-&6SW`giZsMdvL-B2&f~NJ;Ip=?-^rox z)I!5rjm*gWjF0kXP5n=<>q9n`1|^33krI?uF~eNlZW)6tAQ9r6OFBi^(%w&#KT9#} zd**0(K%WPJ_oAJ>C;x)T3a>e~W{x4lpAKJwrO0SU>&g}9Qw6Pz%n?4gZ|h*cC~o#6A0Z`8r)1%?(~dG6<$BSU1FaMYkw!*0GtJ}~bUdrbE&Df6?LIsz zSXv!Ai#tg_&M~-59m}NZ09-0JhJs;XCW|OXOKcG>Ij8&-o5n^Ym^5@;&OKqBXX-Xf zY)FSBo3exr{DjLf*6WU4D-AnddDZOlP+uui*N(HyyvMIO9g4 znP~Tg?wX&}&uh(NLIqE6z-AMW#=9WYu)l+u6h?sTyVPQZZds%SC4va5`Giz&Mpe4L z#upMa8cQe`oL}PkJu|r3Uy|3ob1;+X3HI;!e%TN;_Pwca^l}lqJLe1WK?hg8IWu4y z=sACd|6~}d4?@`0u5C2?ZwPL=^8)bsbZ2@pGqtc+eD8K132WfJyLgQvO?jMB)-N$B zJyj>ykg;E(5F;(ArQfBs--G)#7B!J-#tkljO$aGF_&SNHGP&Hfdsn+@!e@PWPn&`moFT#XpZl_`j5&|@_7saZ)pnZ@SwSO{ z>e1aEDeteT3}Cb{TA|N8giH?HbiWu<;sm(@8!t`+Ld$v=mA{XGwne}iZOnpf zY->Ume8KUCA6%hzqRAt_kIP>5r`v&RrN+WUjko>fVy`}xmizjtTJ}tYoC?e0QJA5U zE8G96Nl8Cxiq;};_rbb98eil&C1Dox-oVb+wxp%$Z4wxE5OW3&oPuMOaT+l9WziW& zUMr+g>b1l*pcqv`QT=zK@>B7vfCo|00i?%w?pEa$`Ao-5@))V((C_==filRTGt6j; zWt-7`B|w^_$x2}su@O-+?=fW9#{QP=@BFtJc@cvT!GuG@@%hywlwVMd37P?|?AFHV?VWpzyL&agnzY&{bJt}9*NY22j0Qaq=OXhP zC^>_VWzW*{he1PWGPv;=dW&Adh`0K$z!TOBzNxdhQ4Q^}_w{`Vk=zA|-TSA_b~+vj zo-`x1%;GNWp#u;(Z#S0Lomb?wse&}!aesx+4Z7Prv$ImfH#9fUaKc?I^CL}Zo=PCi zP=X(tK6=qH&gcZK2>Ck`;D0(%7=W_QqDHl2+8P`y<&6Z`9NkHSVXv2E9IwzCSyoS}s}*X#F>x zJmaty>95lw2xNEq{i_1%1*b!w*|J_OHY-RYJ*FRU3txDVA&0WOGlnlNzJ87DM1Tiw z-&2!r@^*MvxMxdstfdZz+a`WJ{!fY?)B=AF6{>X?}KU`0Vv8kr?%HhlX1H=FDxhVGg%Z(*g>+$_Lw2 zB)%;W;gr8WHPoR%xo?NHF8r||xJ^orG(S*a+aA?5q=R2ZuGg(Q)$q?4TkPv}pLd&h z)7uD6IS&qW;Mz~@=A3o3FBs)qW5s;K)B_Ziq(LSUg)xt#A0@zIVzMzEu5sK^XMptF z#~4ZSp~P;}xIRO}yO;3)iD`&VmDMXa ziSm{sif`YKs%zlBIi4rXGIIO3XE9#xr%>ECgCE(KO=I#49C682JFfe$8Tj39A}uR) zQ;=l5(5fby2r9=Eyu_*2GK~w=ws2F6oOjt>)PS_8s@z_-Z|iT*4nXp>&uVltOb7le z#?&;}iqL7$w06#pAj&(^lZ?X#`)Xk67G3v=gV?55{pRjka5Jxz3~-t*?r+UAtFsl2 z77$ln)wr}jkP)1dW*4o3xemjS_C>bDo+csb5>J`72ja0uo|qxYH8wk(Hzuhs1#eku ztZilJXa1FnN?%y`IdQAt37ixX0!LCMaJ1+DpbFX-bNN4wF3kqpSN5BF`{EZB>xL#r z&~aQe?$I3cHn#nH8IH_Mv|(-kI?4;)4V0CB8D^Q(HuV-zR@ig<(6A@dSB)CnX44LJ z)uwz1@t-dRoY%fcz%1fYS8{}@lx)~3ZH>K|5ZeIUosbzFY!D-${@{sxD}$x($`#@Y z3^Cutdjw;n=NlizaCX=$xL4c4n)I{1|06f2LNe!M_YDk9B6kA>5!0$=XXOi z_pLm&!?7h^CY>=xJfMLdKv7fsjSib0lD5w?c6E$`ve~9yUFc+=4_v$?!ZAvXGp*(C zR%N%p_d-oUY&ee7GLPA4dNcQaVqZ7CQPM6|r>pXOZO)y2SJ4Q{p~fUr+;x%|Tm;ZI zAj&$Xr`~7_lK{2>Re2Tg8RaU06g;Jo#^o8r_=nFM%e#+_F*EM35l2Uk`5C|CZdUNK zx$6_h_-oSyi(jeJ#hcaC*2r*~1LwYJp|u^4eb>U{oCr9Iz=P~oUZlAID7h5bGUS(u zpgU-Mn8bIAI-g3XN6kk~tz|a!u7l02q_@r~ysw$5$&I27Q6J7Qh&KY38}o+Hg92;I zShB6?sn)fssyD-(wykt4m9rza`v&e`MoLz^yr}>V2=yF^m(@htr-NJnkD@dGXTpEr zc%@RgD!H#pr4o{JYlL>T#c{6HgZIx#wNVJf-VW&IG_T8M z?nYjMs=jKY{wi;h9n>AC%Bde+Y3k(~)*dR^!9Kt9ZL|h+msR#t zVBg%*S^G+ed@ZzS@#4N`oF=4sssMPpIw@_zU8nJkb!isqD?-;cx5b?CKEyGmvxB3! z=7%kK?W{so2j}PA)P)^!wJ6+^+q9F#_W(JDl2=#ik`MkXczKUH)2=jL(N9MCtBbTr z@RkfC_TZ8n#Vcn~N{(+Sh1m;c@jB=5-1D{IVar9^Xi{yBEg${zh`T@f)wVB3W17)j zLm9r}xW#%u4Xzh`H1b9&S&6Q-1gOG?D&ESH<4(FIj^-;mep0nUGUiEV79XZ7NO$3d zra`3kO!Jj5_jo-TixAgAC_6|KV3oZQS>yG6Sb#L9e)1xt4hYF z&z0%E9^;S|InwpqQ(uddTDINir$?9nf6|KLW{6shcmvrKLD#*WTr$8`x1V0?0U+kA zJ`Hzv|CYId|29buH)YwY0P15AD(cL@QH76mR6GA?w5vpD2 zrZQc);t5aHCHOPNv4lDy+9%vZ%hXv^z#Bm0D}q%SBZmImD*TtFO+3i_hv3}{+E=ls zZT@&k*fyj+cjh}M1KA<$lVHiNeBDV2nRS{3#z$l~eKd-WJDE;7;!&TUY0WyNg#XhQ z)MRam|52P;ZyM$hy8RWE?r?RZtQ-WWzfp-FB}~*1EbCimasf#b{&R1B5zD~-vo7$P z1r;IH-&K>|4fA7Kd^Lr;0B!$5>Q146p(HrhwSSBsqXQ|2I*jBG%nO( zt>aCjVKzs(>cr2=aKWA+I>5zF?7dNVXV#*}D}zhWPR#+Q(bnvWXX;mKbu$j`jClq{ zNN?|EbQCn%ZzvO&D#!oM^e{2(ECOY}RYUdnS@){XYg1WTD#ChqgFeqH)g#V1PC94Y z-ft+0X3WfoDter>5XST62vdG+KT~9X9?bg;jfBI}ryDx8In6c)5BR)zfAl;r*e5i8 zvLUf?d$>IfPW7+;7|K5I_waCT*|N0ScDWF0VasmKi~F;I^$&E^+St9V=`U?5Bz_w{ zqb3ijvFSq0s%efXxT{|CN11{*DhQ&BI0bIMR%!pcS8Y08vV4xETXkA4Ka$)&R>b@g z(N&^{pDlhZo{)jw1JyonK2p}bb4g(N_4ab~FdGopfcMDBcP`ajAP$MlBPcXYkB6wq zdD#Wvv3EIw?x9t`#l7ZD*wR~dV(A`ir{c*(Xs$h_kzPR$re0+*s>f?Gf#??ap8o7L z=%d{g!B)>>hxE^WsO}qW3i6v)oV11z}J2E#888Vw(xSdp1Gw_$2sUowHc(M;95Wb;8;qVjj! znW-n-HvusKpNUPQG|sJ0@`IwW+-hfo8eoP)=0!bmcNKUT8-GB5DVM=f$3<=UAnZs# zV@*S&KHI*tP1QmJqrYzCw)C&H)a4Xh<|nL@A-5@4g3V7z$kMo#!(%F9c@UI_}ikm56R()1t+|`#PTYd<6tU zgXSr$y#e+9b!pefn~En6f{Pd1A)BjEJ(W$i}#2z$3!QR;0;drf_Va7icmMON(?yNFGMyGUy5W^y)AWtsr=EVj{ zC5E-RaLOz80^FKZ$x*Ztlu4+!dRsqLx+tzk^C5x9N}y?T(iqKA(vUYYajDHg`O?)G zgU<~PZtto-&g7eZR-$XnF{6P+v2+H9e+T2sIOcM+{Ww8qLD8P6sP-Bbm!TkXhj;R? z_>{rwIA}%=NRwhO%M^GQ?&?6!N5NMz^L+aaznKxnXF~@+lkYFyjlGxFB~kw;D(8(n zD}2cNw2>jme)_)x%RbOvHRiEuvV&gRukRXZ%c;M*oi?Lo=?}1GvcBClUk>MvGk;k$ zXwN}PRvdDBIcQS>@qDgDReZ>e*USh-j{dgYc~X*Pq-<$Hx9atYnqF29|B_jnZF<(v zW`Pl>!^ndN0J=y)DCVeUw{1^ReuY-kk~95Y%jU1VpIt)%bY~#2QS=py2NaMg=o3Es zIb2&QBSGPjs&}-uiP#i*WG#;>R9|F+dhVdJG9Wzg@MtquE2;!bi8#DJWpSL=E6Vo) z?WS*AG_o&Dv7FQ3Dz$ZDzsL*%YK#ttJV*0~6w9j!&Rz-T8En}F3>JO!s1tmzbbidP zy>7d~*yRBsDAn~@)~{RPTBS7y)gIL03c54*La-d;ncDP0Xrm=*KZ*6j+B{DOfmB?_ z8KPRws=~UFG8P{ch8(+RrT1-M#d*242y8pCSV!zwT_mT5k+-f;AiEso>;-EUNBd%U zk*9f+o9WL?C=W3bqGc>#TWTBqW$DHv{ZvPnx)3b1Rq@P*;zs5zGg1Tjx@c&o1^*J1 zIKMU43la9s)ReEjS#xnnx@G??6KGK=A4xif)Q+aCzbXk$0ltXu^cAPGQ-eu6*91rC3b?~fn4_XS?< zx=O9w77xyL`b!f#!)dK^uqa!|6eB$)K0V*7}mv=nT0 zpKo{JV$%h=?Ex_5)vhLafq_Eyl@L;94y8m$+Y}8y# z__U9HhxA2U!;$hwR{y5xVrIfD)%v@*4%O;;QR6seNn7z`f5)UE7Zx-yBEO+)|E7Zc zE_?n`X#SGDpXVMod>{*qU{dKR?7;z66pI*+yAnJ0?mi^V?E>ZY!rCZc&}qG?)BK-B z`VpJC(+^RS8H~H9Ey=ot;u!JnGS@i#w|lxM^riIGpPh<*!I^T?DQf$`#}=n%r@d@- z7y%ngm@}Rvy$^2*&v>)T3wxBNT_5Ko0m~|2JmsW5_h)=pgjN_mWKNE!O4LQ&r@x_{ zlW&PyI>kk?JDDK_`YjhG&BL0lA}c~des!KE_Y~XyM}TN>u9<{vPucly zd~O!PI>mF6upT!c0;`qHofaqpwU4yQT?!44;_XkSel6S`pq4uYMANE$) z=ZplNowq;U^(pEvP;zYN9_|USJWn-n6ZQ7*ejm6Bi4*$iu7QAbOyj84n2N>;SRRX6!k1S32=qZD2mchV5LESL~vrAp=-aMUMBO4wu^R? zT9$Ciev=|%&an8CJJvo{hPL*Ww$@`>q>b8F^PM>sQj$S3*Bg{{yd%{n`c7=+;Dzh@ z`&)|SAbe6giBgh1QMi(}-avYRITRVU+Y4#fr6ZT8gIN8ZH4HspR@w!R-vFc~U8D8w zP}cq=@`~^M2ki6Y(U`$q19?;6yimzMmc+BhZ=P~ZO-&P@fN<&%wSQGk%M;qRN7l6e z?(OI}_)tKxjLfM$R9TKhF2P>SxzE?$@NCSQdM)Yb1u~VQY>vCM9n^blD&a|uRRv?m z_(LAmwtCGt%K=m{bz}np3}U|teZDyZ66&2dG|~!x1uRu<~THz^l0UmPvF>1va92R zgTu0x2kREeTQH;nQIuM|`sCj7IVt}@PUL=mt$NVNgv)HqB`xb+PmNhl!a2lbVLJA5b-kHnckiO_MUT=D9qgk>+F7t%mtE2>~D*uN$}G7)sF$5lsAkeBI&1x^@aviO6v0%8FjcsYOqEYT6j~ zaUEimG8hxiD23~|a=-$2Ur*-txcwejAo@P^gj3>b$okKaF`^i@8$JHyr;Y$zp{b7# z@rBB+qp*#}T< zD?HP%c-^z%8@abF=U}UL!W8X5%**;NmBJpg(=q#LtJ!~z9Iy-%nPmZzo#I)%G%tv? zb|ED4@Z^~1UO2ULR4*v1@J0C=O%lz7iIF+$4+6@w+cs_VcQS`0BLoMb|0rwwntM{d zgWYDw1&^yUJ4?po8BE;-*#d>!imFcg)hGSl5Pkp6>YDS0ZG_Pj*F89%`ri~c&qDA} z$H1ocqqY=SOv$!Geux_7u{`OgqBm<@y)BQy4aiD=*%S%xP47m2tLO#aU{=Z0jfxCT zd{_DUmy0}MW#IiLPz!%79M$aSl}=S@ocil|S;fH4TKdS49jh`xbX@JXj0*~ZWav>% z<7Zms$&qyma#~$?1y?AJ2w|waxpq(&*rLlOG=ef*gsnc2{C%%KMzbsRObq!PCA(d8 zY+3BP(wC*~c^bLkm`kPjRtZc_Qm0*z zZ-|*V-ha2_k@QkPX3#&SYJyZ=pyuth-JUKHD#l0KcM*vC%`~Bt9 zZGkrn_ISpGyLvo>Dgmm`H{eU0;0ajG&VVK>JVp*CImsaj54cKud?-)CWiGkqb}a3e zw-L(<=4W`AsX(>jw!b~0AzH+mBxm?j0J>?zFoW?opux$Ci|IeX|3KAr^VJpkck2S^ zt?SITg~1o_JxtA?*^`YPimM6W>Q_?`S=iYXVc_OHD0D7R@5YVfqwf}JMxM)l<^Ik+ zR=QTU>WFYp9dGvVD?W(%8}89>t9Twc3}XPCQMbHHR{`zQgWeyFw_5o>I7%g5Qrqh) z&DWVRhCB{()HaWq4s1|VWxHo->nK|J@(QX)b=U4JW;+vsiiAzL3*Rzvh6qS#N_g3~R>Frs1Sq z*hEyYX--8unQi5EbVn3cU}$!A+w+>x0#0rB+j5XqQ#&;TMH}pVqaqagAEa$5=|KqZ zW=5tXv7w#ys6a0*00IwixEQ!gwEu8spv@-ZvnM_JMFw^n>x_C z?(Fu^>ZZJBchH#)tZmb3YP-B~%+-T|s?MNQ&!65!!^8x2*7g*`!)?|U*=#(%1c_N& zfz=fkPMtE>W_x?CQ5=HY%i8y&M zKRY0%+(ui9+jlE<5zqEG3L;iH<+KJGkXu)E{jO#Zn;4+DX77nW@#6K0QmwJr;TNTK z9ZiJvfGm$-zrh6Yy=ksR(l|&EGU%f98w(UkT7;9xhz=@H@D59B`&KmaXcCNZX?j?l z-Cz?_QxZ|VHuRmrI&f;y3^nmO3EKQRV#2ma9XBu2Vx?WGE>c=5#S}1(>8b|}LoOTM zmgY=Sj#qQDgEOqMR(J?X`|U0JVoQ&Gj+C{ZL@JKt89q`jza+MIuolt@?#YUMH;kAgK|m-x zKy0v5{yL^jZgqra`9=&G?J zCowJYy1<>aHlwG&Bs`cNWc!G=K6^~ehj@NlKZDP^%4G@pm3j^5CVkz|jOTLH>t^c! zgg>cd$RSQFV|b1!83DQCcl-$Uc1g;-W{4E{k`!=4H4@LwB1{X%pX-dHT_UhzA{X4e z!#^7-VAj$pMtX+_KY|);yZ$L4OxhooL_oN*+P8kxZ=Gulmgt1v)BZwu?Lg#U>em7# zk_PbywT8iBfh%iOaJfeii5IrTDP^*H{!IP;4$&>?Te#b9WB=i<(vMy#Ns_d8>;8N( z@vd93_8-oWNmu^IbJ>LApPM^gP>WbXxI8<3eTh`z-#5B(2lZlpo851+HxoQ%T#J{7 zI~=WbN4zwO(pfkrSv^X+Cobz!-1weeLG=kyted{MzOH|#tJgOsYn`^+vmQKG_olo+rn?|&;7i7{=EqR(wEi%BafHwGo65KY zK4I;FK>p$~H@2L*K;H|omxGTMMbCi(mtYUHUf>|~p#I+bqu!NZfrjyra%ctTzuSF-2=;&~Q=!+11jhGj1UptnFJ& zbZvS!i+9-+;U7l|7PcUg*%AZZfRVmNs`Os57E{KG`E)T{`CptbJ4hRB;JMQ~mZFG!RnR}E%7g& zE}2;qWoTBO)5Xf3U=;Wk?p25cb-ia72JZT)WJ4xzPOC_JYc>@8(RbE?x{!iAi=e#AL$Es)7))64QPyP1e62|Zo3j7 z0ePhRzskCxA^MO6?eb2AV1%cijYx-u+#AtWN4e~KT#Dd#jfssu zNwC?8eh0gNOkORq$y)l>KanCnB|d;8=)sTbQZkv=_45d=MA^2k?s1jMCZoTb^1_ly ztzVY1wv5s&|Kp+O2jYjyN`^H-$fd@mHmU-!CUiEZeQ&e47{5^f_#qs2@~)GNeKgJL`h~NN700cpJ<*(FM7JN8#o#nT#nC zqNUj!6}vuOFVmODSL+TW$k{8S=Yc<8hg#LlDP=n1tKx=pCe!1@WJX#jm$(SI)rQo8 zBa~%Cc&X~kW4~7eodKi)&J8%06>g&M+8rKIVk2UPC0SI3R4YT6!H!t4hgvNpe zq8tO40(JK_xt*@;Jo{jLbAf*8OR?rE`cdh*qw&CvhG$uQ5WRg?!UCib<)`+=V$kuA-ewi+65kC5?GgMv zFEcd=YGvB{GsMkLp+fWWa?E>PO{h(5FtM1&&KMXcn)lJK1n?Hv6R#gEE7eGkO zjgx^tDxeG6E__uX@&pn%@a8CA!|36w*bpxRhDW~CNbFe#hc-`&-qv0Y%eKTZfoj>f zy3f4ByqMfLIoL_6Nk*zLn4VG5+gr?G%aQ#I`G(mNcTcD0rCQ*g2XK1>oPNj=jSa$j z3YGHZtYFNQ*weemRa@sRJ1-WR1AVHtTjBi2l~$R1ei8~VXmeeWbj@LL)iOS{Xm7+2 zJ8aTq&zQD!T#*#H#bvpx#S?4)(stVQ$yiVT;j6_d)CXVf9$FYx#lS{E6E)7fhrA5g z1OddeeAF(D*wkf2qKUPLdCYRCtRar^xxX`mfW9oWb0{9(ktooa!8z5Do_R_Vdo&0{aP|4z{5IZMhC7$_bik682hUBHBkJ)A?2q+udR=%+ErZ?} zrounN2fdsDcUHSsoyHE+GPdaO%a*WmwY|Xw4#JVKlto?CgaxHSoiRe*7*FengrWi* zKOn1PjL9mHp}^RqD}miQ!QcMU=Y0*bfzHakv)51V{uzCFd*d00P}j4Aqlo}p6U;mz ze^c*0)^Vyqzk@1k*5H#t79$qkCj6?NjP+d6vLy_E_l7O=`80)*6VCJbF4kGu==*8+ zph<|i6TatHXr~yF-z9acp@GUXxeoTYNdwG4`<8gD9A{sVlAgk)ZQT;xIH;n0$!b;$ zJ$1WPvj}CjjNfqyMEUbqVxAR#9cPNmd*S$@IrFe23@!9 zpqo2mc*>g!R%U?73Bxn|Gn(LHY>&#KS}rZ-dmtt37O+3Uz?38*8PyHvQWGf|np^GXVm=9~P zeLa0-&BM+KAxeduAPydbeXCsBBmNbWoGJ8UDQk!Vtw4=H^%NhMvOf5RC40z z$>}t%3yu5?qi#4IAk+G!IymHx{ftY&?$a9GBkSBMSR;`f1ga?}rOqB)AS4zP#-J$|_`j zj#v8lSgWEt{DiwEqcxuXtl-eW)u|I9V@Q;Q`V}jMsRk3>p^zEIqCQHH^zjWdm2j?6~ye9o-( zXzG3BcAiu*|45KpL~RIe9wC=tF7{{fY|Eq+jS5+N-P1(l9u_{A6vuv?lnP<^C2yVaXy(O6%|R-Nr5Lo!~69f3(nZ)>Hqw zZa{{cWZ`{(p~mAjwE4?%emP+mI$(3tKR|m#vx@mQzFL4f){8xboF@*!0}3H9Ps3uv z&vSnyA5nQ4Mt^3xc~o|dtQ4nE3(%z11{<;VZAu!|gXGPFoowX+qZLnt|K=JjOIFx- ztOyH*Fx6jeqfD-}0W9`N8O_)ocF2p8__2C8!mA<(dwc(^9(`_&?BY*$tL zD8Nlq`{wG*4f$G_r-swQy51}tl0$Rq4NOJ_Z1#XHSo zcsz0kzG+z_U-EtOiTA;GGIa&&j+ij7)B@FsQ;(F58P-|4P|ccvYh%5}9wBiQn%xXe|K|q zK3t`LI!V+L7Mr1=vq>#S;cg{0)M$84(wde))#R`1!T0K((Iy>2@&V=$V%zqOxgy{u z^PP=ow+UK8$|f*tk9y1cKdg|Zs*^X$#so^cxKtO=)jH|kll9M7hk8P4o$=G<_hf=H z;tJ~UQaqYyd&2R<(q1^?Vzfr%6E$aMxt8NF>^2Ep$4gxz9-u0$RVdp$3?(f_nINMW?)hsHK8DybD&;+=MH%Iz2l>Qz2>_D_&V4l zq>{Q}QW_-0)E(S;b%?5FwvclI?Hi^smFC7OIt*RA6Da(_FK~&m5hX9{DCa`_^ZIVn zoiL{$=;8Gk>{5p_Rr$t`nmUkBsHn=iy=dFL?UXpR@;KrKiElOe_Wh$jqx`{sgqrv> zNO`a7LmE7&aNnJ(OS}M(?er6fm@m?Bv#2l#8kHwZs9uG~FX%yeR>e>s%;k|0M*?kjGYoI?1v0?9|ML zS?`Cuu5i-Lb-AY@yPD3laCj6=tsSSK@D^r+AG--t`uL1yQdI{+BHG>2>!Y?Sd94;)G?zX-=9MikjYvyn*^Q&!nAIKP4zGH9Yo&RVQbP zSqR)@9?*sb_J?;GuE0Y^DVMt6_12Lcm4S@L6dT(tLfRnJaaJ?J_jFuvrc;!C(obBx z#23FO%$9NQl{|Z^rac9dNvzFqML#3M-DjQuu39DEd8NSVn-MGa&p>4AG@G~O#u_}o z$;o^NC}Vtt-G~fX93yIM-)WQF)2&KoXRWt%E;?6XmV^15+md7Sn|UH2mIps`BzXv3 z;Hu-|GCLn3)C->AOqihtu^CyEp<2@$iZ_#ZT;6B05dR#jGQkV*GYm$bDg3SuXd9oT zD%PMU@_WOfnRg@lum8)rsT1V$qo@7;q9EwDL9VpI)o9yfHGlT?-m{M}cWK);*R;qO z(w*ZaAD|zx0kHn}5LP5>fq9?m1NAHgMy!weV&{Utkq9q&ui21$=@cewR{9?PzRJ(j zhUt`_6~Z5e zqOK391!4$82-G7cyx_2%O6TP~ScAHofr`?nn>K~lYP&$-x0Zo-$n zGP&k_TyUj{633Avf~Ti0{PO`O%xMYO$gTtIr&r(b2SY{UJqpQkJQi2)D?KW;KSeFD zH(0I+C4@4;@2&{?;Y!q{SK$0s7Y9DfIxS-uB?>lOh}A&si0-;N)wKU8hbmaB^gAwE zbQewg87!psql!FV%zzYa0|#2}YXtLJSU%E%mej8{%tAHt&A!xQ8kEI2M4xWjC&_tK}jZ)ev?1um?r8;ZmTxZ&P zCZUp0H@Me%lrgLm8V| zj7o+G01>?B{n?hS*`5|{e-#KkZZ=1o4MNyjX%B%Ux7+7DjWN^XfQ2y}6&5=yP08;x zJk;FIuU37#W^`l8ko;_Cx(#!{A6nq(RZR0!mr@>TTFCND7&!hz5E5!*Kh$W4{n+X5 z-oD%C5Nz=^2ol?UBDU}dsW zeZ&819=Bau`!Z})s3df%iJ3EYbtASj^^~FOO5s(gzolyf*o~H270`)-Hv4N$C5g|J z7lBb5DqXC<^>d(J__2=oW$~(IfT+X_iU!1^r)XR{l-G_FEc6=PfMjNpVdCxvSGF5H! z!mNl+|I5i9z4IZ-?4|xOkF5lpx{=9Z09kPf7&bwAUl{9meL1FGG!S2LR=kGaxmwn2 z?jd9{p{X&nUU#8B;Z1JZvq7T}r9)WX30 zP1hsU%c`>O)R_RKGlc?nL^ip?3OyVZZ%YK?PeMUCO1O0f@J^(JOayw`UzL3tA&H6? z%sJ)Ox+Be!2c#p?P+LSZ2!W7Dfx7=?YWz;Uq*UF!pS6N@Lc82O?t#kn;*$x1)pQ5Y zQtYS|^i{r}dBKL0m(bx$0yhlFuY*aVhDW|X((So6(FzYw8eXc-$E+lPU0X|2elrQ^B_TFT9bhiW(0C12`&qCG`{_fRkYm zb>QpmE8O72cUPRQL;O0em>A?2zgA^J<-8VROk-2xcEJ%SUbmYuSjhca2`_cTwh=Y^JF^RZTRN}RlmbIgi0+gk(NeSP25BQ%6TE0O;5#gLmRDQ{JsXz51&tdmAG7acf*Rk7Sb){7yskn=M7r1%(O7?vLH>wCw z%$@RxE(Dijr4N}ii2@Kx1c-`3` zRz6`AbRhdOg7c90apn}%{@zbjbH^9KO&r>T#j9?NK`?PSXxwy|b*OYc>vs7Z|3)ak zoHdrQB9d#1!gKjThH?xUsi(7^m0&s2Rc`X)BrxS4SmU9~&1$A?7h&3Q(pjf%ux8Nt zS6o(WqJ)un6YWEJa64^jU*(t~fmVV2rsolsQ968H%J$l3G1cR#!lPy3nEW1|bveAI zJH)NpXR7CxrI2@4{jMGP<_A;K&I-lH%3TKO7R7 z3au@r7d%dN@f7-jwdLz)-q;RTX}Zd+QN2u$A^GGta3O;kL~_3|Z@adWp*lp11A39N zXO|&c2;IJbI-NNRnwd*t7>YPuV9floT_+i57}&NHz!c5D81)>8R5Ao_VH`GjaGihf z=No{hW(slQg)+m&^h`Ky zD;kV{O`aVvevm86j|@ZR}()W^6x=gzA+W> zuSzog;+dkCQ=RLt2I1clyNaanYyMBri{~5ih;m5Et+$@$ldPn*Nq5f+yV1kDbpNA@ z26@&83ym8lHkE<4i8g}2!}9#X28Yi8!wqmQ7nU}EXf>8x64x$_RV!MW39tH;DCN>% zqgNRc@(;CYO0;5a$sKScQhcmV7-jW+KpZN5pH;J z;7RP4`Wp8w$Itgm$X`r1Iy4uacz=wv7fVWoH?H48of**HQRcMZ@IAO}!y(}xNw$~E(s@Vna zG&2{_*$)bqS7E+s-RsPhV^2ufzt-8k$*7!GA2k3uXDU>3`I8G-HsOSPM#3S7|L1a!RBfNno= zb}w1W*6WXQakDa(mm*ySc%XNy_=cRiM$l8xXllA{=Cy^kQ3zbKq3 z;!+?K>o5KCX$<#0dOxItb6q)A9pUyIHUDRV^;`KC_fUn37|^PwmqMW{FF%b$|3^rG zlu5xJZKGc}UE6;kg;m|%Tro4j{h5&BPpumAhsryD)MY1YhwDju+6wDaR~5q>MEBp! zja)!w($klzHT{(CCV8W}Dcr!;X+&<2`kK+bpIv)IxS8Boj)~98snZ&l z7*y*5bq9)&u~!*A6X99uUkNB%Xm3PY{p(e+lTriQ@n<_Z*lb0VX-c|&yX7)z6DP1| z)g!bQL7Q`P{IKX9WZtIW2CKA_DdW3!cf#C`(E4UIEF{lDJ#Iu z-S1_Tm8Iwej8AvnslEHKP0gygL@_|QqflN@^!CivV8M-}_CUnp{SY0)S({)BqXKz66_<)Og5pQ< zwT&1;(&}bfUP{g^{I!x(ujVbBm#2@(MeN)&+&Cx7+EbZuI)KSlwC=0cjL2@9r`^1y zv^{m%_P)2+ZnjMd9HUznlz=Qaul|H%cN2ipMZV38- zg@775W75Gjh!x{qA3dl8$5G&B4jh=HzCSbWx?K4hV4A4@5@P3|Su;}QkCM$A7KQlB zRX?IA4t(ZP&65!&x7x&$E`qKNU>7@nE@3zc<8>Y$tfyptA2$LpbvUpbG4@Jr9hBD3h{%HrVNM?bKTH%i76cax(IM zC~If0f#|d#E&hSOBNN;!C5z}bM!DCG9oo~4cOUz925+1uA@`jUSg{A7vZRjQea`!& zp++)cvQp4sgvtwE=>0qAqxVZO2(#ZP^uiIfU=6LK&@%Ghk6M-J z3D7qR(frJtOW#8_75093xZ=Tz5o7FZ)GFG zoq8ppg>#?;fbed!fDVq&12Yp#p+R6ApQVD(N``vMeO8!hZ~kXr$ale~C!!gS8^83B zB$xTsQ6G0(hN9|8Ahe_3FDBD9Rb_NkBbxBj(Nf1hl<@Wx{Ziaqcias%Qp9mm?b~nwx+KNZ%~7mAO?r+9RoG3Ezwrj9DG9otbd_nRC+Y(RC@Wm)#~?j=V!XR z$ipMB$j^sVFkMl385k)ZWOhjVspjdc*l| zhwNu18(kS}2YjmusR6e(EsB@=g-QgLEkjjz#|O=_rru;t?*?nc#@;4eO4W><&su!G zx)#4~A~t(h#sgMrvwrvzl?s0R@zvS-bDNG&XEOqVZ?sj0xcgkVLdZ?KFR`GudSoTC zrgXp(5xeVHOc3lm0qbeJ5&ed1P{tH;rmU%GIC|wHO*nGNt03@5h^cAwPiu3&TCHj$ zcK3A`zC-ngo+XBa$oZ>()$a@ll?E$uUkIA?m}=9=grND{?t*e~IZ58CRr?M4omY-S z9niAOvw${dtsJYV=8=+8vkvSp<7ZcxUmcKP8B(dDDa&S^&?j!+mc@%se~tFWERGg{a~~} z$Ky*f0iXB-lf)}B9T3kWz;>E?ja&>6N)4r^8hW&un0$PuqY%6Gdv;aLS+ z*ebtVQesRdA|Wy;H{buA;%t#has8mY%&eEhRE=&~?*epqHDj)bp{0a(xH$LGm&e#m z`5TM%9uTh_o}vloCs&-Z5um>w;S(R^L3IbsK*A521;|3zN-j%rie557k+gl;+YPaG zSmSNcGA-vnv%73))UA0o$MnTbD-pR|U-q$D*ocOvep@!#QKFtVHq_3}Ir9U}l~(0a zt8~l5o;#Z^0#f5aS^8Tyxn{n$;v#VHZPH!Cd=0%nA!JJQ(*Sc7FSZf=vh$l;5#+Qz zAWiiV{>G$Jm!e50y=O3XSZfQW=h-3V1`$E z!eAUVCEJXd&dt6x3(jTEKts9(@C%PD?_l%{TAyC#)(IL?9;V{Fr1mbG-D;Zkd>vwU z@5Ri)5L_{8NF`rhecGgFpZmte6BwmiDkYF>l?Hsj=snZ zsjc{HgTLkYE_g=hRTF2dRK0n{pAKP7$zN9;7~+-{l}#F7ZQa$`x5&(g;!tfT;x#q& zm=dRbczWug->+ZwRp&cQh5GxB4^-#vT)vKx>}lNWE^|fJ;L+!5N_(cakP_g#COV(z z&xK5DvKA;|iqy{rS@L3P$M<%PR1MClWV2Mh%F}Wn z3Y>^kgpqH_Sn;Pskpc-L;{?4K-ODXV`jqByP>p4gS?@j1@5 zNkWA4do^R!q>U`Qoz-!rgukS>Z}r~(AV~J-R$xr^=CMa0fe#4}AYv2I^OXGnE%HiL zV(7YEf9X7KMCQ5mVz0?39j=KIE7>2QLiU9i>w6T(MS{7KhV<3-cfUXmAxTPm7l``* z9l29Fkb-;*o8o{nJ-Nl?K=Iy?e5s8cNBpLJ#zTZ$v)&#?OY9?ZbQaO2iwc%SzM9-; z3H96WKe`(jYoYmDu}(6Z)DSl!tLRyz(AGF%MZBNM4~YF9@z~MEyHToyQ)j!js^>Gb zth960g1A#3wal{#s1;*N_>7dQO&N{!Z_71cu?YdgBfp}|`TE;>tmY7hlelC(jJ8YA zq-LnpQ_@Rr%%!gKgfP;(@lG@gtW8TN$Zy8r+FZ;z8*0B#)hpJgG5to_^#FiQqq1+X z@y}HK;*Tl^;xhvyryPjgAX(Su4UK^WHZRc$Mx?O;n86OgA1?7gx727 z3^iF6tfpUj!7FzPlDNSq#Qo<&?Y;M!r?C83g@d6Unao(kZA`J%fGeG;>@JvJZdN92RBJ`TEN28*|WpA~2n>$Thf{>AsY+coiw@z&(e}MuQIP z_mX@-lD99*XNz>nvOs8t%xm&j{*qtJ z5+!?N`b5vO6q2IWq`ROR{rt6wKR_$@*``hz*vNEJtL+;`sdM9aGqzbb2hw!Q;8~8{ z^pV}DmqM9?sV5GVt>RgGrzOP{4xc;N1J4H^$Q_Bq2lJu3SKuzlAjzJ8Pm3Kwm@QGF zlfLq9G|s2>4=fRXM|2>%zizGac91l8^KD|+DPZz9nr`SU?|Xn9ijUYoMfo9~{ICxY z!*FHsy|?i9%SvSChuHJ(W|ZsNokKoI(s)#tz@HV>TH!)*6bVx-14!MFGtdI%kf9zR zNDTZB=i#A^`%_KjR+W2Tj+3>==}*_S6UUDt90ba6PU)`-ek9f&{R7zmdy{@`bXUbH zY6KZ$O)ec64@yXpx1A4Rec~i5sfF?}pKc9XsC#kMWJz{bINJtSah0gfjQ1(7FYj4; zyGXgQ)we?nT;Dus@-sK9YeH`6Jsz2q?+{7h4Fe(V4d>3{!U5ROcKUis^4+jr-#vB% z?KCVtVGE2~{$|YofL1s!5=l`D*iYXjYE2et>?xyR`=ED$TGE2p8r14*Hh)l(AOW-= zB399k@v8m2m3hGG=tA1AAgKMbs;d=I{%x|JD=D~3YacogX6siGHH_Ze{kp8cxNj5m z;>`ZW1u*0JCc8D6`m9z_*0YG?yjd>OP}KC2c+ZRyU}$D3ikAZ1Hb__PDq&DR`;6HJ z<>f5!WG3w>P2u{jmkEh&6e7ZNLjP3gFp!GN>U@*3J7cA>z~Eb-W))Wje4Dm~(y8i2 zd#|8DfFa`W^nw-W?CfHwn>9yfeQ|jul0Py;9b3<=0a`^vCWB|v3jC+5b&4;pAG-Ic zip?=S=+*@gq_*V{63n;#?+?74SGj3vJL9ID*<9=%#}D3mx&jpV+?JuM^mpy1+d&T{ zMdg)$*YPOw+u}$T3U~S1PyU%$7;F`pof5VuY#O{G;=@=OXsH^V!YVgI`1Wd7zZ0;| zn}8CWX5YhTP9BNhy5jY%s?aQMX__u9=XY>i=;8@%%g?C!ZQl-2qWIviHmXY$rz<`@ zp{!0S&AC`;;!7V1l5vlDl(LY@HtNKBqjDraI)s{qcx%=e5Nai*RXAd-@g5JWkdKDl z3r%{0d$B>ze5RMii9#}&Ssr40QRs5%i7e?8IUMyO>=x;#B7SaZMzF@4)i_+UP&Rl( z2|J4S@da{<;d>G^&SoE@;vMl2XY&g8A$lpT8saT*ry@TL`do5%1XluPM&;9(F; z5bxzAnTsQEw;S%-EY3BY#9@a;QCIICeGlDNiq|^Y1*a0*B=>B*`*q(J=C(*4TQomI zx7EV6tXvAd^rsFMR(G_glUL@n?PnijH59oa@IX~-@Uh~%oSdp2FwbBCX@WR%pwC&m7_@p?=d&udus!m~ zF-1!UWS|$M5Ri26Kd&mY%l!jA2HrMkQa0g2=dP^Ysh<$Fh*f zGJkL`X?3?=KnY8!kOttLg~{fI17-{gK=@g$?0x$nKFN+>dZ9gsTq8_Sl7hxSOKZGz z-5GjF?DsKA06pUIJvjd1Fa0>6+xG73qZq9@uOfi{4Do-NbcfPWsnu?OXSsiayVm!L ze=F7zzZB%9{5`F?gS2g!nHYsG;^WVGl|rQtg=FD0sXMVa$CHp2(-p13W-;w%JPz=rcX@P>ieHg1}+iYgd=`^=i!nDEaeP0_@ihP?>L zrJ1f{yHPavLtO!K)kFPmO3otyvP@u2#lB!JX5⪙Hh|(G-QrIlXG73JNiB<@7LHj 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 z zps32fDu&(N0SULW*VykU$P5OMV!#VXA_V`H)IlRKg3(f$->#DkEQrY~DnqZG+xV`u zms$rsi5#kp^#$58gr19wq77@CTx+;pVE`TAwb$lbwfBr_6*(P zC8RP5SnkB;o|cT9wIzB7=95u+P5md*C^eY5PK6woR+^z>X_rF5a!#A17QY)(JDEu# z+|g=N=jG9(Ah*f(Avg_)EY~e~1$w6jrQPqWjC^+-;jZ&N6|?B#Z9M$v@$i3s7!CK| z@xKp-zsEm+dr@cF=(us9N~2ISQNj&m0Qg4~6Lx-ZQ%f;AIV$(qmT`tLTnSvb^TQ82 z+#nh;)ZY}54-f1m6skI-dX-6DanZ0*6qh$#wqGwRr@HXe9Tu4&KPr6%Gwi~>fzGPe zFV0@Pe)HlvxWGX|a&D0u{E>hCNi{kWI2-tZE(WqXTfjr0$jHQ(~D=w&u1`+i^#UlpV0P?5Hz;CrYm~ zXkUi_=8$)05TPRX_HYnAdKdlaPtn^)gXr+x2%g2^Rw!Z1o%)1}B6&2;0EBB?+HZQ4 zZ_P{_Qg;+x{CD)9(cdn>JqbhyT=y3lU5&K7LJ2s}$t{eP8#b*k@5Ev;2sUfstw=^gQm02` z^}MLrs4h%;#Bh_YLDZzP;u@BLba$_f1QV7{JkvBZ5)E|{NuPr939QJp;c|EG&Rhv> zqcb|ul1@`hA%(e>qwi0jAD_Pv6B*r6Fu}_EbUvpSBe)=n636enY>>QyOUVdLwQ!kh zF=?v+r7Mp+@{EFsOBuQqQB7p a_vwG1{`cvBpZ@pY|NDR6O%+D~l3xIr-~=oH diff --git a/pods/imports/k8s/main.go b/pods/imports/k8s/main.go index cd689aa95..d4c17cfff 100644 --- a/pods/imports/k8s/main.go +++ b/pods/imports/k8s/main.go @@ -24,14 +24,14 @@ func init() { "k8s.AppArmorProfile", reflect.TypeOf((*AppArmorProfile)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.ApplyConfigurationV1Alpha1", - reflect.TypeOf((*ApplyConfigurationV1Alpha1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.AuditAnnotation", reflect.TypeOf((*AuditAnnotation)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.AuditAnnotationV1Alpha1", + reflect.TypeOf((*AuditAnnotationV1Alpha1)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.AuditAnnotationV1Beta1", reflect.TypeOf((*AuditAnnotationV1Beta1)(nil)).Elem(), @@ -56,10 +56,6 @@ func init() { "k8s.BasicDeviceV1Alpha3", reflect.TypeOf((*BasicDeviceV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.BasicDeviceV1Beta1", - reflect.TypeOf((*BasicDeviceV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.BoundObjectReference", reflect.TypeOf((*BoundObjectReference)(nil)).Elem(), @@ -72,10 +68,6 @@ func init() { "k8s.CelDeviceSelectorV1Alpha3", reflect.TypeOf((*CelDeviceSelectorV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.CelDeviceSelectorV1Beta1", - reflect.TypeOf((*CelDeviceSelectorV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.CephFsPersistentVolumeSource", reflect.TypeOf((*CephFsPersistentVolumeSource)(nil)).Elem(), @@ -236,78 +228,38 @@ func init() { "k8s.DeviceAttributeV1Alpha3", reflect.TypeOf((*DeviceAttributeV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceAttributeV1Beta1", - reflect.TypeOf((*DeviceAttributeV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceCapacityV1Beta1", - reflect.TypeOf((*DeviceCapacityV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceClaimConfigurationV1Alpha3", reflect.TypeOf((*DeviceClaimConfigurationV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceClaimConfigurationV1Beta1", - reflect.TypeOf((*DeviceClaimConfigurationV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceClaimV1Alpha3", reflect.TypeOf((*DeviceClaimV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceClaimV1Beta1", - reflect.TypeOf((*DeviceClaimV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceClassConfigurationV1Alpha3", reflect.TypeOf((*DeviceClassConfigurationV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceClassConfigurationV1Beta1", - reflect.TypeOf((*DeviceClassConfigurationV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceClassSpecV1Alpha3", reflect.TypeOf((*DeviceClassSpecV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceClassSpecV1Beta1", - reflect.TypeOf((*DeviceClassSpecV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceConstraintV1Alpha3", reflect.TypeOf((*DeviceConstraintV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceConstraintV1Beta1", - reflect.TypeOf((*DeviceConstraintV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceRequestV1Alpha3", reflect.TypeOf((*DeviceRequestV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceRequestV1Beta1", - reflect.TypeOf((*DeviceRequestV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceSelectorV1Alpha3", reflect.TypeOf((*DeviceSelectorV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceSelectorV1Beta1", - reflect.TypeOf((*DeviceSelectorV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DeviceV1Alpha3", reflect.TypeOf((*DeviceV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.DeviceV1Beta1", - reflect.TypeOf((*DeviceV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.DownwardApiProjection", reflect.TypeOf((*DownwardApiProjection)(nil)).Elem(), @@ -384,6 +336,10 @@ func init() { "k8s.ExemptPriorityLevelConfiguration", reflect.TypeOf((*ExemptPriorityLevelConfiguration)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.ExemptPriorityLevelConfigurationV1Beta3", + reflect.TypeOf((*ExemptPriorityLevelConfigurationV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ExternalDocumentation", reflect.TypeOf((*ExternalDocumentation)(nil)).Elem(), @@ -420,10 +376,18 @@ func init() { "k8s.FlowDistinguisherMethod", reflect.TypeOf((*FlowDistinguisherMethod)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.FlowDistinguisherMethodV1Beta3", + reflect.TypeOf((*FlowDistinguisherMethodV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.FlowSchemaSpec", reflect.TypeOf((*FlowSchemaSpec)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.FlowSchemaSpecV1Beta3", + reflect.TypeOf((*FlowSchemaSpecV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ForZone", reflect.TypeOf((*ForZone)(nil)).Elem(), @@ -444,6 +408,10 @@ func init() { "k8s.GlusterfsVolumeSource", reflect.TypeOf((*GlusterfsVolumeSource)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.GroupSubjectV1Beta3", + reflect.TypeOf((*GroupSubjectV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.GroupVersionResourceV1Alpha1", reflect.TypeOf((*GroupVersionResourceV1Alpha1)(nil)).Elem(), @@ -569,10 +537,6 @@ func init() { "k8s.JobTemplateSpec", reflect.TypeOf((*JobTemplateSpec)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.JsonPatchV1Alpha1", - reflect.TypeOf((*JsonPatchV1Alpha1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.JsonSchemaProps", reflect.TypeOf((*JsonSchemaProps)(nil)).Elem(), @@ -1413,32 +1377,6 @@ func init() { "k8s.KubeDeviceClassListV1Alpha3Props", reflect.TypeOf((*KubeDeviceClassListV1Alpha3Props)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeDeviceClassListV1Beta1", - reflect.TypeOf((*KubeDeviceClassListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDeviceClassListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeDeviceClassListV1Beta1Props", - reflect.TypeOf((*KubeDeviceClassListV1Beta1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeDeviceClassV1Alpha3", reflect.TypeOf((*KubeDeviceClassV1Alpha3)(nil)).Elem(), @@ -1465,32 +1403,6 @@ func init() { "k8s.KubeDeviceClassV1Alpha3Props", reflect.TypeOf((*KubeDeviceClassV1Alpha3Props)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeDeviceClassV1Beta1", - reflect.TypeOf((*KubeDeviceClassV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDeviceClassV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeDeviceClassV1Beta1Props", - reflect.TypeOf((*KubeDeviceClassV1Beta1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeEndpointSlice", reflect.TypeOf((*KubeEndpointSlice)(nil)).Elem(), @@ -1721,10 +1633,62 @@ func init() { "k8s.KubeFlowSchemaListProps", reflect.TypeOf((*KubeFlowSchemaListProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeFlowSchemaListV1Beta3", + reflect.TypeOf((*KubeFlowSchemaListV1Beta3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeFlowSchemaListV1Beta3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeFlowSchemaListV1Beta3Props", + reflect.TypeOf((*KubeFlowSchemaListV1Beta3Props)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.KubeFlowSchemaProps", reflect.TypeOf((*KubeFlowSchemaProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeFlowSchemaV1Beta3", + reflect.TypeOf((*KubeFlowSchemaV1Beta3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeFlowSchemaV1Beta3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeFlowSchemaV1Beta3Props", + reflect.TypeOf((*KubeFlowSchemaV1Beta3Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubeHorizontalPodAutoscaler", reflect.TypeOf((*KubeHorizontalPodAutoscaler)(nil)).Elem(), @@ -2060,8 +2024,8 @@ func init() { }, ) _jsii_.RegisterClass( - "k8s.KubeLeaseCandidateListV1Alpha2", - reflect.TypeOf((*KubeLeaseCandidateListV1Alpha2)(nil)).Elem(), + "k8s.KubeLeaseCandidateListV1Alpha1", + reflect.TypeOf((*KubeLeaseCandidateListV1Alpha1)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -2076,18 +2040,18 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeLeaseCandidateListV1Alpha2{} + j := jsiiProxy_KubeLeaseCandidateListV1Alpha1{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeLeaseCandidateListV1Alpha2Props", - reflect.TypeOf((*KubeLeaseCandidateListV1Alpha2Props)(nil)).Elem(), + "k8s.KubeLeaseCandidateListV1Alpha1Props", + reflect.TypeOf((*KubeLeaseCandidateListV1Alpha1Props)(nil)).Elem(), ) _jsii_.RegisterClass( - "k8s.KubeLeaseCandidateV1Alpha2", - reflect.TypeOf((*KubeLeaseCandidateV1Alpha2)(nil)).Elem(), + "k8s.KubeLeaseCandidateV1Alpha1", + reflect.TypeOf((*KubeLeaseCandidateV1Alpha1)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -2102,14 +2066,14 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeLeaseCandidateV1Alpha2{} + j := jsiiProxy_KubeLeaseCandidateV1Alpha1{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeLeaseCandidateV1Alpha2Props", - reflect.TypeOf((*KubeLeaseCandidateV1Alpha2Props)(nil)).Elem(), + "k8s.KubeLeaseCandidateV1Alpha1Props", + reflect.TypeOf((*KubeLeaseCandidateV1Alpha1Props)(nil)).Elem(), ) _jsii_.RegisterClass( "k8s.KubeLeaseList", @@ -2219,110 +2183,6 @@ func init() { "k8s.KubeLocalSubjectAccessReviewProps", reflect.TypeOf((*KubeLocalSubjectAccessReviewProps)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1", - reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeMutatingAdmissionPolicyBindingListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeMutatingAdmissionPolicyBindingListV1Alpha1Props", - reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1", - reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeMutatingAdmissionPolicyBindingV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeMutatingAdmissionPolicyBindingV1Alpha1Props", - reflect.TypeOf((*KubeMutatingAdmissionPolicyBindingV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1", - reflect.TypeOf((*KubeMutatingAdmissionPolicyListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeMutatingAdmissionPolicyListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeMutatingAdmissionPolicyListV1Alpha1Props", - reflect.TypeOf((*KubeMutatingAdmissionPolicyListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1", - reflect.TypeOf((*KubeMutatingAdmissionPolicyV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeMutatingAdmissionPolicyV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeMutatingAdmissionPolicyV1Alpha1Props", - reflect.TypeOf((*KubeMutatingAdmissionPolicyV1Alpha1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeMutatingWebhookConfiguration", reflect.TypeOf((*KubeMutatingWebhookConfiguration)(nil)).Elem(), @@ -2739,6 +2599,58 @@ func init() { "k8s.KubePodProps", reflect.TypeOf((*KubePodProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubePodSchedulingContextListV1Alpha3", + reflect.TypeOf((*KubePodSchedulingContextListV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodSchedulingContextListV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePodSchedulingContextListV1Alpha3Props", + reflect.TypeOf((*KubePodSchedulingContextListV1Alpha3Props)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePodSchedulingContextV1Alpha3", + reflect.TypeOf((*KubePodSchedulingContextV1Alpha3)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubePodSchedulingContextV1Alpha3{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubePodSchedulingContextV1Alpha3Props", + reflect.TypeOf((*KubePodSchedulingContextV1Alpha3Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubePodTemplate", reflect.TypeOf((*KubePodTemplate)(nil)).Elem(), @@ -2891,13 +2803,9 @@ func init() { "k8s.KubePriorityLevelConfigurationListProps", reflect.TypeOf((*KubePriorityLevelConfigurationListProps)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.KubePriorityLevelConfigurationProps", - reflect.TypeOf((*KubePriorityLevelConfigurationProps)(nil)).Elem(), - ) _jsii_.RegisterClass( - "k8s.KubeReplicaSet", - reflect.TypeOf((*KubeReplicaSet)(nil)).Elem(), + "k8s.KubePriorityLevelConfigurationListV1Beta3", + reflect.TypeOf((*KubePriorityLevelConfigurationListV1Beta3)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -2912,14 +2820,22 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeReplicaSet{} + j := jsiiProxy_KubePriorityLevelConfigurationListV1Beta3{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) - _jsii_.RegisterClass( - "k8s.KubeReplicaSetList", - reflect.TypeOf((*KubeReplicaSetList)(nil)).Elem(), + _jsii_.RegisterStruct( + "k8s.KubePriorityLevelConfigurationListV1Beta3Props", + reflect.TypeOf((*KubePriorityLevelConfigurationListV1Beta3Props)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubePriorityLevelConfigurationProps", + reflect.TypeOf((*KubePriorityLevelConfigurationProps)(nil)).Elem(), + ) + _jsii_.RegisterClass( + "k8s.KubePriorityLevelConfigurationV1Beta3", + reflect.TypeOf((*KubePriorityLevelConfigurationV1Beta3)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -2934,22 +2850,18 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeReplicaSetList{} + j := jsiiProxy_KubePriorityLevelConfigurationV1Beta3{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeReplicaSetListProps", - reflect.TypeOf((*KubeReplicaSetListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeReplicaSetProps", - reflect.TypeOf((*KubeReplicaSetProps)(nil)).Elem(), + "k8s.KubePriorityLevelConfigurationV1Beta3Props", + reflect.TypeOf((*KubePriorityLevelConfigurationV1Beta3Props)(nil)).Elem(), ) _jsii_.RegisterClass( - "k8s.KubeReplicationController", - reflect.TypeOf((*KubeReplicationController)(nil)).Elem(), + "k8s.KubeReplicaSet", + reflect.TypeOf((*KubeReplicaSet)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -2964,14 +2876,14 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeReplicationController{} + j := jsiiProxy_KubeReplicaSet{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterClass( - "k8s.KubeReplicationControllerList", - reflect.TypeOf((*KubeReplicationControllerList)(nil)).Elem(), + "k8s.KubeReplicaSetList", + reflect.TypeOf((*KubeReplicaSetList)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -2986,22 +2898,22 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeReplicationControllerList{} + j := jsiiProxy_KubeReplicaSetList{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeReplicationControllerListProps", - reflect.TypeOf((*KubeReplicationControllerListProps)(nil)).Elem(), + "k8s.KubeReplicaSetListProps", + reflect.TypeOf((*KubeReplicaSetListProps)(nil)).Elem(), ) _jsii_.RegisterStruct( - "k8s.KubeReplicationControllerProps", - reflect.TypeOf((*KubeReplicationControllerProps)(nil)).Elem(), + "k8s.KubeReplicaSetProps", + reflect.TypeOf((*KubeReplicaSetProps)(nil)).Elem(), ) _jsii_.RegisterClass( - "k8s.KubeResourceClaimListV1Alpha3", - reflect.TypeOf((*KubeResourceClaimListV1Alpha3)(nil)).Elem(), + "k8s.KubeReplicationController", + reflect.TypeOf((*KubeReplicationController)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -3016,18 +2928,14 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeResourceClaimListV1Alpha3{} + j := jsiiProxy_KubeReplicationController{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimListV1Alpha3Props", - reflect.TypeOf((*KubeResourceClaimListV1Alpha3Props)(nil)).Elem(), - ) _jsii_.RegisterClass( - "k8s.KubeResourceClaimListV1Beta1", - reflect.TypeOf((*KubeResourceClaimListV1Beta1)(nil)).Elem(), + "k8s.KubeReplicationControllerList", + reflect.TypeOf((*KubeReplicationControllerList)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -3042,18 +2950,22 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeResourceClaimListV1Beta1{} + j := jsiiProxy_KubeReplicationControllerList{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeResourceClaimListV1Beta1Props", - reflect.TypeOf((*KubeResourceClaimListV1Beta1Props)(nil)).Elem(), + "k8s.KubeReplicationControllerListProps", + reflect.TypeOf((*KubeReplicationControllerListProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + "k8s.KubeReplicationControllerProps", + reflect.TypeOf((*KubeReplicationControllerProps)(nil)).Elem(), ) _jsii_.RegisterClass( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3)(nil)).Elem(), + "k8s.KubeResourceClaimListV1Alpha3", + reflect.TypeOf((*KubeResourceClaimListV1Alpha3)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -3068,18 +2980,18 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeResourceClaimTemplateListV1Alpha3{} + j := jsiiProxy_KubeResourceClaimListV1Alpha3{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeResourceClaimTemplateListV1Alpha3Props", - reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3Props)(nil)).Elem(), + "k8s.KubeResourceClaimListV1Alpha3Props", + reflect.TypeOf((*KubeResourceClaimListV1Alpha3Props)(nil)).Elem(), ) _jsii_.RegisterClass( - "k8s.KubeResourceClaimTemplateListV1Beta1", - reflect.TypeOf((*KubeResourceClaimTemplateListV1Beta1)(nil)).Elem(), + "k8s.KubeResourceClaimTemplateListV1Alpha3", + reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3)(nil)).Elem(), []_jsii_.Member{ _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, @@ -3094,14 +3006,14 @@ func init() { _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, }, func() interface{} { - j := jsiiProxy_KubeResourceClaimTemplateListV1Beta1{} + j := jsiiProxy_KubeResourceClaimTemplateListV1Alpha3{} _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) return &j }, ) _jsii_.RegisterStruct( - "k8s.KubeResourceClaimTemplateListV1Beta1Props", - reflect.TypeOf((*KubeResourceClaimTemplateListV1Beta1Props)(nil)).Elem(), + "k8s.KubeResourceClaimTemplateListV1Alpha3Props", + reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3Props)(nil)).Elem(), ) _jsii_.RegisterClass( "k8s.KubeResourceClaimTemplateV1Alpha3", @@ -3129,32 +3041,6 @@ func init() { "k8s.KubeResourceClaimTemplateV1Alpha3Props", reflect.TypeOf((*KubeResourceClaimTemplateV1Alpha3Props)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeResourceClaimTemplateV1Beta1", - reflect.TypeOf((*KubeResourceClaimTemplateV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceClaimTemplateV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimTemplateV1Beta1Props", - reflect.TypeOf((*KubeResourceClaimTemplateV1Beta1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeResourceClaimV1Alpha3", reflect.TypeOf((*KubeResourceClaimV1Alpha3)(nil)).Elem(), @@ -3181,32 +3067,6 @@ func init() { "k8s.KubeResourceClaimV1Alpha3Props", reflect.TypeOf((*KubeResourceClaimV1Alpha3Props)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeResourceClaimV1Beta1", - reflect.TypeOf((*KubeResourceClaimV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceClaimV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimV1Beta1Props", - reflect.TypeOf((*KubeResourceClaimV1Beta1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeResourceQuota", reflect.TypeOf((*KubeResourceQuota)(nil)).Elem(), @@ -3259,58 +3119,6 @@ func init() { "k8s.KubeResourceQuotaProps", reflect.TypeOf((*KubeResourceQuotaProps)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeResourceSliceListV1Alpha3", - reflect.TypeOf((*KubeResourceSliceListV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceSliceListV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceSliceListV1Alpha3Props", - reflect.TypeOf((*KubeResourceSliceListV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceSliceListV1Beta1", - reflect.TypeOf((*KubeResourceSliceListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceSliceListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceSliceListV1Beta1Props", - reflect.TypeOf((*KubeResourceSliceListV1Beta1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeResourceSliceV1Alpha3", reflect.TypeOf((*KubeResourceSliceV1Alpha3)(nil)).Elem(), @@ -3337,32 +3145,6 @@ func init() { "k8s.KubeResourceSliceV1Alpha3Props", reflect.TypeOf((*KubeResourceSliceV1Alpha3Props)(nil)).Elem(), ) - _jsii_.RegisterClass( - "k8s.KubeResourceSliceV1Beta1", - reflect.TypeOf((*KubeResourceSliceV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceSliceV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceSliceV1Beta1Props", - reflect.TypeOf((*KubeResourceSliceV1Beta1Props)(nil)).Elem(), - ) _jsii_.RegisterClass( "k8s.KubeRole", reflect.TypeOf((*KubeRole)(nil)).Elem(), @@ -3649,6 +3431,32 @@ func init() { "k8s.KubeSelfSubjectReviewProps", reflect.TypeOf((*KubeSelfSubjectReviewProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeSelfSubjectReviewV1Alpha1", + reflect.TypeOf((*KubeSelfSubjectReviewV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeSelfSubjectReviewV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeSelfSubjectReviewV1Alpha1Props", + reflect.TypeOf((*KubeSelfSubjectReviewV1Alpha1Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubeSelfSubjectReviewV1Beta1", reflect.TypeOf((*KubeSelfSubjectReviewV1Beta1)(nil)).Elem(), @@ -4239,6 +4047,32 @@ func init() { "k8s.KubeValidatingAdmissionPolicyBindingListProps", reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Alpha1Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Beta1)(nil)).Elem(), @@ -4269,6 +4103,32 @@ func init() { "k8s.KubeValidatingAdmissionPolicyBindingProps", reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Alpha1Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Beta1)(nil)).Elem(), @@ -4321,6 +4181,32 @@ func init() { "k8s.KubeValidatingAdmissionPolicyListProps", reflect.TypeOf((*KubeValidatingAdmissionPolicyListProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyListV1Alpha1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Alpha1Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubeValidatingAdmissionPolicyListV1Beta1", reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Beta1)(nil)).Elem(), @@ -4351,6 +4237,32 @@ func init() { "k8s.KubeValidatingAdmissionPolicyProps", reflect.TypeOf((*KubeValidatingAdmissionPolicyProps)(nil)).Elem(), ) + _jsii_.RegisterClass( + "k8s.KubeValidatingAdmissionPolicyV1Alpha1", + reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Alpha1)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, + _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, + _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, + _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, + _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, + _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, + _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, + _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, + _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, + _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, + _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, + }, + func() interface{} { + j := jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1{} + _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) + return &j + }, + ) + _jsii_.RegisterStruct( + "k8s.KubeValidatingAdmissionPolicyV1Alpha1Props", + reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Alpha1Props)(nil)).Elem(), + ) _jsii_.RegisterClass( "k8s.KubeValidatingAdmissionPolicyV1Beta1", reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Beta1)(nil)).Elem(), @@ -4598,8 +4510,8 @@ func init() { reflect.TypeOf((*LabelSelectorRequirement)(nil)).Elem(), ) _jsii_.RegisterStruct( - "k8s.LeaseCandidateSpecV1Alpha2", - reflect.TypeOf((*LeaseCandidateSpecV1Alpha2)(nil)).Elem(), + "k8s.LeaseCandidateSpecV1Alpha1", + reflect.TypeOf((*LeaseCandidateSpecV1Alpha1)(nil)).Elem(), ) _jsii_.RegisterStruct( "k8s.LeaseSpec", @@ -4625,10 +4537,18 @@ func init() { "k8s.LimitResponse", reflect.TypeOf((*LimitResponse)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.LimitResponseV1Beta3", + reflect.TypeOf((*LimitResponseV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.LimitedPriorityLevelConfiguration", reflect.TypeOf((*LimitedPriorityLevelConfiguration)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.LimitedPriorityLevelConfigurationV1Beta3", + reflect.TypeOf((*LimitedPriorityLevelConfigurationV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ListMeta", reflect.TypeOf((*ListMeta)(nil)).Elem(), @@ -4681,22 +4601,10 @@ func init() { "k8s.MetricTargetV2", reflect.TypeOf((*MetricTargetV2)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.MutatingAdmissionPolicyBindingSpecV1Alpha1", - reflect.TypeOf((*MutatingAdmissionPolicyBindingSpecV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MutatingAdmissionPolicySpecV1Alpha1", - reflect.TypeOf((*MutatingAdmissionPolicySpecV1Alpha1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.MutatingWebhook", reflect.TypeOf((*MutatingWebhook)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.MutationV1Alpha1", - reflect.TypeOf((*MutationV1Alpha1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.NamedRuleWithOperations", reflect.TypeOf((*NamedRuleWithOperations)(nil)).Elem(), @@ -4769,6 +4677,10 @@ func init() { "k8s.NonResourcePolicyRule", reflect.TypeOf((*NonResourcePolicyRule)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.NonResourcePolicyRuleV1Beta3", + reflect.TypeOf((*NonResourcePolicyRuleV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ObjectFieldSelector", reflect.TypeOf((*ObjectFieldSelector)(nil)).Elem(), @@ -4789,10 +4701,6 @@ func init() { "k8s.OpaqueDeviceConfigurationV1Alpha3", reflect.TypeOf((*OpaqueDeviceConfigurationV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.OpaqueDeviceConfigurationV1Beta1", - reflect.TypeOf((*OpaqueDeviceConfigurationV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.Overhead", reflect.TypeOf((*Overhead)(nil)).Elem(), @@ -4901,6 +4809,10 @@ func init() { "k8s.PodResourceClaim", reflect.TypeOf((*PodResourceClaim)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.PodSchedulingContextSpecV1Alpha3", + reflect.TypeOf((*PodSchedulingContextSpecV1Alpha3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.PodSchedulingGate", reflect.TypeOf((*PodSchedulingGate)(nil)).Elem(), @@ -4929,6 +4841,10 @@ func init() { "k8s.PolicyRulesWithSubjects", reflect.TypeOf((*PolicyRulesWithSubjects)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.PolicyRulesWithSubjectsV1Beta3", + reflect.TypeOf((*PolicyRulesWithSubjectsV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.PortworxVolumeSource", reflect.TypeOf((*PortworxVolumeSource)(nil)).Elem(), @@ -4945,10 +4861,18 @@ func init() { "k8s.PriorityLevelConfigurationReference", reflect.TypeOf((*PriorityLevelConfigurationReference)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.PriorityLevelConfigurationReferenceV1Beta3", + reflect.TypeOf((*PriorityLevelConfigurationReferenceV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.PriorityLevelConfigurationSpec", reflect.TypeOf((*PriorityLevelConfigurationSpec)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.PriorityLevelConfigurationSpecV1Beta3", + reflect.TypeOf((*PriorityLevelConfigurationSpecV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.Probe", reflect.TypeOf((*Probe)(nil)).Elem(), @@ -4971,6 +4895,10 @@ func init() { "k8s.QueuingConfiguration", reflect.TypeOf((*QueuingConfiguration)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.QueuingConfigurationV1Beta3", + reflect.TypeOf((*QueuingConfigurationV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.QuobyteVolumeSource", reflect.TypeOf((*QuobyteVolumeSource)(nil)).Elem(), @@ -5003,18 +4931,10 @@ func init() { "k8s.ResourceClaimSpecV1Alpha3", reflect.TypeOf((*ResourceClaimSpecV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.ResourceClaimSpecV1Beta1", - reflect.TypeOf((*ResourceClaimSpecV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.ResourceClaimTemplateSpecV1Alpha3", reflect.TypeOf((*ResourceClaimTemplateSpecV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.ResourceClaimTemplateSpecV1Beta1", - reflect.TypeOf((*ResourceClaimTemplateSpecV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.ResourceFieldSelector", reflect.TypeOf((*ResourceFieldSelector)(nil)).Elem(), @@ -5028,12 +4948,12 @@ func init() { reflect.TypeOf((*ResourcePolicyRule)(nil)).Elem(), ) _jsii_.RegisterStruct( - "k8s.ResourcePoolV1Alpha3", - reflect.TypeOf((*ResourcePoolV1Alpha3)(nil)).Elem(), + "k8s.ResourcePolicyRuleV1Beta3", + reflect.TypeOf((*ResourcePolicyRuleV1Beta3)(nil)).Elem(), ) _jsii_.RegisterStruct( - "k8s.ResourcePoolV1Beta1", - reflect.TypeOf((*ResourcePoolV1Beta1)(nil)).Elem(), + "k8s.ResourcePoolV1Alpha3", + reflect.TypeOf((*ResourcePoolV1Alpha3)(nil)).Elem(), ) _jsii_.RegisterStruct( "k8s.ResourceQuotaSpec", @@ -5047,10 +4967,6 @@ func init() { "k8s.ResourceSliceSpecV1Alpha3", reflect.TypeOf((*ResourceSliceSpecV1Alpha3)(nil)).Elem(), ) - _jsii_.RegisterStruct( - "k8s.ResourceSliceSpecV1Beta1", - reflect.TypeOf((*ResourceSliceSpecV1Beta1)(nil)).Elem(), - ) _jsii_.RegisterStruct( "k8s.RoleRef", reflect.TypeOf((*RoleRef)(nil)).Elem(), @@ -5139,6 +5055,10 @@ func init() { "k8s.SelfSubjectRulesReviewSpec", reflect.TypeOf((*SelfSubjectRulesReviewSpec)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.ServiceAccountSubjectV1Beta3", + reflect.TypeOf((*ServiceAccountSubjectV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ServiceAccountTokenProjection", reflect.TypeOf((*ServiceAccountTokenProjection)(nil)).Elem(), @@ -5215,6 +5135,10 @@ func init() { "k8s.SubjectAccessReviewSpec", reflect.TypeOf((*SubjectAccessReviewSpec)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.SubjectV1Beta3", + reflect.TypeOf((*SubjectV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.SuccessPolicy", reflect.TypeOf((*SuccessPolicy)(nil)).Elem(), @@ -5271,10 +5195,18 @@ func init() { "k8s.TypedObjectReference", reflect.TypeOf((*TypedObjectReference)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.UserSubjectV1Beta3", + reflect.TypeOf((*UserSubjectV1Beta3)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ValidatingAdmissionPolicyBindingSpec", reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpec)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.ValidatingAdmissionPolicyBindingSpecV1Alpha1", + reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpecV1Alpha1)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ValidatingAdmissionPolicyBindingSpecV1Beta1", reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpecV1Beta1)(nil)).Elem(), @@ -5283,6 +5215,10 @@ func init() { "k8s.ValidatingAdmissionPolicySpec", reflect.TypeOf((*ValidatingAdmissionPolicySpec)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.ValidatingAdmissionPolicySpecV1Alpha1", + reflect.TypeOf((*ValidatingAdmissionPolicySpecV1Alpha1)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ValidatingAdmissionPolicySpecV1Beta1", reflect.TypeOf((*ValidatingAdmissionPolicySpecV1Beta1)(nil)).Elem(), @@ -5299,6 +5235,10 @@ func init() { "k8s.ValidationRule", reflect.TypeOf((*ValidationRule)(nil)).Elem(), ) + _jsii_.RegisterStruct( + "k8s.ValidationV1Alpha1", + reflect.TypeOf((*ValidationV1Alpha1)(nil)).Elem(), + ) _jsii_.RegisterStruct( "k8s.ValidationV1Beta1", reflect.TypeOf((*ValidationV1Beta1)(nil)).Elem(), diff --git a/pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz b/pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz index f66a7c732a1bb6560b83929a5e9492f89ca03a3d..5c4dd31579b812b04939ef0b8b360c42f1097fda 100644 GIT binary patch literal 34515 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 z z3Uzq;6;r1VbMni0I#!rI7fJEp`tv4t!tiV;Afil@Vx2)J#Xpnc+DQuiqPr36&vlv&}FyfqVPaZj_^ z9_2}PP-mN45+risaTGmC@6?5hiohS<^2l128_#q>RAChMy-1e^I$_ zh0^Z47If>-`e}&t#3Sr8;a+~AeHJK7Nm111n=M;W->wDYs}_)& zH*>DxrOL=FnsX>ecp`~Faj@3XDwjG>JrO7Y@FOGw#bH=@#-yBR`pikS2@8s%1!T<5 zEQ(qxQMRZkk|R7ZQ6#}yi=tfWtcoa706(HAk}xb>6v>IE7e#6l7PNiM7`pak!q(D5 z)(Yn!9-8suG1GdQGltS!&%*d2S+-HVJUcwDf^S*0Xg+9o+EjM@RIM^MHTA zmy^Z?>jJ;&o@|5khn}T;*@w*!=NBi;o6TFaz6@@t79~2L9UfKB&JWqJvMt_S2Z8mM zaH!V!7dl?-3yGX+)xVG&rM|fMTx}d5HW|@WtM8)*7RGX+X0A)TOyyqaZvt<%}6_ zKH28k5qIx>60oa`dyB?*eG~8%aqaZiZcsp;pOMl6xo;s zD}yA5cp7SW60Wr#o==`9u85~VynIbO3B)oa(UkQ;Qnun+8Q&t%^pW=)4ru8+4hQrp>^VTKyj_O_TK>Mn0bTsg!vURP?*U5|jnpX? zMLYAR`xFMx7TtMjh^KL3O~SRlu;!EJiC z+x2mHOwMJ*4gt=TJxbclZP8Vetp&;yG%8c7gv-1rOPCJ%=e99o`XUd}b61bV8vPMX1N9y{WKwVbq> z))HkBfu6p8lM41DUY#^BmS7{DUad*pX-`Y1Nm#7s5hqX5S|h<)3!Yr+tctBh0sN@) zW=WPBIngYV=IQG$y6a&+zs%C~7k#d^Ael^}RnlQ1fIp^G(E(YC$Ek=W6WMi7RhLnI z!1=_>)6{1aU~54%fj%pv(}W;Dviw<=UZbX(P4X1eZGKt*t^d}4>%aBi%KrTy!rU(H H0Eh$tZK^lt literal 34234 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 Date: Tue, 10 Feb 2026 02:15:19 +0100 Subject: [PATCH 07/16] unify module name --- book/go.mod | 4 ++-- framework/components/blockchain/anvil.go | 4 ++-- framework/components/clnode/clnode.go | 4 ++-- framework/components/dockercompose/go.mod | 2 +- framework/components/fake/go.mod | 2 +- framework/components/postgres/postgres.go | 4 ++-- .../components/simple_node_set/node_set.go | 2 +- framework/examples/chip_ingress/go.mod | 2 +- framework/examples/myproject/go.mod | 4 ++-- framework/examples/myproject_cll/go.mod | 4 ++-- framework/go.mod | 4 ++-- pods/Justfile | 4 ++-- pods/README.md | 2 +- pods/defaults.go | 2 +- pods/environment/environment.go | 4 ++-- pods/environment/go.mod | 6 +++--- pods/go.mod | 2 +- pods/imports/k8s/IntOrString.go | 2 +- pods/imports/k8s/KubeApiService.go | 4 ++-- pods/imports/k8s/KubeApiServiceList.go | 4 ++-- pods/imports/k8s/KubeBinding.go | 4 ++-- .../k8s/KubeCertificateSigningRequest.go | 4 ++-- .../k8s/KubeCertificateSigningRequestList.go | 4 ++-- pods/imports/k8s/KubeClusterRole.go | 4 ++-- pods/imports/k8s/KubeClusterRoleBinding.go | 4 ++-- .../imports/k8s/KubeClusterRoleBindingList.go | 4 ++-- pods/imports/k8s/KubeClusterRoleList.go | 4 ++-- .../k8s/KubeClusterTrustBundleListV1Alpha1.go | 4 ++-- .../k8s/KubeClusterTrustBundleV1Alpha1.go | 4 ++-- pods/imports/k8s/KubeComponentStatus.go | 4 ++-- pods/imports/k8s/KubeComponentStatusList.go | 4 ++-- pods/imports/k8s/KubeConfigMap.go | 4 ++-- pods/imports/k8s/KubeConfigMapList.go | 4 ++-- pods/imports/k8s/KubeControllerRevision.go | 4 ++-- .../imports/k8s/KubeControllerRevisionList.go | 4 ++-- pods/imports/k8s/KubeCronJob.go | 4 ++-- pods/imports/k8s/KubeCronJobList.go | 4 ++-- pods/imports/k8s/KubeCsiDriver.go | 4 ++-- pods/imports/k8s/KubeCsiDriverList.go | 4 ++-- pods/imports/k8s/KubeCsiNode.go | 4 ++-- pods/imports/k8s/KubeCsiNodeList.go | 4 ++-- pods/imports/k8s/KubeCsiStorageCapacity.go | 4 ++-- .../imports/k8s/KubeCsiStorageCapacityList.go | 4 ++-- .../k8s/KubeCustomResourceDefinition.go | 4 ++-- .../k8s/KubeCustomResourceDefinitionList.go | 4 ++-- pods/imports/k8s/KubeDaemonSet.go | 4 ++-- pods/imports/k8s/KubeDaemonSetList.go | 4 ++-- pods/imports/k8s/KubeDeployment.go | 4 ++-- pods/imports/k8s/KubeDeploymentList.go | 4 ++-- .../k8s/KubeDeviceClassListV1Alpha3.go | 4 ++-- pods/imports/k8s/KubeDeviceClassV1Alpha3.go | 4 ++-- pods/imports/k8s/KubeEndpointSlice.go | 4 ++-- pods/imports/k8s/KubeEndpointSliceList.go | 4 ++-- pods/imports/k8s/KubeEndpoints.go | 4 ++-- pods/imports/k8s/KubeEndpointsList.go | 4 ++-- pods/imports/k8s/KubeEvent.go | 4 ++-- pods/imports/k8s/KubeEventList.go | 4 ++-- pods/imports/k8s/KubeEviction.go | 4 ++-- pods/imports/k8s/KubeFlowSchema.go | 4 ++-- pods/imports/k8s/KubeFlowSchemaList.go | 4 ++-- pods/imports/k8s/KubeFlowSchemaListV1Beta3.go | 4 ++-- pods/imports/k8s/KubeFlowSchemaV1Beta3.go | 4 ++-- .../k8s/KubeHorizontalPodAutoscaler.go | 4 ++-- .../k8s/KubeHorizontalPodAutoscalerList.go | 4 ++-- .../k8s/KubeHorizontalPodAutoscalerListV2.go | 4 ++-- .../k8s/KubeHorizontalPodAutoscalerV2.go | 4 ++-- pods/imports/k8s/KubeIngress.go | 4 ++-- pods/imports/k8s/KubeIngressClass.go | 4 ++-- pods/imports/k8s/KubeIngressClassList.go | 4 ++-- pods/imports/k8s/KubeIngressList.go | 4 ++-- pods/imports/k8s/KubeIpAddressListV1Beta1.go | 4 ++-- pods/imports/k8s/KubeIpAddressV1Beta1.go | 4 ++-- pods/imports/k8s/KubeJob.go | 4 ++-- pods/imports/k8s/KubeJobList.go | 4 ++-- pods/imports/k8s/KubeLease.go | 4 ++-- .../k8s/KubeLeaseCandidateListV1Alpha1.go | 4 ++-- .../imports/k8s/KubeLeaseCandidateV1Alpha1.go | 4 ++-- pods/imports/k8s/KubeLeaseList.go | 4 ++-- pods/imports/k8s/KubeLimitRange.go | 4 ++-- pods/imports/k8s/KubeLimitRangeList.go | 4 ++-- .../k8s/KubeLocalSubjectAccessReview.go | 4 ++-- .../k8s/KubeMutatingWebhookConfiguration.go | 4 ++-- .../KubeMutatingWebhookConfigurationList.go | 4 ++-- pods/imports/k8s/KubeNamespace.go | 4 ++-- pods/imports/k8s/KubeNamespaceList.go | 4 ++-- pods/imports/k8s/KubeNetworkPolicy.go | 4 ++-- pods/imports/k8s/KubeNetworkPolicyList.go | 4 ++-- pods/imports/k8s/KubeNode.go | 4 ++-- pods/imports/k8s/KubeNodeList.go | 4 ++-- pods/imports/k8s/KubePersistentVolume.go | 4 ++-- pods/imports/k8s/KubePersistentVolumeClaim.go | 4 ++-- .../k8s/KubePersistentVolumeClaimList.go | 4 ++-- pods/imports/k8s/KubePersistentVolumeList.go | 4 ++-- pods/imports/k8s/KubePod.go | 4 ++-- pods/imports/k8s/KubePodDisruptionBudget.go | 4 ++-- .../k8s/KubePodDisruptionBudgetList.go | 4 ++-- pods/imports/k8s/KubePodList.go | 4 ++-- .../KubePodSchedulingContextListV1Alpha3.go | 4 ++-- .../k8s/KubePodSchedulingContextV1Alpha3.go | 4 ++-- pods/imports/k8s/KubePodTemplate.go | 4 ++-- pods/imports/k8s/KubePodTemplateList.go | 4 ++-- pods/imports/k8s/KubePriorityClass.go | 4 ++-- pods/imports/k8s/KubePriorityClassList.go | 4 ++-- .../k8s/KubePriorityLevelConfiguration.go | 4 ++-- .../k8s/KubePriorityLevelConfigurationList.go | 4 ++-- ...bePriorityLevelConfigurationListV1Beta3.go | 4 ++-- .../KubePriorityLevelConfigurationV1Beta3.go | 4 ++-- pods/imports/k8s/KubeReplicaSet.go | 4 ++-- pods/imports/k8s/KubeReplicaSetList.go | 4 ++-- pods/imports/k8s/KubeReplicationController.go | 4 ++-- .../k8s/KubeReplicationControllerList.go | 4 ++-- .../k8s/KubeResourceClaimListV1Alpha3.go | 4 ++-- .../KubeResourceClaimTemplateListV1Alpha3.go | 4 ++-- .../k8s/KubeResourceClaimTemplateV1Alpha3.go | 4 ++-- pods/imports/k8s/KubeResourceClaimV1Alpha3.go | 4 ++-- pods/imports/k8s/KubeResourceQuota.go | 4 ++-- pods/imports/k8s/KubeResourceQuotaList.go | 4 ++-- pods/imports/k8s/KubeResourceSliceV1Alpha3.go | 4 ++-- pods/imports/k8s/KubeRole.go | 4 ++-- pods/imports/k8s/KubeRoleBinding.go | 4 ++-- pods/imports/k8s/KubeRoleBindingList.go | 4 ++-- pods/imports/k8s/KubeRoleList.go | 4 ++-- pods/imports/k8s/KubeRuntimeClass.go | 4 ++-- pods/imports/k8s/KubeRuntimeClassList.go | 4 ++-- pods/imports/k8s/KubeScale.go | 4 ++-- pods/imports/k8s/KubeSecret.go | 4 ++-- pods/imports/k8s/KubeSecretList.go | 4 ++-- .../k8s/KubeSelfSubjectAccessReview.go | 4 ++-- pods/imports/k8s/KubeSelfSubjectReview.go | 4 ++-- .../k8s/KubeSelfSubjectReviewV1Alpha1.go | 4 ++-- .../k8s/KubeSelfSubjectReviewV1Beta1.go | 4 ++-- .../imports/k8s/KubeSelfSubjectRulesReview.go | 4 ++-- pods/imports/k8s/KubeService.go | 4 ++-- pods/imports/k8s/KubeServiceAccount.go | 4 ++-- pods/imports/k8s/KubeServiceAccountList.go | 4 ++-- .../imports/k8s/KubeServiceCidrListV1Beta1.go | 4 ++-- pods/imports/k8s/KubeServiceCidrv1Beta1.go | 4 ++-- pods/imports/k8s/KubeServiceList.go | 4 ++-- pods/imports/k8s/KubeStatefulSet.go | 4 ++-- pods/imports/k8s/KubeStatefulSetList.go | 4 ++-- pods/imports/k8s/KubeStatus.go | 4 ++-- pods/imports/k8s/KubeStorageClass.go | 4 ++-- pods/imports/k8s/KubeStorageClassList.go | 4 ++-- .../k8s/KubeStorageVersionListV1Alpha1.go | 4 ++-- ...KubeStorageVersionMigrationListV1Alpha1.go | 4 ++-- .../KubeStorageVersionMigrationV1Alpha1.go | 4 ++-- .../imports/k8s/KubeStorageVersionV1Alpha1.go | 4 ++-- pods/imports/k8s/KubeSubjectAccessReview.go | 4 ++-- pods/imports/k8s/KubeTokenRequest.go | 4 ++-- pods/imports/k8s/KubeTokenReview.go | 4 ++-- .../k8s/KubeValidatingAdmissionPolicy.go | 4 ++-- .../KubeValidatingAdmissionPolicyBinding.go | 4 ++-- ...ubeValidatingAdmissionPolicyBindingList.go | 4 ++-- ...atingAdmissionPolicyBindingListV1Alpha1.go | 4 ++-- ...datingAdmissionPolicyBindingListV1Beta1.go | 4 ++-- ...alidatingAdmissionPolicyBindingV1Alpha1.go | 4 ++-- ...ValidatingAdmissionPolicyBindingV1Beta1.go | 4 ++-- .../k8s/KubeValidatingAdmissionPolicyList.go | 4 ++-- ...beValidatingAdmissionPolicyListV1Alpha1.go | 4 ++-- ...ubeValidatingAdmissionPolicyListV1Beta1.go | 4 ++-- .../KubeValidatingAdmissionPolicyV1Alpha1.go | 4 ++-- .../KubeValidatingAdmissionPolicyV1Beta1.go | 4 ++-- .../k8s/KubeValidatingWebhookConfiguration.go | 4 ++-- .../KubeValidatingWebhookConfigurationList.go | 4 ++-- pods/imports/k8s/KubeVolumeAttachment.go | 4 ++-- pods/imports/k8s/KubeVolumeAttachmentList.go | 4 ++-- .../KubeVolumeAttributesClassListV1Alpha1.go | 4 ++-- .../KubeVolumeAttributesClassListV1Beta1.go | 4 ++-- .../k8s/KubeVolumeAttributesClassV1Alpha1.go | 4 ++-- .../k8s/KubeVolumeAttributesClassV1Beta1.go | 4 ++-- pods/imports/k8s/Quantity.go | 2 +- pods/imports/k8s/jsii/k8s-0.0.0.tgz | Bin 746686 -> 746722 bytes .../monitoringcoreoscom/ServiceMonitor.go | 4 ++-- .../ServiceMonitorSpecEndpointsTargetPort.go | 2 +- .../jsii/monitoringcoreoscom-0.0.0.tgz | Bin 34515 -> 34560 bytes pods/pods.go | 2 +- pods/pods_test.go | 2 +- 177 files changed, 339 insertions(+), 339 deletions(-) diff --git a/book/go.mod b/book/go.mod index 31b32f396..a128209c3 100644 --- a/book/go.mod +++ b/book/go.mod @@ -5,7 +5,7 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../framework github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../framework/components/fake - github.com/smartcontractkit/pods => ../pods + github.com/smartcontractkit/chainlink-testing-framework/pods => ../pods ) require ( @@ -49,7 +49,7 @@ require ( github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 // indirect + github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/testify v1.10.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 36232acd7..7a7cfefe0 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -6,8 +6,8 @@ import ( "os" "strings" - "github.com/smartcontractkit/pods" - "github.com/smartcontractkit/pods/imports/k8s" + "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components" diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 402b8e55d..b80a31852 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -14,8 +14,8 @@ import ( "time" "github.com/aws/jsii-runtime-go" - "github.com/smartcontractkit/pods" - "github.com/smartcontractkit/pods/imports/k8s" + "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" diff --git a/framework/components/dockercompose/go.mod b/framework/components/dockercompose/go.mod index 32d443273..dedae154e 100644 --- a/framework/components/dockercompose/go.mod +++ b/framework/components/dockercompose/go.mod @@ -4,7 +4,7 @@ go 1.25.3 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework - github.com/smartcontractkit/pods => ../../../pods + github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods ) // make vulnerability scanner happy diff --git a/framework/components/fake/go.mod b/framework/components/fake/go.mod index dc755f609..5312448eb 100644 --- a/framework/components/fake/go.mod +++ b/framework/components/fake/go.mod @@ -4,7 +4,7 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework - github.com/smartcontractkit/pods => ../../../pods + github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods ) require ( diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index 7ea9158bb..6a0138167 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -8,8 +8,8 @@ import ( "strings" "time" - "github.com/smartcontractkit/pods" - "github.com/smartcontractkit/pods/imports/k8s" + "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" diff --git a/framework/components/simple_node_set/node_set.go b/framework/components/simple_node_set/node_set.go index d6b26613e..9b5def5a1 100644 --- a/framework/components/simple_node_set/node_set.go +++ b/framework/components/simple_node_set/node_set.go @@ -11,7 +11,7 @@ import ( "golang.org/x/sync/errgroup" - "github.com/smartcontractkit/pods" + "github.com/smartcontractkit/chainlink-testing-framework/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components" diff --git a/framework/examples/chip_ingress/go.mod b/framework/examples/chip_ingress/go.mod index fb4fc4a29..71b2da0cb 100644 --- a/framework/examples/chip_ingress/go.mod +++ b/framework/examples/chip_ingress/go.mod @@ -5,7 +5,7 @@ go 1.25.3 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/dockercompose => ../../components/dockercompose - github.com/smartcontractkit/pods => ../../../pods + github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods ) // make vulnerability scanner happy diff --git a/framework/examples/myproject/go.mod b/framework/examples/myproject/go.mod index 00fea49c6..620dbeedd 100644 --- a/framework/examples/myproject/go.mod +++ b/framework/examples/myproject/go.mod @@ -5,8 +5,8 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../../components/fake + github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods github.com/smartcontractkit/chainlink-testing-framework/wasp => ../../../wasp - github.com/smartcontractkit/pods => ../../../pods ) require ( @@ -53,7 +53,7 @@ require ( github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/rs/xid v1.6.0 // indirect github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 // indirect - github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 // indirect + github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/tjhop/slog-gokit v0.1.3 // indirect diff --git a/framework/examples/myproject_cll/go.mod b/framework/examples/myproject_cll/go.mod index c49a868da..14bddb089 100644 --- a/framework/examples/myproject_cll/go.mod +++ b/framework/examples/myproject_cll/go.mod @@ -5,8 +5,8 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../../components/fake + github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods github.com/smartcontractkit/chainlink-testing-framework/wasp => ../../../wasp - github.com/smartcontractkit/pods => ../../../pods ) require ( @@ -115,7 +115,7 @@ require ( github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 // indirect + github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/supranational/blst v0.3.13 // indirect github.com/testcontainers/testcontainers-go v0.37.0 // indirect diff --git a/framework/go.mod b/framework/go.mod index 90b97eede..44d5bb8c4 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -3,9 +3,9 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework go 1.24.2 replace ( + github.com/smartcontractkit/chainlink-testing-framework/pods => ../pods github.com/smartcontractkit/chainlink-testing-framework/wasp => ../wasp github.com/smartcontractkit/chainlink-testing-framework/wasp-tests => ../wasp/examples - github.com/smartcontractkit/pods => ../pods ) require ( @@ -31,8 +31,8 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.33.0 + github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.2 - github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 github.com/urfave/cli/v2 v2.27.7 diff --git a/pods/Justfile b/pods/Justfile index 942cc30ea..cbc055b49 100644 --- a/pods/Justfile +++ b/pods/Justfile @@ -35,12 +35,12 @@ update-snapshots: # Run all deployment tests test-deploy: - APPLY=true go test -v -count 1 -race -cover -coverprofile=cover.out -covermode=atomic -coverpkg=github.com/smartcontractkit/pods -run TestPods ./... && go tool cover -html cover.out + APPLY=true go test -v -count 1 -race -cover -coverprofile=cover.out -covermode=atomic -coverpkg=github.com/smartcontractkit/chainlink-testing-framework/pods -run TestPods ./... && go tool cover -html cover.out # Check coverage thresholds cover-action: go install github.com/vladopajic/go-test-coverage/v2@latest - APPLY=true go test -v -count 1 -race -cover -coverprofile=cover.out -covermode=atomic -coverpkg=github.com/smartcontractkit/pods -run TestPods ./... + APPLY=true go test -v -count 1 -race -cover -coverprofile=cover.out -covermode=atomic -coverpkg=github.com/smartcontractkit/chainlink-testing-framework/pods -run TestPods ./... go-test-coverage --badge-file-name=cover.svg --config=./.testcoverage.yml # Run go mod tidy diff --git a/pods/README.md b/pods/README.md index c9ea4e96a..73615fc00 100644 --- a/pods/README.md +++ b/pods/README.md @@ -11,7 +11,7 @@ It meant to be used with `CTFv2` framework to run components on `K8s`. ### Real world example (Chainlink Node Set) In this example we'll spin up a local `Kind` cluster and deploy a Chainlink cluster, -just [40 lines](https://github.com/smartcontractkit/pods/blob/master/examples/nodeset_test.go) of code (without product +just [40 lines](https://github.com/smartcontractkit/chainlink-testing-framework/pods/blob/master/examples/nodeset_test.go) of code (without product configuration). Follow the [README](./environment/README.md) diff --git a/pods/defaults.go b/pods/defaults.go index 3413d2f75..e5b66bc60 100644 --- a/pods/defaults.go +++ b/pods/defaults.go @@ -5,7 +5,7 @@ import ( "sort" "github.com/aws/jsii-runtime-go" - "github.com/smartcontractkit/pods/imports/k8s" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" ) func S(s string) *string { return jsii.String(s) } diff --git a/pods/environment/environment.go b/pods/environment/environment.go index 991e074f1..4af70c2cc 100644 --- a/pods/environment/environment.go +++ b/pods/environment/environment.go @@ -5,8 +5,8 @@ import ( "strconv" "time" - "github.com/smartcontractkit/pods" - p "github.com/smartcontractkit/pods" + "github.com/smartcontractkit/chainlink-testing-framework/pods" + p "github.com/smartcontractkit/chainlink-testing-framework/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework/clclient" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/clnode" diff --git a/pods/environment/go.mod b/pods/environment/go.mod index 685bfc1ca..d0de8c7c2 100644 --- a/pods/environment/go.mod +++ b/pods/environment/go.mod @@ -1,12 +1,12 @@ -module github.com/smartcontractkit/pods/example-env +module github.com/smartcontractkit/chainlink-testing-framework/pods/example-env go 1.24.3 -replace github.com/smartcontractkit/pods => ../ +replace github.com/smartcontractkit/chainlink-testing-framework/pods => ../ require ( github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 - github.com/smartcontractkit/pods v0.0.0-00010101000000-000000000000 + github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 ) require ( diff --git a/pods/go.mod b/pods/go.mod index 85b485460..23c8c1af0 100644 --- a/pods/go.mod +++ b/pods/go.mod @@ -1,4 +1,4 @@ -module github.com/smartcontractkit/pods +module github.com/smartcontractkit/chainlink-testing-framework/pods go 1.24.0 diff --git a/pods/imports/k8s/IntOrString.go b/pods/imports/k8s/IntOrString.go index 620078289..72e30d857 100644 --- a/pods/imports/k8s/IntOrString.go +++ b/pods/imports/k8s/IntOrString.go @@ -2,7 +2,7 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" ) type IntOrString interface { diff --git a/pods/imports/k8s/KubeApiService.go b/pods/imports/k8s/KubeApiService.go index 813649773..324ffbaec 100644 --- a/pods/imports/k8s/KubeApiService.go +++ b/pods/imports/k8s/KubeApiService.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // APIService represents a server for a particular GroupVersion. diff --git a/pods/imports/k8s/KubeApiServiceList.go b/pods/imports/k8s/KubeApiServiceList.go index 09ef7dc3c..50688f95b 100644 --- a/pods/imports/k8s/KubeApiServiceList.go +++ b/pods/imports/k8s/KubeApiServiceList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // APIServiceList is a list of APIService objects. diff --git a/pods/imports/k8s/KubeBinding.go b/pods/imports/k8s/KubeBinding.go index 142048d7c..5edfc2f64 100644 --- a/pods/imports/k8s/KubeBinding.go +++ b/pods/imports/k8s/KubeBinding.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Binding ties one object to another; diff --git a/pods/imports/k8s/KubeCertificateSigningRequest.go b/pods/imports/k8s/KubeCertificateSigningRequest.go index 1eec27800..10828aff0 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequest.go +++ b/pods/imports/k8s/KubeCertificateSigningRequest.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued. diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList.go b/pods/imports/k8s/KubeCertificateSigningRequestList.go index 67898a398..17475fb7e 100644 --- a/pods/imports/k8s/KubeCertificateSigningRequestList.go +++ b/pods/imports/k8s/KubeCertificateSigningRequestList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CertificateSigningRequestList is a collection of CertificateSigningRequest objects. diff --git a/pods/imports/k8s/KubeClusterRole.go b/pods/imports/k8s/KubeClusterRole.go index cee326a9f..9534fa544 100644 --- a/pods/imports/k8s/KubeClusterRole.go +++ b/pods/imports/k8s/KubeClusterRole.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. diff --git a/pods/imports/k8s/KubeClusterRoleBinding.go b/pods/imports/k8s/KubeClusterRoleBinding.go index f691c1b69..523da02b7 100644 --- a/pods/imports/k8s/KubeClusterRoleBinding.go +++ b/pods/imports/k8s/KubeClusterRoleBinding.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ClusterRoleBinding references a ClusterRole, but not contain it. diff --git a/pods/imports/k8s/KubeClusterRoleBindingList.go b/pods/imports/k8s/KubeClusterRoleBindingList.go index 5b1cb2cd3..4a7428327 100644 --- a/pods/imports/k8s/KubeClusterRoleBindingList.go +++ b/pods/imports/k8s/KubeClusterRoleBindingList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ClusterRoleBindingList is a collection of ClusterRoleBindings. diff --git a/pods/imports/k8s/KubeClusterRoleList.go b/pods/imports/k8s/KubeClusterRoleList.go index fa7af489b..2f0dd043d 100644 --- a/pods/imports/k8s/KubeClusterRoleList.go +++ b/pods/imports/k8s/KubeClusterRoleList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ClusterRoleList is a collection of ClusterRoles. diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go index 950410dfb..9d58f6517 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go +++ b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ClusterTrustBundleList is a collection of ClusterTrustBundle objects. diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go index 2de852804..be02716c2 100644 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go +++ b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates). diff --git a/pods/imports/k8s/KubeComponentStatus.go b/pods/imports/k8s/KubeComponentStatus.go index 7be2fcd3c..e9ec8bbc4 100644 --- a/pods/imports/k8s/KubeComponentStatus.go +++ b/pods/imports/k8s/KubeComponentStatus.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ComponentStatus (and ComponentStatusList) holds the cluster validation info. diff --git a/pods/imports/k8s/KubeComponentStatusList.go b/pods/imports/k8s/KubeComponentStatusList.go index 220d2b60f..53b45c256 100644 --- a/pods/imports/k8s/KubeComponentStatusList.go +++ b/pods/imports/k8s/KubeComponentStatusList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Status of all the conditions for the component as a list of ComponentStatus objects. diff --git a/pods/imports/k8s/KubeConfigMap.go b/pods/imports/k8s/KubeConfigMap.go index 1e0efbda1..3329748a4 100644 --- a/pods/imports/k8s/KubeConfigMap.go +++ b/pods/imports/k8s/KubeConfigMap.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ConfigMap holds configuration data for pods to consume. diff --git a/pods/imports/k8s/KubeConfigMapList.go b/pods/imports/k8s/KubeConfigMapList.go index 6f8ed6587..64ee4b99e 100644 --- a/pods/imports/k8s/KubeConfigMapList.go +++ b/pods/imports/k8s/KubeConfigMapList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ConfigMapList is a resource containing a list of ConfigMap objects. diff --git a/pods/imports/k8s/KubeControllerRevision.go b/pods/imports/k8s/KubeControllerRevision.go index 0e2fca77d..79c8280bd 100644 --- a/pods/imports/k8s/KubeControllerRevision.go +++ b/pods/imports/k8s/KubeControllerRevision.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ControllerRevision implements an immutable snapshot of state data. diff --git a/pods/imports/k8s/KubeControllerRevisionList.go b/pods/imports/k8s/KubeControllerRevisionList.go index 6ec7d5489..47028f68f 100644 --- a/pods/imports/k8s/KubeControllerRevisionList.go +++ b/pods/imports/k8s/KubeControllerRevisionList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ControllerRevisionList is a resource containing a list of ControllerRevision objects. diff --git a/pods/imports/k8s/KubeCronJob.go b/pods/imports/k8s/KubeCronJob.go index 2c18342ea..ef45e3c33 100644 --- a/pods/imports/k8s/KubeCronJob.go +++ b/pods/imports/k8s/KubeCronJob.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CronJob represents the configuration of a single cron job. diff --git a/pods/imports/k8s/KubeCronJobList.go b/pods/imports/k8s/KubeCronJobList.go index 7fbf7f29d..849708bb3 100644 --- a/pods/imports/k8s/KubeCronJobList.go +++ b/pods/imports/k8s/KubeCronJobList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CronJobList is a collection of cron jobs. diff --git a/pods/imports/k8s/KubeCsiDriver.go b/pods/imports/k8s/KubeCsiDriver.go index d7abe5504..c23fede6f 100644 --- a/pods/imports/k8s/KubeCsiDriver.go +++ b/pods/imports/k8s/KubeCsiDriver.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. diff --git a/pods/imports/k8s/KubeCsiDriverList.go b/pods/imports/k8s/KubeCsiDriverList.go index 8bd5f92da..5abf7951d 100644 --- a/pods/imports/k8s/KubeCsiDriverList.go +++ b/pods/imports/k8s/KubeCsiDriverList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CSIDriverList is a collection of CSIDriver objects. diff --git a/pods/imports/k8s/KubeCsiNode.go b/pods/imports/k8s/KubeCsiNode.go index ce3da9508..a640dd7bf 100644 --- a/pods/imports/k8s/KubeCsiNode.go +++ b/pods/imports/k8s/KubeCsiNode.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CSINode holds information about all CSI drivers installed on a node. diff --git a/pods/imports/k8s/KubeCsiNodeList.go b/pods/imports/k8s/KubeCsiNodeList.go index f6b6322cf..f1b103cd7 100644 --- a/pods/imports/k8s/KubeCsiNodeList.go +++ b/pods/imports/k8s/KubeCsiNodeList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CSINodeList is a collection of CSINode objects. diff --git a/pods/imports/k8s/KubeCsiStorageCapacity.go b/pods/imports/k8s/KubeCsiStorageCapacity.go index ff2783580..434963b14 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacity.go +++ b/pods/imports/k8s/KubeCsiStorageCapacity.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CSIStorageCapacity stores the result of one CSI GetCapacity call. diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList.go b/pods/imports/k8s/KubeCsiStorageCapacityList.go index f0c4df2ef..0036c1614 100644 --- a/pods/imports/k8s/KubeCsiStorageCapacityList.go +++ b/pods/imports/k8s/KubeCsiStorageCapacityList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CSIStorageCapacityList is a collection of CSIStorageCapacity objects. diff --git a/pods/imports/k8s/KubeCustomResourceDefinition.go b/pods/imports/k8s/KubeCustomResourceDefinition.go index 931f3f4ec..9255274a0 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinition.go +++ b/pods/imports/k8s/KubeCustomResourceDefinition.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CustomResourceDefinition represents a resource that should be exposed on the API server. diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList.go b/pods/imports/k8s/KubeCustomResourceDefinitionList.go index 3da75b6b8..ded0fda71 100644 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList.go +++ b/pods/imports/k8s/KubeCustomResourceDefinitionList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // CustomResourceDefinitionList is a list of CustomResourceDefinition objects. diff --git a/pods/imports/k8s/KubeDaemonSet.go b/pods/imports/k8s/KubeDaemonSet.go index 32be55a19..4661cc4ba 100644 --- a/pods/imports/k8s/KubeDaemonSet.go +++ b/pods/imports/k8s/KubeDaemonSet.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // DaemonSet represents the configuration of a daemon set. diff --git a/pods/imports/k8s/KubeDaemonSetList.go b/pods/imports/k8s/KubeDaemonSetList.go index ebe6b4c82..2ccbaf11b 100644 --- a/pods/imports/k8s/KubeDaemonSetList.go +++ b/pods/imports/k8s/KubeDaemonSetList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // DaemonSetList is a collection of daemon sets. diff --git a/pods/imports/k8s/KubeDeployment.go b/pods/imports/k8s/KubeDeployment.go index 86a13bd18..2f34de742 100644 --- a/pods/imports/k8s/KubeDeployment.go +++ b/pods/imports/k8s/KubeDeployment.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Deployment enables declarative updates for Pods and ReplicaSets. diff --git a/pods/imports/k8s/KubeDeploymentList.go b/pods/imports/k8s/KubeDeploymentList.go index f86956497..5a49e6495 100644 --- a/pods/imports/k8s/KubeDeploymentList.go +++ b/pods/imports/k8s/KubeDeploymentList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // DeploymentList is a list of Deployments. diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go index 9fc48e59b..a597317ad 100644 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go +++ b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // DeviceClassList is a collection of classes. diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go index 6b0b0a523..aef7d86b1 100644 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go +++ b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. diff --git a/pods/imports/k8s/KubeEndpointSlice.go b/pods/imports/k8s/KubeEndpointSlice.go index 71a477b7a..e3e487260 100644 --- a/pods/imports/k8s/KubeEndpointSlice.go +++ b/pods/imports/k8s/KubeEndpointSlice.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // EndpointSlice represents a subset of the endpoints that implement a service. diff --git a/pods/imports/k8s/KubeEndpointSliceList.go b/pods/imports/k8s/KubeEndpointSliceList.go index 37d83b986..2cfc75719 100644 --- a/pods/imports/k8s/KubeEndpointSliceList.go +++ b/pods/imports/k8s/KubeEndpointSliceList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // EndpointSliceList represents a list of endpoint slices. diff --git a/pods/imports/k8s/KubeEndpoints.go b/pods/imports/k8s/KubeEndpoints.go index c01358b8c..fd070db0c 100644 --- a/pods/imports/k8s/KubeEndpoints.go +++ b/pods/imports/k8s/KubeEndpoints.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Endpoints is a collection of endpoints that implement the actual service. Example:. diff --git a/pods/imports/k8s/KubeEndpointsList.go b/pods/imports/k8s/KubeEndpointsList.go index d7d18ea5e..97fd1ca51 100644 --- a/pods/imports/k8s/KubeEndpointsList.go +++ b/pods/imports/k8s/KubeEndpointsList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // EndpointsList is a list of endpoints. diff --git a/pods/imports/k8s/KubeEvent.go b/pods/imports/k8s/KubeEvent.go index b61f00d0b..86444f013 100644 --- a/pods/imports/k8s/KubeEvent.go +++ b/pods/imports/k8s/KubeEvent.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Event is a report of an event somewhere in the cluster. diff --git a/pods/imports/k8s/KubeEventList.go b/pods/imports/k8s/KubeEventList.go index 1695b8039..bfc88bc9c 100644 --- a/pods/imports/k8s/KubeEventList.go +++ b/pods/imports/k8s/KubeEventList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // EventList is a list of Event objects. diff --git a/pods/imports/k8s/KubeEviction.go b/pods/imports/k8s/KubeEviction.go index bc1f2996e..90897879f 100644 --- a/pods/imports/k8s/KubeEviction.go +++ b/pods/imports/k8s/KubeEviction.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Eviction evicts a pod from its node subject to certain policies and safety constraints. diff --git a/pods/imports/k8s/KubeFlowSchema.go b/pods/imports/k8s/KubeFlowSchema.go index 7cdb4806f..c1462edac 100644 --- a/pods/imports/k8s/KubeFlowSchema.go +++ b/pods/imports/k8s/KubeFlowSchema.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // FlowSchema defines the schema of a group of flows. diff --git a/pods/imports/k8s/KubeFlowSchemaList.go b/pods/imports/k8s/KubeFlowSchemaList.go index 7816e1f12..f637c7e7e 100644 --- a/pods/imports/k8s/KubeFlowSchemaList.go +++ b/pods/imports/k8s/KubeFlowSchemaList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // FlowSchemaList is a list of FlowSchema objects. diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go index bfce20108..172db7d8a 100644 --- a/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go +++ b/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // FlowSchemaList is a list of FlowSchema objects. diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3.go index 6a270e470..d7ec71941 100644 --- a/pods/imports/k8s/KubeFlowSchemaV1Beta3.go +++ b/pods/imports/k8s/KubeFlowSchemaV1Beta3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // FlowSchema defines the schema of a group of flows. diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go index ee22b80be..924a8ada5 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // configuration of a horizontal pod autoscaler. diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go index 08980d006..da3faec89 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // list of horizontal pod autoscaler objects. diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go index 2d8ec24b5..15b48f310 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go index ec4b60f29..6a5c36dec 100644 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go +++ b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified. diff --git a/pods/imports/k8s/KubeIngress.go b/pods/imports/k8s/KubeIngress.go index d1346b94b..ef24c6cb0 100644 --- a/pods/imports/k8s/KubeIngress.go +++ b/pods/imports/k8s/KubeIngress.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. diff --git a/pods/imports/k8s/KubeIngressClass.go b/pods/imports/k8s/KubeIngressClass.go index 62b8a0e09..639760b32 100644 --- a/pods/imports/k8s/KubeIngressClass.go +++ b/pods/imports/k8s/KubeIngressClass.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // IngressClass represents the class of the Ingress, referenced by the Ingress Spec. diff --git a/pods/imports/k8s/KubeIngressClassList.go b/pods/imports/k8s/KubeIngressClassList.go index 84a88d388..f358de437 100644 --- a/pods/imports/k8s/KubeIngressClassList.go +++ b/pods/imports/k8s/KubeIngressClassList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // IngressClassList is a collection of IngressClasses. diff --git a/pods/imports/k8s/KubeIngressList.go b/pods/imports/k8s/KubeIngressList.go index ac343453b..0056b5145 100644 --- a/pods/imports/k8s/KubeIngressList.go +++ b/pods/imports/k8s/KubeIngressList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // IngressList is a collection of Ingress. diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1.go b/pods/imports/k8s/KubeIpAddressListV1Beta1.go index 83af2cb0f..82fdd8101 100644 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1.go +++ b/pods/imports/k8s/KubeIpAddressListV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // IPAddressList contains a list of IPAddress. diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1.go b/pods/imports/k8s/KubeIpAddressV1Beta1.go index c37392ba3..2eff93b29 100644 --- a/pods/imports/k8s/KubeIpAddressV1Beta1.go +++ b/pods/imports/k8s/KubeIpAddressV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // IPAddress represents a single IP of a single IP Family. diff --git a/pods/imports/k8s/KubeJob.go b/pods/imports/k8s/KubeJob.go index 00773a593..e612447eb 100644 --- a/pods/imports/k8s/KubeJob.go +++ b/pods/imports/k8s/KubeJob.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Job represents the configuration of a single job. diff --git a/pods/imports/k8s/KubeJobList.go b/pods/imports/k8s/KubeJobList.go index bdf16a2c1..768d48243 100644 --- a/pods/imports/k8s/KubeJobList.go +++ b/pods/imports/k8s/KubeJobList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // JobList is a collection of jobs. diff --git a/pods/imports/k8s/KubeLease.go b/pods/imports/k8s/KubeLease.go index d9be5f348..9547e8384 100644 --- a/pods/imports/k8s/KubeLease.go +++ b/pods/imports/k8s/KubeLease.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Lease defines a lease concept. diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go index f47c96dac..8cee3b9cd 100644 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go +++ b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // LeaseCandidateList is a list of Lease objects. diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go index c3ecfacad..6b7d28b38 100644 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go +++ b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // LeaseCandidate defines a candidate for a Lease object. diff --git a/pods/imports/k8s/KubeLeaseList.go b/pods/imports/k8s/KubeLeaseList.go index 5ba3169b7..79cd6b2e3 100644 --- a/pods/imports/k8s/KubeLeaseList.go +++ b/pods/imports/k8s/KubeLeaseList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // LeaseList is a list of Lease objects. diff --git a/pods/imports/k8s/KubeLimitRange.go b/pods/imports/k8s/KubeLimitRange.go index e1c2bd0d5..ed2dbea19 100644 --- a/pods/imports/k8s/KubeLimitRange.go +++ b/pods/imports/k8s/KubeLimitRange.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // LimitRange sets resource usage limits for each kind of resource in a Namespace. diff --git a/pods/imports/k8s/KubeLimitRangeList.go b/pods/imports/k8s/KubeLimitRangeList.go index 87440d581..308401154 100644 --- a/pods/imports/k8s/KubeLimitRangeList.go +++ b/pods/imports/k8s/KubeLimitRangeList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // LimitRangeList is a list of LimitRange items. diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview.go b/pods/imports/k8s/KubeLocalSubjectAccessReview.go index 947a8c37e..8ff1b36a8 100644 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview.go +++ b/pods/imports/k8s/KubeLocalSubjectAccessReview.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go index fa38ced5a..81e47d9ca 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go index d1b1bbbb4..c59ad5560 100644 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go +++ b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration. diff --git a/pods/imports/k8s/KubeNamespace.go b/pods/imports/k8s/KubeNamespace.go index 602b4a7dc..0c41cedc0 100644 --- a/pods/imports/k8s/KubeNamespace.go +++ b/pods/imports/k8s/KubeNamespace.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Namespace provides a scope for Names. diff --git a/pods/imports/k8s/KubeNamespaceList.go b/pods/imports/k8s/KubeNamespaceList.go index 5c6960626..83dfdc4a3 100644 --- a/pods/imports/k8s/KubeNamespaceList.go +++ b/pods/imports/k8s/KubeNamespaceList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // NamespaceList is a list of Namespaces. diff --git a/pods/imports/k8s/KubeNetworkPolicy.go b/pods/imports/k8s/KubeNetworkPolicy.go index ca2faf278..2aaf7caa4 100644 --- a/pods/imports/k8s/KubeNetworkPolicy.go +++ b/pods/imports/k8s/KubeNetworkPolicy.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // NetworkPolicy describes what network traffic is allowed for a set of Pods. diff --git a/pods/imports/k8s/KubeNetworkPolicyList.go b/pods/imports/k8s/KubeNetworkPolicyList.go index 035c5ed07..53bf9d600 100644 --- a/pods/imports/k8s/KubeNetworkPolicyList.go +++ b/pods/imports/k8s/KubeNetworkPolicyList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // NetworkPolicyList is a list of NetworkPolicy objects. diff --git a/pods/imports/k8s/KubeNode.go b/pods/imports/k8s/KubeNode.go index 107ec5b88..ea3aa33ac 100644 --- a/pods/imports/k8s/KubeNode.go +++ b/pods/imports/k8s/KubeNode.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Node is a worker node in Kubernetes. diff --git a/pods/imports/k8s/KubeNodeList.go b/pods/imports/k8s/KubeNodeList.go index 92cee96d9..6ef951ebc 100644 --- a/pods/imports/k8s/KubeNodeList.go +++ b/pods/imports/k8s/KubeNodeList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // NodeList is the whole list of all Nodes which have been registered with master. diff --git a/pods/imports/k8s/KubePersistentVolume.go b/pods/imports/k8s/KubePersistentVolume.go index a3bbe9618..007b4ae75 100644 --- a/pods/imports/k8s/KubePersistentVolume.go +++ b/pods/imports/k8s/KubePersistentVolume.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PersistentVolume (PV) is a storage resource provisioned by an administrator. diff --git a/pods/imports/k8s/KubePersistentVolumeClaim.go b/pods/imports/k8s/KubePersistentVolumeClaim.go index 07c7b10c5..d8ee1025c 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaim.go +++ b/pods/imports/k8s/KubePersistentVolumeClaim.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PersistentVolumeClaim is a user's request for and claim to a persistent volume. diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList.go b/pods/imports/k8s/KubePersistentVolumeClaimList.go index fe5febc4e..acf065656 100644 --- a/pods/imports/k8s/KubePersistentVolumeClaimList.go +++ b/pods/imports/k8s/KubePersistentVolumeClaimList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PersistentVolumeClaimList is a list of PersistentVolumeClaim items. diff --git a/pods/imports/k8s/KubePersistentVolumeList.go b/pods/imports/k8s/KubePersistentVolumeList.go index 286098a78..3206ce0e2 100644 --- a/pods/imports/k8s/KubePersistentVolumeList.go +++ b/pods/imports/k8s/KubePersistentVolumeList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PersistentVolumeList is a list of PersistentVolume items. diff --git a/pods/imports/k8s/KubePod.go b/pods/imports/k8s/KubePod.go index f3e24f5cd..518be33ff 100644 --- a/pods/imports/k8s/KubePod.go +++ b/pods/imports/k8s/KubePod.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Pod is a collection of containers that can run on a host. diff --git a/pods/imports/k8s/KubePodDisruptionBudget.go b/pods/imports/k8s/KubePodDisruptionBudget.go index 7bfa00d14..ed6b29bfc 100644 --- a/pods/imports/k8s/KubePodDisruptionBudget.go +++ b/pods/imports/k8s/KubePodDisruptionBudget.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods. diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList.go b/pods/imports/k8s/KubePodDisruptionBudgetList.go index e287ea530..bbdb10bdb 100644 --- a/pods/imports/k8s/KubePodDisruptionBudgetList.go +++ b/pods/imports/k8s/KubePodDisruptionBudgetList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodDisruptionBudgetList is a collection of PodDisruptionBudgets. diff --git a/pods/imports/k8s/KubePodList.go b/pods/imports/k8s/KubePodList.go index 45ac54eff..3ee557ad7 100644 --- a/pods/imports/k8s/KubePodList.go +++ b/pods/imports/k8s/KubePodList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodList is a list of Pods. diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go index 8b43dae8b..7f6fa0a7a 100644 --- a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go +++ b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodSchedulingContextList is a collection of Pod scheduling objects. diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go index 9dbd1d122..c08433e8a 100644 --- a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go +++ b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode. diff --git a/pods/imports/k8s/KubePodTemplate.go b/pods/imports/k8s/KubePodTemplate.go index 9a94f9c20..0116bcc65 100644 --- a/pods/imports/k8s/KubePodTemplate.go +++ b/pods/imports/k8s/KubePodTemplate.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodTemplate describes a template for creating copies of a predefined pod. diff --git a/pods/imports/k8s/KubePodTemplateList.go b/pods/imports/k8s/KubePodTemplateList.go index 84b958a1a..ae3540c7f 100644 --- a/pods/imports/k8s/KubePodTemplateList.go +++ b/pods/imports/k8s/KubePodTemplateList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PodTemplateList is a list of PodTemplates. diff --git a/pods/imports/k8s/KubePriorityClass.go b/pods/imports/k8s/KubePriorityClass.go index e039310fe..7304c791d 100644 --- a/pods/imports/k8s/KubePriorityClass.go +++ b/pods/imports/k8s/KubePriorityClass.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PriorityClass defines mapping from a priority class name to the priority integer value. diff --git a/pods/imports/k8s/KubePriorityClassList.go b/pods/imports/k8s/KubePriorityClassList.go index 4dc78bcae..c425d813f 100644 --- a/pods/imports/k8s/KubePriorityClassList.go +++ b/pods/imports/k8s/KubePriorityClassList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PriorityClassList is a collection of priority classes. diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration.go b/pods/imports/k8s/KubePriorityLevelConfiguration.go index 285fe84bf..28c15c725 100644 --- a/pods/imports/k8s/KubePriorityLevelConfiguration.go +++ b/pods/imports/k8s/KubePriorityLevelConfiguration.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PriorityLevelConfiguration represents the configuration of a priority level. diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList.go b/pods/imports/k8s/KubePriorityLevelConfigurationList.go index 97451c92e..c0ae06856 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go index 77f1aa5f5..c1c0d3bbe 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go index b13261e34..283fd39e2 100644 --- a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go +++ b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // PriorityLevelConfiguration represents the configuration of a priority level. diff --git a/pods/imports/k8s/KubeReplicaSet.go b/pods/imports/k8s/KubeReplicaSet.go index 367f162c7..8a6d1a01f 100644 --- a/pods/imports/k8s/KubeReplicaSet.go +++ b/pods/imports/k8s/KubeReplicaSet.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ReplicaSet ensures that a specified number of pod replicas are running at any given time. diff --git a/pods/imports/k8s/KubeReplicaSetList.go b/pods/imports/k8s/KubeReplicaSetList.go index 8c85bb294..e11f71b2f 100644 --- a/pods/imports/k8s/KubeReplicaSetList.go +++ b/pods/imports/k8s/KubeReplicaSetList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ReplicaSetList is a collection of ReplicaSets. diff --git a/pods/imports/k8s/KubeReplicationController.go b/pods/imports/k8s/KubeReplicationController.go index ded7d8ba4..bf295f2af 100644 --- a/pods/imports/k8s/KubeReplicationController.go +++ b/pods/imports/k8s/KubeReplicationController.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ReplicationController represents the configuration of a replication controller. diff --git a/pods/imports/k8s/KubeReplicationControllerList.go b/pods/imports/k8s/KubeReplicationControllerList.go index 58a59c28e..ea1871545 100644 --- a/pods/imports/k8s/KubeReplicationControllerList.go +++ b/pods/imports/k8s/KubeReplicationControllerList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ReplicationControllerList is a collection of replication controllers. diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go index c8eb72b2a..d7f7d351c 100644 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceClaimList is a collection of claims. diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go index 4d991d90d..e0891bb89 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceClaimTemplateList is a collection of claim templates. diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go index 53c482578..d5bcd2d10 100644 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceClaimTemplate is used to produce ResourceClaim objects. diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go index 2cf040efc..59babe1a7 100644 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceClaim describes a request for access to resources in the cluster, for use by workloads. diff --git a/pods/imports/k8s/KubeResourceQuota.go b/pods/imports/k8s/KubeResourceQuota.go index af782ae80..65a9fa4f1 100644 --- a/pods/imports/k8s/KubeResourceQuota.go +++ b/pods/imports/k8s/KubeResourceQuota.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceQuota sets aggregate quota restrictions enforced per namespace. diff --git a/pods/imports/k8s/KubeResourceQuotaList.go b/pods/imports/k8s/KubeResourceQuotaList.go index bab845ea3..96e0a5a8a 100644 --- a/pods/imports/k8s/KubeResourceQuotaList.go +++ b/pods/imports/k8s/KubeResourceQuotaList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceQuotaList is a list of ResourceQuota items. diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go index 12aeb20e3..f4b5c155b 100644 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go +++ b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. diff --git a/pods/imports/k8s/KubeRole.go b/pods/imports/k8s/KubeRole.go index 3ec3b8a2d..27912b9e5 100644 --- a/pods/imports/k8s/KubeRole.go +++ b/pods/imports/k8s/KubeRole.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. diff --git a/pods/imports/k8s/KubeRoleBinding.go b/pods/imports/k8s/KubeRoleBinding.go index d14f05fb0..a216aa926 100644 --- a/pods/imports/k8s/KubeRoleBinding.go +++ b/pods/imports/k8s/KubeRoleBinding.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // RoleBinding references a role, but does not contain it. diff --git a/pods/imports/k8s/KubeRoleBindingList.go b/pods/imports/k8s/KubeRoleBindingList.go index ff965400a..fa02ec6a4 100644 --- a/pods/imports/k8s/KubeRoleBindingList.go +++ b/pods/imports/k8s/KubeRoleBindingList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // RoleBindingList is a collection of RoleBindings. diff --git a/pods/imports/k8s/KubeRoleList.go b/pods/imports/k8s/KubeRoleList.go index 26d096794..acd188f1c 100644 --- a/pods/imports/k8s/KubeRoleList.go +++ b/pods/imports/k8s/KubeRoleList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // RoleList is a collection of Roles. diff --git a/pods/imports/k8s/KubeRuntimeClass.go b/pods/imports/k8s/KubeRuntimeClass.go index f15396ad7..6865c4d97 100644 --- a/pods/imports/k8s/KubeRuntimeClass.go +++ b/pods/imports/k8s/KubeRuntimeClass.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // RuntimeClass defines a class of container runtime supported in the cluster. diff --git a/pods/imports/k8s/KubeRuntimeClassList.go b/pods/imports/k8s/KubeRuntimeClassList.go index 0d2f7110e..a21677b11 100644 --- a/pods/imports/k8s/KubeRuntimeClassList.go +++ b/pods/imports/k8s/KubeRuntimeClassList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // RuntimeClassList is a list of RuntimeClass objects. diff --git a/pods/imports/k8s/KubeScale.go b/pods/imports/k8s/KubeScale.go index 2aa994ed7..aba5f6023 100644 --- a/pods/imports/k8s/KubeScale.go +++ b/pods/imports/k8s/KubeScale.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Scale represents a scaling request for a resource. diff --git a/pods/imports/k8s/KubeSecret.go b/pods/imports/k8s/KubeSecret.go index 121002370..ab4b963aa 100644 --- a/pods/imports/k8s/KubeSecret.go +++ b/pods/imports/k8s/KubeSecret.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Secret holds secret data of a certain type. diff --git a/pods/imports/k8s/KubeSecretList.go b/pods/imports/k8s/KubeSecretList.go index ea7283b42..82f346883 100644 --- a/pods/imports/k8s/KubeSecretList.go +++ b/pods/imports/k8s/KubeSecretList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SecretList is a list of Secret. diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview.go b/pods/imports/k8s/KubeSelfSubjectAccessReview.go index 6bbb1a811..4d5249d17 100644 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview.go +++ b/pods/imports/k8s/KubeSelfSubjectAccessReview.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SelfSubjectAccessReview checks whether or the current user can perform an action. diff --git a/pods/imports/k8s/KubeSelfSubjectReview.go b/pods/imports/k8s/KubeSelfSubjectReview.go index 465ccffa7..30614d0cb 100644 --- a/pods/imports/k8s/KubeSelfSubjectReview.go +++ b/pods/imports/k8s/KubeSelfSubjectReview.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go index 4d86947d4..d8a9ddc08 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go index a9a715033..60023571c 100644 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go +++ b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview.go b/pods/imports/k8s/KubeSelfSubjectRulesReview.go index b0b3215c5..7241dde15 100644 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview.go +++ b/pods/imports/k8s/KubeSelfSubjectRulesReview.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. diff --git a/pods/imports/k8s/KubeService.go b/pods/imports/k8s/KubeService.go index f00d817d2..143840d8f 100644 --- a/pods/imports/k8s/KubeService.go +++ b/pods/imports/k8s/KubeService.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. diff --git a/pods/imports/k8s/KubeServiceAccount.go b/pods/imports/k8s/KubeServiceAccount.go index 133a2c6d5..ac6349744 100644 --- a/pods/imports/k8s/KubeServiceAccount.go +++ b/pods/imports/k8s/KubeServiceAccount.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets. diff --git a/pods/imports/k8s/KubeServiceAccountList.go b/pods/imports/k8s/KubeServiceAccountList.go index 2e5f279b1..fbe1f268e 100644 --- a/pods/imports/k8s/KubeServiceAccountList.go +++ b/pods/imports/k8s/KubeServiceAccountList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ServiceAccountList is a list of ServiceAccount objects. diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go index 2187b6f66..b10e1ca84 100644 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go +++ b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ServiceCIDRList contains a list of ServiceCIDR objects. diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1.go b/pods/imports/k8s/KubeServiceCidrv1Beta1.go index 0892f8b4c..860e51bf6 100644 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1.go +++ b/pods/imports/k8s/KubeServiceCidrv1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. diff --git a/pods/imports/k8s/KubeServiceList.go b/pods/imports/k8s/KubeServiceList.go index 6f83e3d30..d281435eb 100644 --- a/pods/imports/k8s/KubeServiceList.go +++ b/pods/imports/k8s/KubeServiceList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ServiceList holds a list of services. diff --git a/pods/imports/k8s/KubeStatefulSet.go b/pods/imports/k8s/KubeStatefulSet.go index 029641207..ab8484be0 100644 --- a/pods/imports/k8s/KubeStatefulSet.go +++ b/pods/imports/k8s/KubeStatefulSet.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // StatefulSet represents a set of pods with consistent identities. diff --git a/pods/imports/k8s/KubeStatefulSetList.go b/pods/imports/k8s/KubeStatefulSetList.go index e2960a48f..3cf7b670d 100644 --- a/pods/imports/k8s/KubeStatefulSetList.go +++ b/pods/imports/k8s/KubeStatefulSetList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // StatefulSetList is a collection of StatefulSets. diff --git a/pods/imports/k8s/KubeStatus.go b/pods/imports/k8s/KubeStatus.go index b3eb6f30c..b7e59409c 100644 --- a/pods/imports/k8s/KubeStatus.go +++ b/pods/imports/k8s/KubeStatus.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Status is a return value for calls that don't return other objects. diff --git a/pods/imports/k8s/KubeStorageClass.go b/pods/imports/k8s/KubeStorageClass.go index a439df3cb..ae2d831e2 100644 --- a/pods/imports/k8s/KubeStorageClass.go +++ b/pods/imports/k8s/KubeStorageClass.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned. diff --git a/pods/imports/k8s/KubeStorageClassList.go b/pods/imports/k8s/KubeStorageClassList.go index d70ce309d..c7c823bd0 100644 --- a/pods/imports/k8s/KubeStorageClassList.go +++ b/pods/imports/k8s/KubeStorageClassList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // StorageClassList is a collection of storage classes. diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go index a1179f95a..36bf5ed00 100644 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // A list of StorageVersions. diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go index 8fdd7608a..d3dbf83d6 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // StorageVersionMigrationList is a collection of storage version migrations. diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go index b1ef62365..f8e9efd4f 100644 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // StorageVersionMigration represents a migration of stored data to the latest storage version. diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go index 689b15d99..837cda24b 100644 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go +++ b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // Storage version of a specific resource. diff --git a/pods/imports/k8s/KubeSubjectAccessReview.go b/pods/imports/k8s/KubeSubjectAccessReview.go index b42973311..7ffaa7d62 100644 --- a/pods/imports/k8s/KubeSubjectAccessReview.go +++ b/pods/imports/k8s/KubeSubjectAccessReview.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // SubjectAccessReview checks whether or not a user or group can perform an action. diff --git a/pods/imports/k8s/KubeTokenRequest.go b/pods/imports/k8s/KubeTokenRequest.go index a68d653bc..3b35d8ea1 100644 --- a/pods/imports/k8s/KubeTokenRequest.go +++ b/pods/imports/k8s/KubeTokenRequest.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // TokenRequest requests a token for a given service account. diff --git a/pods/imports/k8s/KubeTokenReview.go b/pods/imports/k8s/KubeTokenReview.go index 110e077c4..0cae23c53 100644 --- a/pods/imports/k8s/KubeTokenReview.go +++ b/pods/imports/k8s/KubeTokenReview.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // TokenReview attempts to authenticate a token to a known user. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go index 0322c2c41..fbf700924 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go index 5d759ed51..97afae71c 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go index feda9079e..02d62357e 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go index d2b4d782b..c915a470d 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go index e16014bcf..f3c205cf0 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go index ad7503ba5..4e213851b 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go index dec5b2b5f..332f0d20c 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go index 43ee0f480..7f20fd5d6 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go index d3d8af9b5..eb38f9059 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go index ad1c5c6a1..7de5e69f5 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go index 0c598a811..aa3c38683 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go index d2a79661b..a2481ae90 100644 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go +++ b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go index 27f94509d..38fe8dd1c 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go index 46efefd99..fb9d97622 100644 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go +++ b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration. diff --git a/pods/imports/k8s/KubeVolumeAttachment.go b/pods/imports/k8s/KubeVolumeAttachment.go index 563ac7191..2e91fdfb4 100644 --- a/pods/imports/k8s/KubeVolumeAttachment.go +++ b/pods/imports/k8s/KubeVolumeAttachment.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node. diff --git a/pods/imports/k8s/KubeVolumeAttachmentList.go b/pods/imports/k8s/KubeVolumeAttachmentList.go index d110cc300..12ba6594e 100644 --- a/pods/imports/k8s/KubeVolumeAttachmentList.go +++ b/pods/imports/k8s/KubeVolumeAttachmentList.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // VolumeAttachmentList is a collection of VolumeAttachment objects. diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go index fcd2c7aa3..f6cdeac55 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // VolumeAttributesClassList is a collection of VolumeAttributesClass objects. diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go index e6e7571aa..0c04c1cbb 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // VolumeAttributesClassList is a collection of VolumeAttributesClass objects. diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go index c237aab66..baf1c108d 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go index bce0645c3..6cfddbf52 100644 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go +++ b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go @@ -2,11 +2,11 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" "github.com/aws/constructs-go/constructs/v10" "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/pods/imports/k8s/internal" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" ) // VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. diff --git a/pods/imports/k8s/Quantity.go b/pods/imports/k8s/Quantity.go index b98751512..9d61166b5 100644 --- a/pods/imports/k8s/Quantity.go +++ b/pods/imports/k8s/Quantity.go @@ -2,7 +2,7 @@ package k8s import ( _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/pods/imports/k8s/jsii" + _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" ) type Quantity interface { diff --git a/pods/imports/k8s/jsii/k8s-0.0.0.tgz b/pods/imports/k8s/jsii/k8s-0.0.0.tgz index aa6e0a49feb964138e780631989eba3b1a689231..a5b52dd3bd02b0af5429aacfad98b3c84756d6c2 100644 GIT binary patch delta 594808 zcmV(-K-|B+$t~i^Es%XF?CrBZ?CkCL2ZR0n{x16ie7$|Z{?Px!E&MMtDNp{;@87^n z_WOO7|DmP=e=y-vMN(aKQ(;o6#@$iEr{YQ{7hACo&6b?TI`J67@$7r=txGbb#Gj5g zi>vatgBkH&;NsBqjz=S@WIFQ);KqpQFq-)@OpMD@Zf6x1r}$n6bD}E9Osc2zj9<*I z)IE4Qk7W{ZTwN|M5a96f4p(WARg@0}h+(M7?wS(|hTWjD*LTz0#iEh@^sFws#Kp1`7na z+ZL&b6CH~rl_jl)mFJZY4RY7qx>T>t^7U!HMw?29VsXJ1q-}ZOUZZpx3d7*`^x<$2_Vc)9$8u(hBx` zzht8SS+z^f%egjX$I$XgL&qZ(CV}b7C!U~p7B;6tvvWnqTfo#=bziTBrOr$}N zal?$B3Z~PENZ|74=EaM4u+;u;Elc_Hd2<|fe_FjtZDlBx%5P;VmC9}%XYordLl$Q# z9LV>dyAB48xXYj1o8_=2%l6L&754A>NoQu$p^iwUzc@56%lA872hZ&BI1yuX@=M<@+`3_w_oBuec|kxsrn-D>Nsdy=N$)ilb1_>qwiB}UHIYPl# z#<&~9(bQv~z^+du>;qKnfc_NKg?pOvUb)WU{R}rK=#-3jedPAPL zM_mqjBduSsU&OPJB?305P$8NG=>#@tBrn8E_HW2kQnTmcIuLQn#C0kZF2M`NQ#Lq+ z*c@!{Q_j!8Ao&mrbvBWsf3(A13kg>xqIduu%R}L8lkI-LZ&qjlmCGj$IanO4c#L2s zI*UR!;gZE=Nn8X?0jP=Quqv_j4L{9N&`#f4UBwb1QKIV$6_Oy0MpIbUyj+I7>vgL zM1q<QO|D37N z_b%0Y8Zt#1f1Lyq#>`AArtnfGWr^0HHd<{cmSjfYb_C(KiWOfS6Ct!0Pv5*_LIoNW zlUK)VNIz9O6E1lqLokuJLKdZmJ~Q|M_}4R|+M#naaVfZU`9?QFiE&B7J`Bc1k<-|D z{}*TH0Am7^kXniwIm$N6sS|Bd(-OsWyP0D8#34&Ke?%%Hf-Dhd7c&0z_Utn_P@3zi zpMWcXG15ey4t{w(U8~WV*uuj<&&gFtz1f0&`eq_75 zJGr4@f1d&Tu4L39=ZkX{2{z#>#NejOp~xj@t_~Wy2$Wfk76fSl1xKQV2ftX0MNVVb zR3f6#lMOs6@KZ*1tb}1!ll4rDvS=iuXtfsMy$EOM(h^|*+0pIv+1IcdZJTz?(N67- zaV&6ikySfqAKh#{C?7@Rt@5KzoLSZZ!*+1Ke^GBZ`5J}W3hh)U4*UJ4cG2xA6!n3l zvOB*bZWJFUQ=Ob98s?$}`G#`@)yC}0*RxQJq=IlLCW`39#c>yjVHY2nYfO z7&cyYg2JmZsX|m1T>Kt527EpFVD1g_tbsU=q-aHA<>Bsrz2$@pdhd;+RV*7hj$05# zwT6$#mv?F%_AvyC)JTrAq|B?JSwW6@e~+PWAJa|nN6XfJ$jk94b724@QYJ^}NYxM_ zmm@~p2Y&8+$DD7hV%PcC^jNppXN!A`G+b-I4V`zY4a~b&&%6su+ol7%;`}R}*jXsk zW2JP;=W<(a`NZa-O?_I>Bj+frJ;KY^FQ(nai4L;>-IE-yWxTi;ED`IrOvG=QfAFHB z)o1z~akq7*_Xm4>%g^*>M782fZ@SQ%7h<-SkX%^I3o$bkUi?fhX{pA??&+sGlEEyO zsF{+#WrD2Y3sHQ}8AKM*w@$+I`F|XD{}1o}-tQj${Xe?-=YRD6{%e;Z(knt}BfK>~o$SrU|U6P8nt!An~?R>{v7V)l}q zZ~W)-A>cv(-1^T8G5hEF1`>$5i!5Izb|r=rtuH_(n<7!VOer^HXDxq@4bRcdRdiCQ zw)|bL&&W_HOyj_)FFp!FzjP0U6umpI5}Bq#71LT8N(E5{$Bzvq6D^Pnf0I&F6TBhW z(7^Ur{;;MP4`0F`6r7Pf2}OuA_)+|p$z-)>1nzcW8{-jDo`5!-f&IaLeGCsa>x0nW z8jB}Pj(T$)C&H}d*ns^n^4mzz2pG(|-Gs!TI(PAR4FUEjqGYVxL+Fj*Zl>gMdt0ZP zrND>o_`l$0dQh_mAT40Ne@tU2w4hrnpXK(3p2BVnNw&_-8k_PNT%#aiM2%ez%HGA$ zlbVjCL>REGtW=yINg7Y~4*LEGMPkNK0NW@~NHJCk*Eyj#&7xF77Qj*=_GeILp{B&j zKAX=yr!jcx-Sad$8r+PAsBj1#OxTdd?y=)2vZs;Dzq1Mprg2n^e_G^<|ElpcN%dGD z4@t#1`kHyyh?rv;EG9QJmQwRCkO=sQ$%u1ILWZd{-n$KF?A4pMbt)IJT`T0=!C}2m zZf@7#vN~U-3$IY;KM#&E7o~k_J>|&UE9E|)%v)3P_qH1=`HRH0TG_8&{wJ0HN#%c1 z`P*<5?(ICO{L6&Yf0N?>r1(E6{trp<-`l-sihr){)f)hRhP3qd>HnB5f6vr^n#x<# z{*UrAxPkURM_a3v|H`$0(*2)w|0mtQ4X5GJ?$ML(UoE4aRR1T{|4H?KNUHzQe*eCy z{-o+HYW`Q|O~g$qgFi<)xHwC7B0lRVn~F1J+!iF`{&KdOf5JN4mSe?^e>r1s{(J@} z@P(D5*AjI%tTCTzNW}!{q;VVA3{8?l#XUSSKDq*)?=UjpzL9bx805M~BE|aP(o>-_ z9rNRc_IVd7(0g9@~*_*dgW!Eeb z5kLfiWLN?$fAg`}lAN7Fnz%_}l-EFCuBu5SyvE3>K`#lv=;hWH@M)q%Dgb|E3+M;1ZU7-MTPD>|Ah%^%aFbsdK?Dtf zAoy9VIteU!AmZ)ubn-e+A1&A}tYAC#{CLWL*UH-hf31K`+}_@+hfTCE9zL*?GB?XL*+gOOjvQ9?gEy@ z`Ns9g&=niL*zIl`nnqWPG(RCumBq1X-T-gx ziYvrTf58)_9UEn*UNy2D^Po$f*V;lcv^GfBu?+@%~PM zGCBLxRwypFObEy$z)%k53uU#V3KW&|jR9<f|cTiq!NJs`38Hg z6C53sphy6Glr1HIQ+Gxd;)_+*MezU!PgQ)Of9}oBsE>{ojBt~iqjgXxYi$ltkpX+L zrRt6&kIYk?EHbmPP|La_>?OA34|tYd@f~odX$O1m*29kHOL2R({q>e^otD37^ZuSC z0*s!P8M>8Z)dsiRUB1T!+)VI2d(Bf$_8lDwws;CvDKH+vmt=pk)%AX3g=*WclFZvP zfA|ho#J5(H)-Efriq=iAiLjSTQ%D?lgF6@Bdm$mxx9^H#|KWMb>KPU1rEPKEMK!ts$!{!^`yT>j6UqPzB zqVL&MhvFrBk1Z)a3LY{zx9!JYz~9&oe?~amX#k>D%+BL687moOO;^jiJU?OHozUF5 z(z|K5N+TD@k8||4%8=XX?>@OW8u2SCgH5^Bx-igzVJ19T*}wv^EW~vz0$^er{se@| zGraR<5u?S!4-OOTl;Ms+#)AOWUiMlL)Ij)>8L7tp9o09y!}v@1l5teADI61ef2Zzq z!a-2^PyCY0h!16iU4}&34wv@Mpx&j83;4*HxS9XKaxdVvU;}LgF7Yt^T~{Yf861I%Hu};?K`d9 zI+jsqU%zqO2zR${UO5UXc8xb+D|gNQVT1f5yF{(oGyf~&DqUcjo7g0^sz=pPwWxUL zOobn?H+s>J>h8dVGN`goZR0)Ap)2XDRY59ls_0M#WxjY3?LN*@eIc-HWe5YXRM#je zRkYoft7NdZ0zGIoe`W2!4r;X2n>?1En=}^lbpx+An06o&I9@Aq(gu6G^+5pdwI6&+ zPeV>vD?yD~LcuMRYWD0@htKfXe0GLzrDv;7$)9ZZrS`GTUjHc%Y#pXi>p0Z>f{d0e zdwmc`Ex6Af@v>(!Y`p3}7l;S#TJ-(;uSEne+ecC=GT(`amSIl5;e5} zxiBQ#D-lzDDGWRPaCY*)(QtBOuu-C?&@WJdGd9Pksp%Y9qT;svT!Vw{?WG!IHASt8 zvH2u!^04`iKMnyY&0n=P7`TIj?Rom<+&>Q- zaDUG@@HtI8cd+ zP9jMV(i?;+q80PVu>clNBQb=KI@C$wJ1<`S89<}PnH$i$`(U|4cD_LaK$Ro`T?RZ! z+zX6!6zMDA>|(`Vo~tek6A7K>pOa{M@v@ZRj;~G^(2#|nz3`^PD4sL_`IN{1L8JYh z2(*LJf921NcX5Y}6P?9W3>qh5B(KlabI}|3+~CEv|8c$%CcGyIN~jm;>G{Ur=YVDN zDM8#=9!2NMzJ*61y~!11AJ8M|@fE}4tL0IS`WGug4iztk%V~j-Ub0t~*>XWcB-3R7 zv4R%2sNy=-h;)6W{g-k)0L9nQ`37ozz5^6h4_Or(Ax|8>Qo(H_DWVWK?OfRvrB}@VtXbe5y-?-Vb8iP%+ZS|~yBAtI zG`^kPW+nQFaDv{z{}n%CSQ^BIkg8 zfXSte1rxH+Z*viH=>pVw`F7}~M&LV=Xv~aAV5@0H5Toftl;|`hnt?bFkT{YKGSH=p z?g!~a$Yg$^jR(?PCNpPWX_yOCd64m$f4WfmO4;p*7?FmcP&tdVzQ|&TT-sG!;5S%+ zIj-uUP)CgEDUWl6<3yxcq5#GZ&Vl(5jiZA23-7_x0LLO>hIrQbS>YWLrIX>9C3;AJ zviaiMhU5jC5&$x$8dH9__d*te))8nivZpxsj|ll}@RrO0*#{!(K@RTo7i^TNf53sF z2?hFo*s&*DX~P%^Rr;e@Y2_(A6$HYVqFCA&&?OxEP*1s3Jw%SP8yLk&PEDBbPQ&A( z!{9rkr{d3AN9=$65B!@eJgniX7c1Q8WgPDX{n3ik{5;~WsJlf$=iTjkC!Dw|;OOPr zYK6HHPkuCQtw}}d&c3oBwFH$6e6cIOlk4#|I6CI(q%k+c#lW*4tPk%c``IdRAO;<@eWG>RVF^by4jXNtMFK5B zkh#-Dh>li9PBi}XiX=N2NPu_sX0cLQ1Zek4}aU6i)wJ-}|+-5xxZ zFR!`psEQ3#(lu-Tu)edze<5e3?+IEP3_p#n%dlq?n6N(^aIX0BTBHGT>lQc}dbV!x zfvGADf~Ve6Je>&zZ+;Y`Z^7%naq*Z_RmJ`G>ynd*8kPBpL9RBoayy^{svS(*AR=3= z(Kqs}XNcxgIiF8`e^?hJS!00;7cc0+i4&p;4>h_r6LjO3cm=u#f2xNjDtGH^uW@?Y zlUcUXFR{eg)kYWBgLZ7)4PwN>V7JDdb#I(lPp+$*s~11m?mxM%+Q7$84y%GC51t%W zb?oxwrh0Nyee*`!*?V$RHQH@Y&Z*mB$ldKH=hQkJ`Q(ziJ61iq6PMIm9q?#roqyZ8 z_N%;6`pFvw47ay`e?PrZbv~#hg&a(tiZeNeVnDFTg-Oq15!|6Wsvye{FRvoAwpwJ> z-9_aHr9$SHvV<#Pv*UsR#o77Bt2ZA%o&0$6>iE+e_VLaC`uWY-r}GVV`sN+O{;@3(h=cu|-6qxx ztx!qr#PJ0oTrGW&!L00&j8Z_}QdCz!`RAFTVz=`R z$g=Mh)co=NfAPCF=NojHOUT94@Lxm}bt#Aar@Xf@qdO6uO0*$xiV{%U!Lw9% zc^oHL**cujAg~h?@QWs0iXS8$_i&^!FL^lM2uxzPf9ClHEAE4Rxn!u`x!P_xDP8zB z5{)LuUWyvlx6O`y(}k(YUzomJFpU4 zDvY&Msd2?t<>|wB3A9p(u?05+zt`kLDo5ccktyBOKUZE6ag@hrg#3O?}8;dTDSlwf1 z&z2jKMER6JwM!@sm3T<4Ub2b40x@n<_Wac`8)hnugn5Clm|rMD+I*)XnaUJA?j}Ra z%)BI6c`@OaQYTc%iJkPI=H{xnknCZ6KOAhQf0u`(I?$<)hV6iUFw)6ThM};BxwuY+ zqN*3$5!W5%&!q~YECd$4nh5m$+ov5z)VzQeiYRdm35TNTKv`*;NQ~b=<(|9Bb|ZXI z_gXns^DnmB4%Gpq)e^YZEycyOsXyf9~l(!iM%w^xXSRWm6{+1fhJnH1CbO? zZdjy2<(%JE`D{omqG#ho@YD~8It1DL!gL~L{!?N>^^VN49sE`X}eBg_SnA)Ij3G%YopzZ4w-4WJuf6nbd7^(c@ zi+iLU;=5Uy=9~b#Nsl7IG~aUxpC-JqR6o^m7ICjFIl!)3wO=b1fHVRo!c*Td!fMV; z6JB_C=uf|#oH!6Y<7DTezzgx)rEk^__S_jXU{9F+yM-XFanGDPE zE%@R-Z-IlOc7e^_6COnW%^ID&JckSTPb=NjvseZg8?!3;OF-I^W0~>@Eh3&~34)fL zZ-5U8kZ9tGNTwJbfN$-nf8csVNUk|=D?GT`*<1DG>PIZ0$8IU_$)5`&#>G0$H*$~c zilJb4;oRuyRHpXHaC0?5@GT!FLU=Snym9VI7y#ZGpJpGFMBZQSdW4&@P32VBn`CT60RDAG1s`+?e|?)~N&#kB@ePO^ zdn5P?P0FWn{xlt!xcvO73=(bhC}n0G&{s;NCg8E4Z&pb@a%4L9Gs5;z{}|8BSs0T` zeJkw{dq)k#9_{g`lfOk$S0rkk0PxKp|CWNX4&Z}8-bW>%3EWFQ_iakYs?A|4WoAhL zFKsOp)+*{M^RYZWe?Mk)yRG-LV6K2>=dkOrga(1@(1q^c=`BK_cb5w@TKSE@a)}t@ zE+KBWQQ=cR#UkU{Cy90D#7_#qb1RMN}esm>@{HMO?~zjd$zeyb6M z?W$Z{LGmW8)yeCd%;lcW%x_Vbn4ueoMQ-Z~aqZ~Hb7Eu&e>oo`It(mFNo85A9Yxwl z^*#yvTH(X$n!J*uM&=W|USoc;eHJ++bGg!Kgg~`Ys!$0g+N2CN7DxF=*FsdD*zYBQ z1MiZyd_6K&ZB9oB_Im=ToqQ2f8(izS;hAEq$;v8zusygblJPrLIy1cD5|#%YmKQz!?2C!;FA$}!$#m8 zLDd}Y)|h_x#^8H0^KPd4@o+GB)Mnn3arZUGolV&rf3?`gJ3Kh*KiPQoJm1W+yFd0) zcn{!Vjt-toq(;p7jfRnau!hm$VSl&nFc}T4qZ*qCvl&j}SD4e@0(*$)IkoiE0u+=k zXGvj7ASQvUmdcAX=z4Z?igoEBGqzO`A7QhuS&eN`o~+xlD~=BGSV4tdv4o~}*%YN^ z+JqDqf1RaYQ)fig5>u-g{;3ZgtA6<7;r?#F{~U6k1}x;W7oe`4K?YPHj_t~_KmHN$ z0W2Y)^;u`19a0)L=pWiqcGyH`iFvUqMWFl=UcL-k()Qb&gomH@|&SYYmmsH zFjN(+Z8zT{qigYQdu$u@;lwnQ?K)@^_Mn{37K;G@abcs>$<7sTd0V}Kw~vnYR!Gt& z6t+yRE+=_CVAhW!;;g0xr(Fkk&N6fGO1_X(;$Jo0JN@Sy1S6o9`DKHI|^kS_yV<+e-5ow3v zCXN%45@68z#uOo1ptmGus?xFrwyKlv*d}bvaKm{+%kcGRT5wS`Y zC(4RNowS3U`}H2f^7`JO^|6d^?hE6uf0Z@5jFCO2hf}aL*-d!QwK=UgU57KjMR`m3 ztv(Uyb`wHd&0+bAH{~*rhlnXfXpewKlqVC1RXhR^8WxsB(XorcJu6yqsDeYi0Ruf9 zN|jf3ui|3=8Q@e#f%v;fbd}It#quX3S_>9x^(-ZjHB<{t%99lOM~`grx%FjKf4%W@ z!l!`&aul9+Y>h!ZQd`askI0d@YJYqMd|Qn|@rgV+WP3p4lgORemE2_Vw&R&15E@|r zP=px-c_35&2K5IEV9_37zJ2u7FgJIb<6mn8uQuqR6u@@J9<&C1l_NPzsQn7lei3!m zVXCRnf_`xoOmt$_wZ%)*cWc+Hmrp4cDxjwPnk{W9$tNCZz%JDFnv`;rAgo5*ZJs5d%F1 zUK&bjEPXm=Lz!9|@l&}53ng+QQ1NvRCaRqxW@fo?E|G>XYj_<16Xqzce{3RnC=!G9 zrvR;Os(o3e!wN{bpD2;3gSclSz;H@6ON35ByMMeBqG~c_juHwGfkB{?&}LYXcMLF} zB0ZKt2PPYUpfH6>voO)|BJEU)2K%Z@-^1#zbT@k%Vo3x5D%+(D0kw)2wRW%qI#6{2H0f$b0Qa-{W3J`BE~z*+d^a`2^kjvCL;GecD4G$95YEIVPg z**U={EX8Q9(6Vd6f0@5jVKaZR7nugGnx&|g+!!55?!#Kj5#wss4#BtAe<i12=As(!TikTT|2z2HVRO z^%ZorD_FKb=%z_|nl(>AC}Ev|@H*f4tKd;OnE^8S`NpRtf3x5wKSE|4e8h`>R)`5& z6S+WI9K1lmBk-ImCb>&FbgX46ub(Nsau;-u3O|kU@Qzi6-yy#F-Y^XDSS! z5q%v4$pvkrf6P*=_~;!yxKc}LB|B}`hi2SlwnzQW|JO$j(Yk-%+c zS!v-S-PSq;gFXKd%=6eHNa15EpMj=-or=CNO}CZVe>T|3D|xF_^yPH5Ohun3biIs@ zPlc;Mx-=$vDJjj; z)w?>R!E7gKSP1@$z{ZbNAQ-eGD}>!xrVfQcs0m0_a59*!3lWqf0XG-*`4zLdGZS<7bM^>yk_Z!H zk+au2Fds7S?Ss9;`sA{OX@8if@B+KltEKaL zmqjv~ij-r9qgqtPN{rRJM||=%byE+UH%!cf^%w;2sN@p*lL z!KvuQ*z9W?m(RPZdn57!wvtlPJ1kR?FxKo$#ndp{2@5tvoOf-avU@^M3fPp#(A><} zo?~cW0Dy<-vG+Q)bqDB(g#Skff7pOWIoRk97RAw0 zFu}=f;3e!-h=^4_g%t}?h#~?5W>*t!Y(qACEMtR66*?j4zD8==QJcMAAKWIszS~xW zp7i=j%s%PU1sth+-ivUBe_VNryFL84+fM&r@Dz8e-3n`m-P{fK#H)|LnKlOCcKQd0 z_d5W$5;((M)Uqxpm1NzT$d&p;@xaI>~Ciuf8INV&dmLaA@Tf0dZqqx4{=pI8R9W&xfMV$f&=*ngwF!%!Q>se zg+&jB_qM~e1N(oszI&y=Pj3wfyVFXM_2i3r^2OXQU(EL5;oi=ZFQ)a9<;ffK;Jq>1 zhll%5S

Cg3 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%0A$W@# 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

pl%m$?KkvWmXw#NB^xpak81U-2Mb8OoTSr z25fuUEQ%zIb;X~5F(CYKbzX#%<HnHVgzE>vI2O2Sa;qSomx1~Zv;LFh|tnPV^7X|Z|z|$WA`=5YBe`6ODJ|N{G zIsXW0x6%zL;kfRl>$^=kI>PAEaBMEp;Td{J`1^VTs2A@*>g6b(S=rWeg8UAB+~>JZ zQF-;#+|Af5Y~+Z;4U8j6h<)7L&*ffKC%J|^KF=OO5{iIuZU7?ARWkqad%C# zPb!0Pp*v^ojKx7Lx+If2Z$P=`W<4$LWg)cp^_jK=5N9BM9o6WFD8%z|;Yg$qv!uob zd1y<=hDqC7Gt8o3xI2-<0-LMRCx#{KQ}SWFqf~0t2;@h=6cCF0u>Kg9DSj`r4+b^2 zL}ft#EuIF2$lk4Hpoo;L7FKGcdFA(EjlqCdJ0Yq@JlX#p%I{3m*=|pHYX$dZF0U{D zBG5=Asg2_5l9m0vzk=$5IAoI1iiUrebNYEUed)UAbJ$&zk4hqp1*mUK79#rtxw%w% zpk0DGjp78>3HW;b$Y&-_zsF3pyPx*uo3+;TY7wOZgiV#sb}hNg+CAD9EtOK{@q;Ul zIMKM7$*bF=yeol30r?WnqH2HSMR=BkVHKs=XvQZc<*#3C(9+P)rJ)I&ew>yFQfJ9g& z%KBC5`~$#KeGYpYR+WSxpCQUe5f_j(l#;o03TI9HBx{LTj} z%bZJ7`%$ipW&<_PX(8z{z*Z1}O3Mun+Kc=`cqrZXxyx#25Q1_KG(@QO zd@;>g#@S{=kx;!~BMIR=W!*7w-*9Hs{Y^q)`MR&0P1+5i`-J z69eXnU|H<2X`f5+Igz3R%Q8COcU#!Jl6sdtuj*=E$4@J@D$C5{_-XZB{{n>kikU%Z zFW=0^vcR+RZwS*4ra2j}`c9YYN{zaZKf|U3S!6EwF>Ih<)7N61$oKel+-n(n$&g!U zc2t!>xqyY_m{-YRR1w1|G{f=&$;IZRjiFmr zd7pL7#b$z8vyH-}EIt(IPD;f)4aM1={(gd<=_c@b$S0REC&G((+;s~LKikC!U&xJp2A8J?Z1n;COV33rQF-kp_**uEGfdN~#ng z&21B}GLyq*7uxAA#mjgykYl>M%^UaFzbHI9x!S(xv3*Z={IQP?%e2sszmVPFikR}; zM?2=@1}f8styWq5qn9vta;p6mgYn)&gB>Q=7XP*l+lWVNBs5QZmm>oHR3Ps8@z4-V-n4U)1e(kAr2L5TxWf;V4(tmnX;hpd6K zN!;(dk7`EC5w&k>dfo!Y`AdG$)b0>V1YxKf;`0hlD?1yLpdPsXYlJb=!{$+D(FL=%=<{tvhRdo@|XqB3`HxuVmcB|mTC{5)!1_pPfZUT*zas+AI z_Tq}`D#zXV8UScVA2!&k`N9_cV!FF%Wu{U8SeIZcKAE1Ss||TQ;#lUf7&c^IRx-cU zsJHA)l4N;1`uzdX>FlBo%6?|N&bjOL!#I>kHy!_qs$Bc#73FlYJu-R7S$o`Fk>OzUq($?YC9yC!mF z&N2AVSBJ2aY-2U?laLZt+hqKm(AZYpw(6#{48G@#1gGW%8N2l)u*1%ii8(QSy)$4Oo>( z_-s1)j8lt;k)4TRQhiT`==Aner^eY@3e_m-ZyP!z5yg$rU9{HZ)W_5x;19kzcPfE< z9rTWgZ2QR;!>pRP@%^OU7tfcXqbWQa3by7oabfoA z(}r1ZH5+$i^J^cP8mLbFF93Q#g}+7^=wXq@Vi@SN68?pp_d0}N48^9D`L#*4e`?j;h^^q~r zTI0zCbqRpKyk{G`o^2l85%iFLqR9_99WD8sX@^1FcI4L+S4MW9K)(laaD3@G$NgQzIS2p#{BC^~ zrF_CqpyN?$oT6?3@3G|`i{sj_fH_M1$0X06eD?bQz5e$vPl(BB)a2fDI%i}IlJO$N znpelabdH_GznDMBiGRTsr1V8(n}5r>5g*g{g73(j0SegG1RI5W|GVBG^T=oLO&uM2 z)^RQb7CYNJGOhx@)1cy5gMXnnqtiP54(s`do``!L`bg2oWpRhB-7M+Tb~x{N_CDu( zN8sF51^$}w7JwnOUL(}IfLat{0g^b}ubO+7*V+YY4Q%Pl)V_y&*cNL2jDPbE`!nA$ z{-!yK-WGoo_kQ<=_?y@98o1v${)E?hQ#~6kMe!LguQS5@(8={;4h2V;Tyv`LiTexv zQl3Z2;_aor3e^6-qn-@>|7}3{mu;sNLHx6F)Tn}(1gj>rUUB`z6B#>$IlsWF9l5p_ za@k)QUwL+P^sW8IVQZ&nH-8qX^ZZ7Cw$!`h_0}Sc6T{m;jBx?uB-!IrANH?eHLmrs zRHf!uwRO+pwno{zO*!uP!ZB{?XDeBsW$U)scX!n!^@R(Z`U!8rt+=LA@A@-n@s=4U@0BR&8+?Au6F=XQc!m2e zS7M4tr%=k{q_ht6_9Su1EamT{`q9ODm3q?oXN&LJ+WFdA(nH5_5s>4O@UY7T?pMGr zL;n}(GYpkMSF&>pKYxx?n9IjjHwqAgZHAuI z?brGmIAshw+yh4DB$r4$z9Pnz@LD2go7gphFCkpHYHocss!Wj&82pd=0XWEcE(Ci| ztNo-0r8O9jq`75hE7Nb9$k#mNjolPIwV-Fe7a9|sQw=#&5`Q0n>ribRn|k&^J2gPR z-kEvvPboLbc!CoSpRVXZ6xWD+l!zgH>=9;t=4k(G5+-Ml`iA0fp?d{$GPqLnQ1Z8w zLHB~Mb@9Dl;5{q+F2n(OxsfwITIzn2wmAoVw5fKI?+(x9w2S7S_2ff-V8t}nu&&_8 zN+|Fn=+_O7(to;sm{b-sx7}UA*-gC+gB|(Ff_Dk8!SlV{#oDkRH54a)UHNKg@q7Vc z&Tvm0JoR<$+FjFI=3J+0YY%E~-|O|_dd*!UQBi+Y?mHUa>=Wz80qmJC@dq%Te9@Pj zT07u3j|7J}e23?gwkck)+i;r~&yJ4D##=B)e7u+YVShy4CdGd+PWULpGdvnMa%jx9 z<+w9GZ0#|8c~LJLo0AecRHPdOXSlX?zle<+r^YP&pJ%WIf^$@d+}7)Y=|KoALr=0* z2|ot%mVkz_@E@k6mH8T2(SdSgQCz~u0G|!xONJ344plZ+h{x0S;&0A}=j+^s?{yVNg z|A72Xuz#SZaP3mAqCe&qu=u54`ssS8Z86OVkavbQ;OMGU1W`Do;?b8*Vt6OQVud$Kr9o)Vy;Gy z)qhgG`k9>5-fNr7sr5heSr;&)STm_e_6X*eIMe5e@0jq60k@g9M(u2?dqkZE?9qc< z$?LI~;@SPMeV>^dv&4G|!6#a~<9ExqAE)N0&$V9~qsX)SYV_rE?5P-ikryA8%$3Kf zTuYumE#q-Y$bAN!l zYLxf<%>Ir}xVrfH_KjgH!mzd6m9y+ZjPc@FwXJLI#hKij1OBOdKrEH60ft~LV}HYL z;}kysdw+{t*jNm%#g^%g@~&LLpDbVb9$ddS>Vu!Wi}&VCdR4rf9tC637y9Dt8pgre zeYfZE+GY_4>^iWnem;_J&)f`4DEck}!jYzI3(eq97=v=ICWhx-@$ZuD+zGBu_G z9anK(HTdNprCNfr3C_fsRTz8jGYW2JdPcwyB3~lMZNVA4?9U$CL3L^w$H!4aoAQ3k zYOr$KeeCyzJedc^RW2|>~fj*o0YJaqWwdz>4 z$g7%1uYIGA$HIL$jr-|Y3idzESMJ>28cVv*pRl(i=j`O12dCrxuVAoX4JQ8%=gTcV zzY+Rz5CvLbkC%OMZDwzR-sS$WO@8Q8%4eoEnBcMK?{j@E-yFAyk6xHQHX^YvHb4JA4zq%ZOj2C+&JpDpB9f@C3;`v2tAmdhu8vDAPvgb9tk$ zd3oH=e2fKln~(8geVyA0>3RQZe@U-wUkUXY$-Z1FCUJFh?^?A5(|=vZ{UWe#?ZLAj zNBf}pf$!*D;{)bTFZ(%|{7kJ(udl%ufq2S~Tj-BKUzFPv_1z<$Jx%q0 zaSi$x>zM^wR8r2`mj3^&27PhtvG`=M$Gh0R59O14W54_d;BHtA2m0;@hbe0A2>e2c z8n74#>Jp{<%03>eP=EX!AGiPBz0c)FKC}{J{RFk6%X^OZm6!1=z5w?b_YZ`>&V350 zhQZILORi8%ZIL|%LKmj3u_>Mnjxt>rtm zxntV3>A1xp-I#QLdXm={wSVb4$jejSnluT~|Dm(JzI7!X1b;Zg8D}NtWsv*b9z=m= znxn}OI3jle;xxMvalGHw0n1X`1*Alm-;D=kbjp$-2~8^)D6rTIjUB1^ZJO(ovCN$VUT|2LhTB+c8H(0j4nwS=o;jW zO;hN0;asr4PvwUQqX#G?QV{yhrC~kw5yY64XkK! z+WUTUKJnbxK80U#W^5dba(3T-i5z2ky(fM``g57vK7X~|B`im3ZG87(zFi;KQ0qHa zeT}e}%5I>pxnb3o@b1(3xYo?54785cXz_Z4Ylkb!@0c<1AW#iUXp8GDsn6d$kWHFo zG=~A7N&Fr{W2ikqUUB?A$SJCfGXU_y?G?sVj;Kka_UhWTAx@LWIAAdt*py^!q{-5s zrQ`YrYJU#mSxY$44U2o=Eauwlfa7ZqE0fuz1(?)w+^#t0_dCDa!%CXdI#;vfA|HS7 zoZ)3YqnlC4FT?r*PIG#B_*BdhlfG%y;o1a==F((p-~Z^e0PBr4RCYa{X}P~KmHB1v`GWt1(n|;YJJ>xb_WkenKkjgyfw1kp?`$sO=}5z*J@EizDBPDA1dtkHTR8D zyo=KMqqQT}D*BtK*Ts1>ju6k+6K<)|Jz(zCUUjf=#;rA5*Zh6+b(nfKhqQiQDJMNx zc~-P`?C$z$w9oF9)c2qVL)IuJPUZc)54vB?5d2@%P9{9lYve%h2K#+DDHj| z|9_ozDC=hy^k2#v#;_i}rMUsE?sMzWm31<#+6wv+WUUP12x_!WwQz$6V|2&)mmxnX zd~F_gvU3mCGn^y;rFXHosG*=6VPs30LQHi-=dEJ=i(aTJcvCKeulrE2bG>{@HYI2`l`U$=*Jg1 zg!A&Gkrx|#PmOTC6P&fVbs2{q_dVF0FCaHMwO)^zd98TW#?I60%csIKbsr``LFR2k{ z`;l3_na3cS7%yp<9eo`!`C0sdtO1r9Qv`yX7XLxy@H zlFoUao#Gk{|Bd;@XVD5{rONc-Du1ro^E|3&=9A}3q`F)c@X?vP8~D$gsXaJSefaJi zhwWQ5RhH6T&giPJ{@;-j_Uy(kj~nwk-~Ij9$h)tNzv#D@J&Qj9{=4*81rDUVfA9tT z_rx#p55nh`&){|LwH5iS%llr+cBf*2K%XVJaZ%mutJ z;%sj0+~(bEq}O3RpeDrU(YS-L8$%e=wf;IjkA_-f<+O)seiHsU9r%kd?^DZaFsFE9 z5`8w{zpi=M-??6Q^r#}8mupY2SJ^#aF8-BpfN%z_nV<4Oxk8*re7Cpx9_QafNj*Vh@a}k{0=kMsc?1}Ozuzxm>op$izvi@6X zepZtT^3p*)>)ES9nSHFjBSO&YJD$<&_(Y8XN6?$70%EL&&VAo8mNtV#dn zc@kqU;?frDA{loXU4N6ZoEO3$ER9LfjFk^PdV^dXeA}{Awd|RK)Hg?*Qd5aelgTjFZC!uz&98wJ10UyO)ZIez#d~ zc9YhcW9|RHU(c^;9=-7$ufrp@8s>*^SG=cnl4$iLKHCSqv+Vp7aY&!cWeL1>^vZZv zCXU@*B7ZG=XA|2DJ)OM+_RemLoyzzVgOzX9ik|J&d%nCTeRXi0PEs5|f?qv-4yS5O zpsC3GdG2c%2Y&}~ZE%L3=4897h=G=!W>|5m_p3ZEN-1|L>K@(0{Y#(^_6eWoyRH}X zFGkX{7MvZY^Hqj_9Cc#tnRr&W!3N^Q+J zUTBT5wQq8M7Y%$kBlMb$KFm4C^-kD#nXd7Q`4WJ`?SD?7uNc;%Ru5g>IQ&|2KagWZ z+26?Fo6@IGaC^-V;*u5d|1M@`YcQnm8OP4UOzkt@wtwuX{pR8$_a(EFuSK;$TrX4k9M;jtL@pob6O#SR4_HUX zQvA&A+kZKkIloGJZ=TqwAv^auUjqM|)vzPbHb1aA3UZ?a-Z}! za4Ikx0C;W|Yfz5t5pmoR^2|St8k3=NPv2|zXTKhtJ@w+ z%p=9;^2Cq0vG;jIKHO)oeRc6%EXSQ&=Gw2&|9^ZYzaa8tXa4@uTa$jKB$l73 z<`H>wuH>neZC3^hcM^+8J}7lef+L5N;Sr@UVnx&!%x>57r=Y&R3WdRgh3m$TSLezhL4e1Ayvd_^ZGIAZTebDIbwYZU*K%A?r`$;KWp1Phdf)cY zS45ot#G^OWOVF{g zv~!$~XV%<*MSB-(gfa%-c=@gg7U1QryV-c*jzwP~%kg`C)XLR<1z*pkeXGUb$4zaccFDIm_q}}oBGGc}v=fYie`vfoc6UK~ zhZC0jgPJDw-!Xq=lf>0Zbbl-N@7eKIld%<^9b7N&;pY#ok?C5mkVo11Z|k=>w_g4} z4;Hu26MWuAk_Te(mUiynzXJX;dG9Ii$4chi&O@H#qgfo%>Nl(_r3Ce3iQtyJ1@G-HS-B_f>-Qaer}b2zW+|{(C8XX znU~|6uQ7d&VZN*CRl9emYvA;ZgY_7w^}|zB>P>&sSq4~(VCOHxtIsYmmU0;Vc*4%A zOkI%r>2m8<5;xml(SH#6o9EQI_wwH7lAL2KtF``-dUx+PPamRx$Mz_k<(wCexFAz! zcqs2{Q3o_{!h9C&Gokfect(pcTf_J2;VT%^-_NBLtO<@wDzaVw5&o<)d{>xmB^`ue$_Z8J>6~;=+TDt41bBfdg=S0g%isNtor=P zHll0me&SioQvSfwkL!w0=P2O5k{&9aUnC#DmEvpFYrBpf9K5QzFRmY*URSD45owC2 zc58udo}Rna?k=z!1$`LwdnNEA<+yV+K9*E}*)Gdt9jFm-4A2>E@wm)9cveJM!sVaE zfS+FngXFo3IDbMD-=a*f-odp3h@}osIU0t(8f}r+9I?s@JpT%~faJNI#O4y>H|YJO zT0`{gX8WvAH=>p3i{amx58=4yy<j1L+sXchdh05P2a#hzk1?KC(BE|^ zw53pkjejH6QO(c+Y%^k7%%fDdee2w$#*h=w;J=r!tI4{tF<$2W8n5Xb66`PUY17uY zo}uTSacsHGhByNy3?JZ8h!gy_-mSCeYNwis4+?zv_v$q`|1Lg(|9*CCJdbwvjQ$F} z1kCRdzBc>&7OZvRkDXQ*wSB-3L;vE|cwy0P{dKO7sM|COH4QK34o6OG6!&9Y)*LyXH%xHZ z65k}+f7D0_RBg*}a-t??>e2q!yrFr^fx@*r>D`?Bjp%qYu3plUD2cD{0*}Mg0v%N9 zWq*f$Kf*PzctEPVVcx$D8Y+qZ`aw9lgA?DTp9bsrLQf>iX%zMJv-MD-FMDb!Fm_2> zgzZZ`+F4P zdcE4i-V*cZj+9kU%+VSJI`H9{`)RZOuWLu-4;1VTH{noWwlLaBc*va}cNaaSs|_c{ zz!=pwZWFWz{Y{|%1pH9cv!cp%`G-rkb@D9cvOp_aTyreJSzy%xleF`hUbusriGQza zsId_@P(ALn@IA`ce$~AK+`=oswiarQC(oJ8pRx(g^#ehULhAcEfQ|AG{Bv$wlD=n* zJ7Mkop|zJE*TH`JL;JB@j5Hc9F8Bq&Z?C=<@k#DHb^p&-(UoPC~e!yU`mOs%^=e-=s{8h>^S?{*H~ znDe_8Th^Vs#Wv>?;GQpzk=L(F#Lxc?{1}T{5{?S`TjG}&b~d?2#2OMOMStSYiR+}# z{^`X^=r_X}V#V5vm6R7lA1=v@p?`5pon7MiabOHdzB9*0QU0+ee`i%HSNENVqdXk+ zYwKorT&#DI#iE7S7b&hECih7+tFEo5kD)i*okYLi#Eq*Bpg%tvS@n<0o29jQKLf8s zy7n)w>lU7e>1#@!SLN2r`+s8Z^Z>XstB$>p@cV?Z&+G4$)?#DQTFeYptGIR$KHbRq zQ2Lqq?-X%o@N34GxikE@Ug5a~L$7b3?<%XkCFO9%{^@A2-;Ic$o5^?6+@o$BErBCO z=9am!W>;?Sjt05URMh{Scm0*Pkwt#L_Wes*(|oZ-{MtLmx;OOzM}N$QP3nJ}A23}9 zPP8_TDV{)Xb0NfYl zEwluDL()$J@g~OsX)CY!vHMz%l?vur_Cc=V9Q3P$wZYDBw<(`Juc1q8mgDetQeVb+ zQrW{k-gvgT6`bO8hJW{H37ff=c?3xZ%>3B-lAoujCq};Rq14)BwH0#!y_mR`fD;kx zF~|i)yo+p&3cf6|d!d9;I8ODt0-A$>lQ;En<*1t>t~ncd9^gH|cP3Lk+D<5Ufn0Q? zO`nc!;rm{c#?xHDi{;+;V{Alv&WhGApRci1UzDj835^^ReSiJrY?kc7MCj-=hLq#g zj=oxd2A(|$+eP&gm=B%vVK)|@s)P`)f2<7^^Mm6nGd~l(zVjZ+%n$3kIDckKoNmHr z3|aqqJhcJ^YnRvuAm;R==Yz&kgk@vTbvbt|`i~Qhc=X+pe4-=Oo*nBI=ldzemmY0T z{F`L17$yMDjem3N3g$l9_j3Qw$IYSq+y!;n^!)tuZkQ!zr#~WOH%G)3Flg%YDvB%PR?{mr%3YkYb|Co6Fih`Qy0e0v$R!;XY{Y|g$|Bh zi}e9o3Dzp@2T5b(XUIeW9t!FD)aUa3Q#M`VLrHxu=YO17pPO`V7Kfkqe;_w(a?jKr z{?08GV!Xus|DGH&ecFkQhUaDR;?+GFW8uRnZ__Cke#@kOi%$7B-@vu8MKa&xKZ$pe zY+b_3n$}F7J(AY)E~s`_fj(LF=Ba+og1!_fpU@seL7Q@X5X%a_8`3U2-kNtQyWamm zt{~y06@S<1NAYcD^Q;Yy0(&g8|3%jX=%d|`G5=3%K{$kyBTTyP`{VNf18SL zxn1S&1N)$Dqk_8fdVXB?zVm!r{gwCXm#Dv{&LJtbcnK^e^yUh_LzW{r$q^>ck#J}B z=J$y{s7~6$tPh9zsU~oqE7-ei8!xba9d>V~L4SO!Kb@Qh7jg=L;D^#m;s5cv68k@O zy*=1t4I#~eMX{+m*nvG47>MM&5_2N2VVG0EJ$Ug?(u3mnCOoWUFX8?Phqb2;m;NC& zx3Z2D)Uy`&zKC-SdUz<9jz<#G}1AkjT?-y5=_K7}0Z%pa2@?M$bo%sJZ;>&Az zCB<2l=3-+#>vE2J#Q4~x@5uTTsr7u)BV%TDH}ckV(wmdBH@-P@3c26ZNtOGn?-FlW zKD(b8M~9$ohTd)bZYA$iLQmp5&MM~FTn_fgLu0xte`zR=^_tJC^}ad~a_$`ZbAM_n zjyF-)K}|gTcj#kA-qe;7dSJ&b1#u>i+F&?bR94u(tirpS%-~**Jve&mV8!}UsRowu zdHKD`_I&XCrE*ZOE2kP2^TWxt6g_%=nna6R=9QjJ>Pbn}Utk=I*)Z0Qu&&3c-naXg ziPC6}M+>aOAdcm2eY|D&^z-SnUw_J*pUf?u59Rxw%|t7P^|Cu`z2xu==Gjcuvy6Xl z^ZneTkJtj!n%dn;U}@`oF1$f%tR;NDVJ=txjlN#lb^ZzX1sm7`!(Xdyr7Nb*dhi;T%w!id00psW-D(wSh@OypU=o-kmbkF+b1Q+&= z`H72b@EQCf<08+Kwx3Q)b3OH@R&61@BdJII(!05>2NL~T%OK6FR$eSS_!q`haQ5QA zU&KMQ&f^~>PSTkZn}h+D*0ihLd1|K>uxyK=wgtfh=VJcm$KZUdfCDb!xHhDC%hPzXwOo!OH4^z_YjK96|DP z_vVeUYb96-VOu7_f%p%Nol_<5R#tap_yHrr_y@QInqk9hH-BE7(Sp}RfyZZ!u?^D% z;%jbL?e6^QK&mAOUbL2D8==VE=`QfwA-@sM??~ii*%@#%j^MnV9}T2+b7^g|xz4F? zzs*0(8`s~j zm?j14_6~NQ-B1Euo)^R!tv$V7C4cfPFT=lq)s6hP76r()5$$>^oDINHRo~+I(x(4s zJ&nvZ)fxZyWF!A(&jOohgsAnm?C);O<6oXTmCaKTe}9r50cXS!@*_`&h6g?QNj@O} zjII$_+BVQpx2=9AcQS&r&INwq{C5IayYlZu(gS4udGh_?jNQR=QGW(o$GSA9fK7(p zzzm*p%$}9-JgnAY_h%TFC$-Rwk5k8=E8^UU70a*`+RrN{m3ST)p# zcJ1)l1%Iw;v5w!Y0W0XsuV@o(+^M&xdRm+(-3lUCv+d1oW;>tHRf-G3%~ zV;+O{ppX{`bUA=e^SbqSE4RqyJ@XmrNtf+@Mqjbeetv#_5pILPCwQda+49dG&z{Tj z7_e57*SnCp*9X;N#y_{5r(E~~qcs07U+3~OCVzXRzdHBZsrnQ2QRMkJ96Kd!&4>9q z|MZq*+oYb2Z@tS@yd!DHVm_)hb6GA3`wb<%U-GdGh4eofhrmMKr)&MNL|64vuC8@K zhqq-!zB)KeEsR;W)Z;9F2hWB@V7*cfVQB*Q8OQ1pC%<}Qj%y+Pj+)VnEx-VI8NFV_ zvVUhjJL9voWIx5%>x(ka`lwHk8`V*NZseNgRNO=45s!p@NA2Qur@h*F@nqf6&58rx zM?Hf&=Ac+U5$5j2KP*-^#`coF?qKh!MydIOF-w}l|DfiQ{M|F00fufKooaXG#Ne+1 z=QZFEj8)INVh(M0H?@W{zb!Z{SidaZ4}UP>4Ev6`I$V#vX5$C+$M=XMc8mHR?ZFP~ zS)A`duP+|k{ng`*7%OQ$o@st+m1#!%`W#;f%pJ@_-kfGWe-l3DQ|UlglDXkEDp}Y3 z3*cC`S#52Z_bY2p*m;}%PKJw2+C!sMziN7aalCSRAD-MRvv$(FWI1b;jWO@L-+$+I z>b#b`H2 zkt2e5hWK3I?`5?2)QEBEqh^u(jKoh4IrP?GU{DPRdwzJ#4Cfqiqe2f1agMk;#_5)0 zcUSBkq;inY z`$e}&eL&pDW|--)(;h&~ir4f20}MHZX3`@?wFC3$K)#jwpoQ8|rI< zybC-()Mr66TYg{W-qop}>3^0ST%c>mX|=zbS~apu7UX1F8wW7-#Lolg)sDxDn16#_ z#dx@J?CvrkY>D^*ZDvW{%xGIQC-OX<37^jF)qioSn``f)JurWn zTGySl>fLd~u=AwvwJPS%f?nffEy(-OKb)+6+*i_CgWuq~P?@noozL6`adhz18rnLR zD}!(LfA>J0d1)?PK>xp;`ZpiVFBV0zCY?+vWa zJK#;|#gi@V>$GjPn;mY$;2ofS5?nvb#(8=KF=6OIPsse_`=GUqHVVd{eqX!?u@*tD zjc^liMrm6-19062p&uK-L3yOyTkzuAuZ!hiEaZgkserQVm~>jv`h z+@yN}uyRmH8qgg*5)G+M;JAXJ{&4KmYmcFU>9Wjw_*T zOQzP{#u+KJpKim=f$v`djzQP%JPVss(6=G3k#Qa8^$+?}o8?3^dq;jRi3Xiik5BEr z^Y;54>|x|B-G74mv$+kPfBryQ7rCJym3Y>+$baL0^!55auwKJ}d?MMmkj^cr4M~`w z-nE zzU+rU&6{(#hAbw8{RcRTs?@tJkCAW{u>O|@aocObi+@Y@9<^bTGa1G!>1`%+#c@+q zYX#d}9qb%6B3>-)+n%wt0h(CDZ7dbS+78)FLVNvb2Ka=vzz)1_wrFlz- zb7zGe-B9>Gb=kPtyi^=(6M^sJg8!vsE&jaih~B;zVVxMu?yiWJOk6W&>vQ2AJXPU6 zh@O2Wmw%G-=gaFHm99xj^&UFU8E2q`Rl%B?-$o86I2UA$&CApZ(0+Tmsk+u)aJNF< zK<e#|ak4&d+IxDv z#_CH@uUJ6OH1^vq%{BDy->OZYntzq%zrY`(Ie#p{?J#0mR({*W^O*I&0Zw7duxAag z9fVJ?*IIO@_L_~ZyQu8~jpJN~r+OtVZ4JC!Pz!bE_dh(ayo$bY_r$O>-{l)cKs1e6BDT^eYDYjeWEg$MTuI zlYey7X#Hj9lH~}y)v1lP=z-T{(XX=`3+mr|mwGH)>s|0a==lx>uio zM?Chbke65F_w}5LnIUJac60afwdZXzM}r~GWAS@RUkkQbqp_TMProv}M5*_ar++7I zv}$9!^4b_K%sz1AJE;GiiIs)^C&!hCVL*PL;>FQxzAO9!DSQPb03g;5@^B zzuZIgirh4aCx)CP=O{xg17cPWo?6L`6~>q=WZVJE2xCyplOhI!c+QPhU7H*lzs3sG zgSyMZ8B$B#xB%XesutT`mR5|zw19wln=GZRg7_tg|)S6x8j3NqHHrG{N7pL8n}0+ zR(&zG`oeZ%9X^#qA4LArT``3{XmZTELjS0ej8+{ouyNA}C+3Y}HL7kSHj#8@5v|L809 z%$NB7rq|i-k%VW%dfwDtMW`nT{?AD2Axhby+PgfPuSP#auX<5kosCQOv*deCGXH)) zr<-6TCucB{9lcxQwVBj;{IUM+AHy4-z5~iL6yaKBJSpnSoyRKX&wsln{4c>e$hda=b3(T-Cb`)`gpmRLp`gW1DhD z!D+4l*Hk9nDw>lO;(vm9U74*{iEj|rOa=Prq(rm@O`1*jMYL<<}P(k;OC&_4!QoPQSzLqLkayv zb_m}G4%U^2wZc8j;S%zb{yh6m__)l2XGL4FmsPA?l=?25`+tz<3n*WY-^qRd+%Mtp zQxosS?<`pULD|pcx`?laP)l8S)c|x=CgkTxvDT=um|AX3hJ8ds$ z4Pd=lbt|wISv}$)YAd9J?03*tGoKy13$@X7z83N&dPqDK1@Fy=I2Y!S_WdzcCq7*( zN5orV-H7AO>wgj78-c2=g66ri2=i-DYXI%e3iTbjnCC+uMKvRr)qy@7ry6HdwA{{`Lk_2%UqCN0dgh80n;uyH$PHN8S7{8Y>wq3ZUpedkPm~k z9oUT_i+x`Z=TsuHxzNTX?3e-FNdHv$ncei+?s_*DvdTp_Yz$09+0IF1`zH z&yJENk>Vq!N90nEx$z}vc3Q6s7Uv862&-R0-G%4g$>z4H#t!;}f!$pN?Fju+;Caj8 zH$}ey@W|9V2|2*m1=A-3?9o_^bAsy#*2SqhVdpns$x=3*+kZMQ{vYKvG|@xj zjv&T%BiY|)_oUiC8yECskPj;GG6Eye(ShrX@P8)^J1{3sv@Y}pR_MIYc-%X8tzhNF zJf=qt7w$*Mxv4exU%)ndRqR`KDw+CmYjkA%^V%Gql&LxjPs6}eS?@-iudy4b~A-1!Z}Qx zy?;VK3osPw0O#HrHRb{O7u?SqR9viY=GJimkG!S#Pa5HD4<-JsYF2veIl%w*+$!o5J-i^S1%GtE8rZel_U<)(W*UnHIqI4SB$0pc^YMD&&A%OszY3H*?S@ zaV>3o#tzyUt+O-pD!nK5b>~YMHJU@j*MDuXrpWvV*sD{tFWtyxntLK<&{J5=N}y}c zQ?N0_S3u84u|~yTnhEZOK8G_ta)4u%-Vx+*LayrvxmySO^ZPRo-i;pZ5m#s%70mUv zDbELII=9z&-$flc(a<;I{NZim5LjS;#9D!PYVT658}f2FJ{j12xX#@8Z38*)1AjeA z`~bUqM1M?=BEojjxCEww-klT=npk&1y`5!WJR|tijx}I$JmnBGza@SHd)n0c)&uNJ z8)MB1*wiV`hp__8J^NkKSjTsaIrFV6=C=lWcMUmWH;HpjaGu0pA=f-odouQPZOQm` zL$5smTb$|n#B<{r@^-B6Gz`w|-G2M{(%xZ<2>?48vuJgaSZlRtyw!+6fT zv`=fl;T!<}#fj@XPd7vF`3z4;wSni6W9=cg7D8Odcs>w^mgvJwa4n@j&tUFAODKkZ zUXGCl&WHilxuv)lHBEu9s;4}URdiKYPf zz-Elk0hm{eMGOV_c)$;uCfFIku|$ZAK|T+tqnVHk18#yNYS4mx6LmP)%e805>npUA zvF~Vvb-5+eibGone$L?GzBZUQ=1+KbGhAic0DpNc&lh0S-74_FYR`ULKa!rpJ{to| zy#LfM%wymFxcjdopC_y)1Aln7U|t8m335BUKY8t`{#6(msrJ5bZD%Lt9boRD|7m%- zCUDC>NUt%m4oq0PVL@zH^u5{TIIorHc>>pV!1<5T&pq>!b(zxfOmJoB+v(r~3oMi^ zaF}TO88#m|P*U${!Pf`l2*&dS;z@HY@n@c#A3+;l_B z>}*o|IBzo;&okKg$g>-jg1le!q(`#0BI4jsM`X^i%bDMYyb<;OvY6xk(0>@-fiHpa z8ss=1W_#RMv3V4jeSe+K1v=9e$fshSCA-fI9Q#$Z+eCY$h4%LHe!RgiPp{Y7fZH{m z7cKD9&#uMtxsnv#m&K%cxew&sV0*1KGd08IdG4S+h&dKNIc}yN}v>a7MB| zeV8-!^-eVCxt~yM*D}8MO}47AzcOf3PwJ&Jn)4JJx~Wb{BY!60D$}DQ<4c;uoK2Bq z1L~Db6PwoEF|8Hw-nB2TGiXFu=d=eUbVd2KeONbw>xzxNpk@m>2zC$V-+HK1cAfw5 zftU(4t+QTcF31PM`n8t+tg!Z%^1U$L$GnFN+=CW!{qVfb*_uqc*4-r^+?p&|O@{W2 z+~0sXnxs#G=YLKdsvn44pWLJCXy!yY$#ztYi%#f%8sy=%HsphZwWyUVnri7rIZi6h{cdawgBh_E0iz z!i$;>$mR0$SUg7_wp049oDWR*HcOZg)-x<$yGq?7ljluoF|p6YJu=rmW_jR}x!Yzm zmk8%`5dY3`KU>ez_K$7SoK1Sqvsj?v%hM?JzE3eGnSN~gEKIbA8UBamD%1C}2avNr zng0{K$A6i1P=o==t}_|Kke=)Fd_M^njKE-I$DgW^Cpy9>b+L^0a<=|;qQRW4DM=d4 z+3%+Aov9fXyqiqEIWxT~^dm$LPr9}+j!g8w&idJ)H6dwGT=2(} zcX0N1S?yiAXWNj!S9!|Oyhwb>6Wt5$gB{PUQ-3pakL=nEGWxNndep+-$=|n1`nr?* ztM$Vaa=jH}<4YllpXP905m-b^v<|Ym((3 zLWyrBbai7T_)pQ#t^@Dg67khB`p+DP+Zsm$ZY!?lI{+UaFwjHhPhQl+hU@j(kzb$B zdw++GukHa@rP>!CtCiz-VqK^eO1^Rmw#&om~*PriLvuB%YAHoPcZIj=p{BohX0qJ z<79ta&+(bv(*rTyf_EvdL2N^2-|$+%`Iz%`5BaJY`Z3_pjUBHi5tjw(5pLKXTYr0M z{ola8&wJmY-$qvObaXB40CA=d=VtqcJq0@7b{BH|sH2w3nPUyCuHMeQfAS94 zc*A1+DVsBv``~<*BIj`G7dYyA~F04teFnst98~luWP_BuLAyy zW3*Upa^YHC#Z?39*O$lI%*XPAw!6&n4KA;Uy5Z3x1*tq{8{dST$1(=~jm%V1Bz+O;{p9b<|L{+u$~t)nZt^mTl8LK9Nx9scZ)OYKDxvgdUn73 zPo6*M$AQB8^Ao>0#Yx1uGroDozIn#JdB#4RXYAbm{cN0LEcadQ&wv|e5=FytCHiH4 z+l6nt@NF0Vq+Jj-wF289t|@09k{nSX*B0WO22pUPru^QuWW#O%rhf+4XPO%Xc*Tl2 zp5VE8ZLrL9i+)wA6Ysq$)bNng3hIU{Kdx`lZvtH-Zo};US?)FFQzK89#G#e4ufi9# zks}9lFrC)me@7ET8%IXhSVY8#l9gMmR-YC&*uz3+e%UZ@kIbJt}I=1$#89N3*q>sy&-$ zbGi?w99^8V`jltu6gSBGkB^?wl(njzpj3$Z|oWame#~X$ALW631?0OOdCdt00fYoaRFGX6NT<0B1m$zYfG5 zqC_cPkVM0Stx(m(I0A;hu~a7Va+dxSnX#vkLvW`tNZ=oe-^Ub3bL=K|=_ zy4j|92Z)Ox&AWg(dNcGyK8x`Lu-}mSkvH(3roh!SYJ@@C2oa}+oH7jC2epv4jIE|v z-nH4;-tK=Yz>g*K1SFgeCmLJq9NbgSy`}6yKThJf!9H~#v}ARN9Wf`s#uWP+ zIEI9WL2x8wITx}#TXMZWwLjf8=R0SdAZv)>()ND=Yzy*LFs?$aa&8~9TiYX#0kwX&v>>%o=W0+!rtX`xDLo~ z0he#k?sM!z!L<@*b!o~RGlb8r!g_^zX4svy`sLdKNc2vG){>YHab8i~CZkKr{4BDoGM4eZ z;}$kP+22^;J1F8lIP;xJiM$~5Yh!H@%N`cm)|M$lxBD*5?+l| zk7*TrTq9!ka)W)eSYrZikDq7szMyB`JU$_(cLj3W3HM0)e%L!8;f*1GH3v;_cMi{i z8Yf_1D*@`<3>4JkvPnDMK@OQN<0?QdGX--ag7*RHS)xu4{pVXA&nErXsQZgOlP-U7 zBHISnklc12hWlS*XXY#;te3F8QSqt`WLw_ z(lKGe=>a%N;*#M0m?`{2#+QhgI?8|V7WJH+)R%Me51bcAUS}}Q?v8lq8D}8R*$RFf z7$f8byP>0QCSK)r=T-;5y#@3|)DJm4Cu;|7`rsw7YX6evSX%ePQ~jA&H7lV1Eb$4R zw;zn7NcIhdkC#2Kfmc`3sUkck@|y7dmi_(X3BS(sedSk^^Z07-z344F6M)hg* z|3apPhjqIR>`&sH&1&|PTp|`d<=r5iPU6N9 zcoZjw`CFsSW?UoujAU3l!Owr4;!%F*{K-i#YJsgj?OQ#*%(6YI1vL)9s`Gm=&J^l9 zy~^Lv28y#J{xpyEz22Tje^;%#v$0dQPq)MzGftBfXA6C%mBNjH4=DO{f!h`M^#Z+q zcp9Z*krc+ED0hMw%w&&B*d*kqYcZYpTuEq5)jhYX7vXyh=BAYmh2EWI1)SF~_X$Cuk zaZlkm)4e#x%2x?v=~>!c&w7m@@8a9$F3=|%;4=5y{cK-v419W`$C&eDoH>(_&*1rG zcJ|E5aFslcv3>*ZV)1`lU{Ns_RQo;8_Movo2Jk(a*ta(OJ+9O=sFQkzGlOZT z&a)gOT(h#0;zwbcmgn!4(z%>u`8U`e6VJl_PR5;weaZ5mq%?o-hnqO9;?@<`}XoUeW-??!w-_>DoJs> zu+LsNzel!Kp5+>m>(MD*5LxqPT!x1w^PMc$ja-*Kq~&YcqeRhBZvjVNN}cajfKhS6=s7&g+7AljT5JobZ+;?}PqM|BlFeX82Di zXDVF_zq530Lta~`g(q=|oXaD9^P_z8qkQ51U*IY*8lE0OukDMcV!fR3x*T{NWHQ6wYqGpGdnfPm9Co7!U%r1Yj=>R(zXg36+VK-`49auBIR@p=z5>Uf zytWeVJZXPj7Wvmx`#$-OeNX3MyTbR@4)X> zuRpE8?{eGbvpbr-`1Ad2I->L8QIEX7S;>u4ejgf#&cn;>vAv%4=6758o~1@!UsHl# z^9I@Fc4gITHvZ>-M~nZVI5M+dtXf%KkW~B$wZDI{(m&D2gU`-$PElOR_C%R|2=&+B zlS{S_xku{9e2yr>HBVEuO&L2~-xK!?>ANJkAIgUXs6AGz5D&k(7rjw!(N{z`TF5Ke zGnStQP6q>eFhPrK;p!3R<7aDwb4qk0fj?t83wMcpCJ{S}gpQ8KdQj4RIFRcO6$j(R z%8q|<7U^Dwq~@w%zeP{&u06E_ygs01bD%y5;A^RE+~#19bp+68W7k7}hI3F(^dCDd zhLvddr8)=1{K#PgwhMY$7l>D}jK$PuI6UZivtAX#h+-}u&VmZ8ZO9vWYOsa4#Feg_ zo@x??n4bq9YYB1UO*Wp^*5O9%_>DFm_f3Db|4Dd!>PMb$VdMG=Hhr6lUt%d%`L@l% zHczBnfkCwsk=vK_Op_jU%#pVM&%B^qD&qyb)@KF&EKSNiR07Czi+p0@bD*Zj!Hup6apcc{cok-Ib9{1`2WF4%IQJRr0aZ|coAt`Wy>EZ# z5IdOz(&gggGQl1c)Ynd~9lujfSjipR=deeo3d6IFfU`d>z&%sB!xp zzo+?4rQV&P`WjBHO3G#d4(|#1wO+9gf@uO%K5;TwJ65#mH5<{C;dKRvetSV$rppE5 z#Heo7lKVg&Jg7IA$PdPJSa{7TI&y!EDV`m1f?;xUeqZhj0o$6+0YHz2wt!v$hvN~^ zhD8;DH?(Ri-!>x{GxP%hm%oeW6T{$T$BY~!pp83`bSdvrTI2#Fs@EdItTMeA(lUF= zn@8l}h@rMdm|tNtS?!*3-#7X9C%;vO8#d>;^Ku@)Xim-T6t#OXUWfku3if{;Q%tbR z@Q6L<&SRVAk?C79{9-pc>8Fft_C-(UT)lt+q*x~5ZarS?1EaZ`oR5j}*RbHG6xdH+ zMGjC2r#eAA9h*<=Q#w66%{zzhKi*S+vd0yAXB7XOjKu`KJRLQc*ma8HGkgr{H@@fm zSM$eqp+_lok1_0v@z3kukz{{+#>BUp=)=(86jz_l-vqEy3=bw^5K#|r59nRX_*lqe zvVEM`sMH)zm@XEZ`;_(@VMx$!4KS9Y-jrGt9CGb3=P8nMs$Ix=FSz{?;}HD~$!CPy zG9uKxwFH(s$6hh)sr7nfSeJ!sF&%XFJaj)=`y98==aPMny)B*!{vdzDm1VfGNngE= zaYOGEt3aHE7*97sVTT0vJUJUq?OCG7BF*)IVlji`uyLPpJus@>rPjijFt2b{p5mL# zbWBY+T1!y^opD^joS-f-fE@8hfeRuNDd*&-n*XG~HkK~U_;v&vjdtW-Yk*TB0 z>p5M!KmGTN9!TMuFSu8BjeX}_vN;!-iO}GUL@~) zxc{fq?#zD8?_YnO4)@#MyawO%rsjHYo0T6OX50REv{-lAoBAV+8_w-?&Mordl4~J- z-k;+MfVw&I5uncvK5}fX(>w@T1>UiweDPuj=A3wjJubR3qk|R@DEFPC>;! zh=|XCr&inu>29^N`3b5Q)C5ePqD{DpW)*)*#q{g%AvUWgK>Ba)zWKw@CNxh*AKTn!>x<~gX4hZbS4k}$f`*3b66R5#g zqVor0*E~D8@K^k9%>wRR@g3lOv8v?&_$ROEA+i)s82YX-pj8D8v3j z{4V*HH|Bb-aAE?h3D<+%4D<^74z6SJkBNVL7aFMl)Ymze#Cs4rQRF)Uo)CZgw)W~h zk}rtwfbv~>fBSh*Y40QVku;G|^C3b`t%(&MUMN3tz`jVgcP4uc9P6>v?S*;3KBQAU z1`ZgC+cVrvmtz5Kc+_fPbmKk-alUc@{p4^WENt&x0z|Opt5cIj(g~h6flG z^DrM7)nQ=NN+Tye2aZ|tj2VA$h2#9YjdneFj%KfJ5Ba~Z^#Y~8r#Rp{^Ez;##u@Gf zk*`|ly^+LaMf}9bd3dVs!&8;>Y^?Xjn4Ay96*+!MFA3T1^x5v-!DV&zH+S?+qFo!5 z;wG&(BbjQ+pgYTThSEmuDQ$n%7n0 zImo%Q7o1$V{5y^}1rAf+s>R`npTVi(8ppm)$-7hC3+@QwPZx2!p7*bV55EtSGWPk8 zNIPm18s9XIzId0*gN88<@+%2m{CQ9ryybtFZ0t2ZSokRdZFAFy~n z)SHuhuC9;x4)BiqZtr`*XUFZeT-^sTzSnzre$YPRdibb)%=Yw?zSrekGRHV@KSY)Z zJ^C|gKeg|E+0jq4qw1XcdME$rJNc9|t&CcWMfI+7ur$v$oH2{ru>{7ZX3rc6Otxm< z_#J~j=?2#d)~$cd%>~af@r9Lx)%|_zTFrSA7(L8&d&Bw(anMF-IxgAWiBm1V^1Wz{ zU=28j_Z7~9^6XXQ%T&Av=R$67s@0GjXOvS*YQPbboAW~--@Nu-GFludfBowHLC@fC z^e5AKHsnU&^E;KR`y=v6m0nEiX!hd{E#9*~hB}h{AT)nHQCr!(yhhR41vyN_6*M%x zVsZWqG1qZ%ZgJj-=8$toe?lHXJ}dI0BL7A)r!4dYXi!;(1dC+=19x$JX{5(z-dQ4_M%{SE5fg26;9)UwK3Fd2_Q@TdE zdQjp#zh;*~8#U8sqP<`2r&;=P4r*oJn0|OHSR;Q%9?CQps?(@1eHZnwu_j7$g0)iM zC*1g`|23EeO^VS%sc$aMZGtmYc>F-oUT`e-M?NiQ+KxA(8$%;b8!^n0W&VBa(+{%J%1 z`dZThSpyD{)@)z(z%}H#j{YRz{-AH|56PvRi*0BTH`k3ld=J*M5}&=wU?cj{F_)sw zC7t^f_*JW+0l2m<=2(0+?-G*?z6w7= z+;}d;7}Gz+U*qTP6}>|-Ct!C*uWk=|2(H>4iYMe+)XwIvUhmHO5jnLzm0L>L2Cma7 zUl02_sScRsD9g{=WO1jv-!hN%nYO_qKl`)KG`TKILi?d;9f>v3lYTw&)QM}9bLM}h zDK#ZNj?2t>U%vrwz_qzeVT|(P$3Fm{33-Ehn3VTnEMtun&rcq1;6?C&UH(?*50W(@ zh5wXwLXC4u{H^{3+`_=4#eToy@VZ({)%cSr2g@;s;!e_Q2Rd#vlZREjLz!Ie#cwdT z)5?C|4h{R1;$_Ol&1s&f(dFmN4`qLFPDSmjb%yT=xYP~`7n8Z}#pm+6*_blT^_1_& zYJ5!jK3Wmq#I3kYCELCy^JLQ*9U)VuJv^M z+jo~6KIb>S;{$hI>Bl^+mCnDXxVBQqdx1atL-J_UPCw@F#x0MxwyF=#rF7Wy*vcZz>4o7MfmoxxrzfP=OZ;88@arW;Q5M@8sVv;Qpg zutk0ge}71=M@`4lWbNsHX*|kpG#H#+O_N#JjI?ynv5PT>O8i!~K)-=wKgM z_KEMifM+VmmB2jSrR5;@UCQ61o?^Jh3j14~an67w){&9dhlayZZJW8|0{c&AeD8}e3|zwl?^Q*sRk;+3UmVBZ79vut--hz;gC z7I8LUz6-9;a~G%fBJ+Rb!*@N@aOeRS{t4pI$g)>KC7%OK;}|N5Xhxsz%jc@g4VZu6@V(vhTT=rB;4viV&?u9)b>gyTq0r<5hawSDpyoj9R zES%R-d)zmGJGuIieXibNfwsN2Uv956Q(wDP@SA{#7L4x!o8Yj#It`8-y~|~1dhF&K!2@stiEV#rLQ9DjyY?F&tt+WebY68)S4&XNZ6o@Iy>b5F^>-UQPP#juC4#j zdThdeS@GT!`{Pq=Kj)PTatkyEpT-4VPTl`E;Co4pN92D7(rfV#;CB&zvc|*BwoBs? zG;EFE8vGWGi(1)W)w`trrgQM-?n{mHHurNaX65y-xNqs-Uon>+a|IQMp=+yGyLZ5| zvPthhOvn$_@}K9HHQPt5L5P?Kr=N9;t|^8=pEl(8sW{TmH#LxRiuor(em;7qO4IG4 zW-8(`5$kFk7=cyWPp}V4##Bj|)V6%zHS$(c4+i@D0X_Sf>-BIZLoBnE{F(eYua){} ziM@Z-%;R>sR&$<}@B!qb#^@_p;{HE72U=~;iowU)%6%Z_hxu0~B6bG+SJGbl7HZic z=J}OsfvRrPq&>y!q2s&pnf=LbcHI!3aj=;1ejQ@me7&}EvBto6G9Fg!2k%-EwJa;yl7&KLH8m!63ZI_v!hjMBb;aY5`dIrBHH2gKzs7B>xP^#`D)#o33s3F|f zIIYUFS1aB|z!^v9Mv3Ao;7{}8Fd^J5tc%D%z2(a@;qfKC- zPCVFvb>P}t(Ua&K$GwLdQLtZVjM{&=<=^fZ3+miK-o}X0-|?*)>K?Z+AGD6c@p)%nw@B-1HbY#<@Id2$o=bPV zM;;&JSPnrmVt#0xYap|>-o6WtvOy=L|ejJPyuq`1W{_BiBNdGF1_)8l`sb8hXs zqqpf$^(ikrw-<|=^|g71{?&gs>VE-GP#3ukaNMXZ^qSOm{s?(+zqK0me#?BE!r$Tl z$BoD7zrmM=zv1U4oZIv>J|4l(&7NnN!xBBmXoE$rm;DtQ_b^ETh;|6A+Uv%d}u z;`ma}H9Z0bu`>h?2Yv6y=hhQpAJb=@;;l|Sr&S}KM665Tcz39$4&TM|sA>l*$lJwd zKZ((9{;<^^?>p5h=**|~y7E6)q+>k;O)yyFDeM8`F@?{z)_R?UZGnID7<%2>Q6oBY z>`&)|)0dniD(BgkmttH>>=L z=l3!94t_7hNfGhwxh-LBv~78q_UU~Ko|TR86+du>WXC0W zfyl?M?b?93(CS~n-@y3SowkMr){Sx67#HYk4zR%@&xiYP;v9cA8s<&y9quKkx?Gp- zczXS#&O6oy;C_$Ct9{VKWxYZU>Wg>scu;#mya$i90B>UDz=1C7$_r%}oY3Dc>*P0?`jJiK7LuD9^}wISt9~sJQB>`_?@@ zZd*@}Ys`1j7=X8c-(AMn0G_6y#)n|dPQEjyc?W%TOYwgUL`l47E>U^z|8$+9IJdS4 z^!-;Zs9WjZyQ9u9N@`1gY$ky90!)g+NdsObUT}?wG`$VUFG95#?B7G)_+4NO;=bcU zo@*UFFZTgl*VflL`!f1jA>v`(maF}6#`&DrB?bob8KXDwwOWBu-G>Xv?~)D$++Wtm z$q&3eCdz-0fIqs4oI$3iK|j;Lem-tnO^(q=Z_^+%Zyf_P?rl9+!2KW54)S8iGtFEm zz9lj9_ucz)O||`b_WVM-xejC>p3VnyrDlt9{S4*>aQ}>tl043cp@Hi}RueFfhVLBo z{uzxAfqBezew-#gXB(f-?ZI;h{CGP+?D=JmFol23PmVMH^s9VB99!K_Ag>;mUhmNK z4zBEzJ2)x6!#cFNw*Aiig=<*U{)jIHV*lPOu&|b2(&7p|)|NSUvWE{-g$=}Y`4_}z zLwL4I>o2(`30u97Fb<{hqQ7Thj$Uw@<5-ZF1?EKRrHNcde$H~jya;K$%R%}G5Eo+) zQr>?)8!9{le_zX$A>Kjkf8KM|MeqzgmU%phR1?McNQ+T|B;JVF*h_5SUtEhkehx;1 zc#e2){~z2tV|pKV^n_S>-(TK^sSwYY!BQcH3Vaz}8{{`YEu|^eF=1qw2WY11D8y&Q zz6oB3_&H zJA<(SUjLHE9Dt-vrrtwmUav#HHE?*A>yl>dgZlnEo1U^wxg}T|flf?Uuff|vdch!Kr z4ZX7wtufxu?DtE)EbKo_&rgDwnIw1pnuoc*PA0&U=C*e}o&nW$aH^rtuiqd2&in6Q zn4kGYwLEq1jJI*o85*VE#Z3&Q4P$?cfoI7qP265Gaj0&c!mX-0^U`F)rkl0-T6O}FMac!;{ktlPLOvR zdz|HaA|FG;Q2wVzd`r@|dibPVLUY4)N~)=IivqSE%|H(j9eMw_I-E$?f3%!Kl}!{d&tjaa`mlD zuD->&`tBO$kk=OYh4Q_=JT(D#*oLujzdqrJ-=k z-~0`F_HNCo!sp$1)5z|cutV(9`qLj6j~#ozUQu**8S>bJ_Pv8OcPUx!Pr zzfamyg$I;%I1M+L%2j`>d!_R1YJAsxOpPx+KlaaFBOBvuS`~SIY6`!o`-(blQUAMk zzx>+2!Y^L={0q;h*(XPEChHhq^0QG7VX1M%YP{2;mjU@rkT1()z6{2(AeT#q6GhkA zd_Sg|3u9ShdBZ412X5U-ZT}57U3X9gSK|SUadaz*;hj zYci+5Zq~9SpXG{jT8LMg5$03WMo1r!Y;G^bE5y21JscC{#}de2&q~pA{rr9YZJ!e_ zEd!%>CY|P996k@uoeDk^aAxiWmvMON&7um}G|+X97hVFs^7ah&P4b_=@0=BDXW_Zg zc>u92pdWwT`+E%gIVsZ9xc)APU;XMe`M&mu-$#D##4`T^?A5@E&y!P1OM`Sd zn)G?A2^^ixDSvN^m{Pz_2;3TI!E?PAdcpuV!QV;0v-qQPxGsl@-JH0+zYFkKv)7e< z^2fL)A%9d?|K7fDUPuF=U|z7N8Mw1fQ4&ME^H0x>1-*arx90}Ot<4Q`hTS>Q`0Uy|a4w?v<`EYU+sX*JDE!36KBu3{KL{HPI-K=4zld{!o*}`y zSCgJ6Ec5Se)^@tWW8z_dww>1}xPW{E`u36=-7H0xiSZ1_a9fGTwxAD3*ueqjCqjw` zs4fK@_EdkrUk8c5PixkTm=bbQxGuoPZC~BqF=&*&X#o! z?4QeRi}z!p|PC4G*g_IBRF@EBdw|Hd@r+p z2&`Y=J2;Vc2H1adC3(*j-&v9^d+m z_Z1l3pT^s&`8-dGbVMq>HO^n9x4v`UfRk+(K@V)x><=$&^#HUjDxTY3w&?Sjm(Q~T{Bbt8L zUMQ&8E8u9*-@9jkKi?HOU&z&Pf3knH>&q~S4dUx&jymAme2$?ewf0VGE+M9kk{Gp5 z1ScZ&>-fe@ox8(&A2m}Tm+4eXV%-b9&zI+34EzsjogcG)BIn}EdMpEZUc_=LtmlK` zeNL*e=w(g!4j@h?rMIH_+BJ;LB+Ni>G}P7*?l+Y+ zl0${@gBW9cG~Uw3Qgps(=L4MMMf>PVyyY)){9$Y2w80J`e_4Q-1x7@oTh*u!u-+s@@)C2ALuWNbbUOG%lv=Eoo8?oSoVX; zX;MgF1wy%EmU#&>7;t|!bB`FTEJQ+<{j!y@jrIh{z|wkS7lWo(n+Z^j-(J{v8} zVHsc_H0^SgKM@*YaK3-zne{=RI}!IQT5sYz5PJ+L=XZD9>KnZ{b-t)vXl8Dsr@^p} zxvT%~Uj0RWI^?qT=e97v_CdQ4Eqq(I{xT+r%X@&HCv$AJ&3=E$91q5Q7~eVqeRb;_ zVFxW-FALQN{w?LdVgGH4V_M=@)Ob#SyRVhu{DX6Jpv8ZT`vPC24OrHG>RLkci8^YR_aTmLtG0x7o6=JGsEst@(ion#0NXCVL+gO&xpt?0 zjJU4fPQsiV=Rkk-WhOr0()JPJR-}EST87Fg%tF*$Bt9z{ySc~>zH2qXXC9NUe14lw zo(HAyx%*e=REu9N6Ex+aet~-i_NMY_YAX>l`m63|=J>Sh7UfU1IifjM|GqPiinh$G z&rmn?B5tmq{9#$=6F?4F^3?}`e^~Io%jTDrZPe^4=r4a_y&2X{)vk@^%ci@prL+N`n7H1U$bfzVXs3&ay4b^ zVYE&%{QHsn!?iubK19#my^1w!B9D4*5$^Hexr4V4 zt}%SRG2nkP3UaF2`T)PVrG9hg`eHr2?Ai+E^&kDxQt>-AW*L6)`Z{nh&Zgds74*8B zi>R@jLS8Vqmdj_%anX65&E=5KiN3%lLQD_DTNnqOBf#4}+Xv(Zux!D-LOOZG_tuY` z<3{!g==~k+#{y3N`-Qy)+`PGg9^eo$8^|{z^#y-D=UDNG8v}a%As@!NIrTDe?-2&q zPXM0>_}_MY@W5@BPg|A~3<+agB9d1PHd;G^se>)(OL0Qz*Y;|UU*avks+$&IJq zKZW&!JxaQY91n|i02qDZHuPs+1^NL}@0_)gbsa)~Ho@O}dG{3j9&&AQKSBbUBV*w& zJY9c2k9dw7*PR7qZ>ze-J8IKn4fgIiU&}cMPA#`hI8G}*2lJ?;Ut8APhjpl>@be$f z`J5p78jfP{i^62Q#rnT-G)Q~R)AMyJs&Nf)Z(yzw?*}<&>?bB&Fy@I-T%wp;*#Rb! z@`?kY8%8m{;QRxgE(f$Pam?KJ33EZYLezig6}bnIt#hk!>)~GT zhF7p7gu783AVPzMd+3<^)Zjj3rR&Vv(y1Ps{Ifx74B@;qYfr-IbT072Z9d%YBS4n?A^QvaNdN#rtZ^`~XzJqTD<1LZtLr8Z*{M(Vk<~3tr;VPS~jtUl)IP-@O&h zpX8EZO(=d3=R94&0&Vp-5BtKtO$Cpk@CWqTA#+IXKIl8qyD7*G@p%V6Q=7hfr@!R( zum+vuFSW-d%o+b?xr4SJ@;*;k0{V*LV4(@+ht2y{SF4wyKaoZdTehsI(4qZFe^lm;6BWD1ATicj8 zcBNB^_F=LGJF}&p{4(1+_#WaQ&z)0`beGB>n`hKrE9|i~x6t!>qn~!?uey2b`THR5 z$~=jxOHm&4zS{RM!5;2Z%>A?ZvuaY<^Pl*rtuspe^PPFH!}WSw`J#Ugcp1m1d|SeP znyH+exW-ce=l<~GoYHi>#-AD2rk<uIsR%4q1@nEO-Ycu=D+Q zyrX>k^9+8}U?0Sn`O=*HXCG?ifl)=hq%f&%sP`;gf1@}hh5copQu>DAXUa3;5(oT2 z>{jLaGZoD>KU;oI*}Q*#&3pF~_?HoI)0=uNDxG7bntrqoSJThI651bKw_-f9##GP; zgs}zmO39iW>dRhUW9)FyG`mecZF^--A2n!z>3zyBdF4Id;}mpMB_D`{-P_ z_TF2?rJ}Q2eh2E7a@==fkDuFf((+92mvLe)gGzVW$J*TnG){rk0ZVl zkY@M-cx;Bwowa`-(8dNGikvkj?8UtVJGxfX!4c~d?x%J+4FI8se1|xR(kwb@jN_!iK|Lo zOT){g-?N72x$>U%-|E*?IEF@Q9dJV;Z&KG$ z@k2&$TgE_@-nHv#ztyjK;Y+7AqF22G;LLw~+h2z(6dIGLTI6q#Vf%|j0 z#_=|0Yv*i6t*27$$1weVT2J4m;r#KhR%7I*K5Gx z|5_=nVch?=vulmHhwsRbP;P~7m)VQMmA{6#fNYS&=bW=Wfs~^c-ycI=0`1mM*uvC3 zZ*d_>?iQPLR(Tzz`9-mgVje>4xE9=*gs~k!eR;!JCC0hobr3r>VXYPJr<@UI)NCzz zCaoB22xvPwN5#4vd(_vO*H3@Im5m&O8rL-SpsM?aC&}^phPv^@(*YRb9b?p>A4}-A zC4qsOI%mW&I@KlB!cx6J%qa^1TuF4h-z9r{*-Ijj#mnYft0gtbx% zAjjR{+CFG5(7Aac3^dMVyFaehQ{z)>gYX}2clrXn!BBUe*N1~;ciVqkbk9A;18cRK zN>mAV6UW?nL%>Ofd(Q<9&}heJ)?W3Wm3d6dOPp5YEt7vPYkL{a8GrqX=RRR!zAL=- ze_D+w2cIxKd8ZIH3T$)G@0ibW9(bdLrxls&@&8}Q{SDHh%Z@b#<3=V z!bVl1N_488{G_|}odJLLD0P4b{Zxa$?Zd=hd>=KB-Ba}~vdWtl;&;Yd4X3)r`D>I; z9T)qIwmi12J|FFz{;{aiU9}pITi~|#;@+P4rR#g@3GQut2Y96IhluvW(uepniRXkF zezG#VBNv`qKa8O_&4NC`V-bJZAvD!<-=Tqkcuago*^e)6 zDrvzej=VEr(|Uig>e*3RKi;t39L2qVkD6v_u!P84bG)koqwW5j>fx1?J> zn?-;R7x+5f*GgAW@e~Vg1%HVBu7|)N4Fa<9O^qMyAoz*+9^{MAZy#6m+@ZvyO78fk zz4M>zdpL^`N6}C^4IcL>u#bz{f!Q;S`wK-(w^v*X(x!j@BrY{`z7r0xh~t08b)j3F z{=_MQJ_Gm$#Bt6%{(28g_BmLGLH2kFjuO;whtH6wo#zE??Z~Rl{APO=SSH}aPM!H9 z@RXFf=W7Q3qi>{f>R|Dvg1re!>s?^6v4;l63>@}BQY&Te?}>TT^>#s1&p=-EC34Vn-CE4o8Wz1W zaqHTexTVj5`yA}J(3U8& z9uc|zwEd~|hkUXvs@!-UI#X`yUQvHX+`sMb_sSt*-%!87Zua`9&j9~D9?*Z& z{ttg!aqr1C>tSpD09d8Ob0Ker96{rL`7!VLl@5$Kcp5jVA9~;6J!kjxyUy+JQai5F z%ADV79RU89IB>fPpC&Z$0GDRi>E0V{O|+U)Gm+0u!qtdgb?nI)J|2lP-z)b<-EwDM z|L!4nQu7O(hv{%^e(&40k-hBwd$crrgCT!ufJC|`kI#{+C`l&O7x=%T}C;#R8Q!y(l(hi<6nqh zh%{^50qU5Bjpc@*dUaNV zA7PxGjxIkw5#D%gp35 zDVMDD0LRP^o5j#7tz5v?l*2^k_OOoPWBv)^8ci4SXY!oa##0tJw`%;#u`_>a@wx59 z16*|Rv-~TMpEj^!c((Sqp?WeyjXwi$Mv>6#TM=Jd-#D%jHw^xh)t(`L#$_(Dm|nyvK-^> zWbQg$=Uh(Qp3pX)y*A1l-+6!7V1Gbm5O-YI_w{r3{rf9>CpZ@s)}UzqWDTfjt^5Ht z8}>cmi{gG7MrK&U&t2{ooql4zbUu zF*Fn7Tz6JNCu{l^&JWYckhDx*xZeF^RH|j>clzU0Kee9TrZ3N%X=i`_u!G+@MjUj_ za`b&(C)@d4T6Y@tfBk#7g#1eF0`KZn?_EE*_Jjt-z^N`ns|NKGSi_K$CB5CeTDjFL zhpRSmOTheEv8eMf@1@FV-D&$^-7kP!He4++uDLdzTQ#5S&#}$xIUyd7v<|DRx1b*_ zug4s?Fc%Qd2yP$LP>X+oUjj6Kz~(QYM(RP`H5qX4{x{&ifSe3-yHbvc;sNOCH&?lN zM$ii$q6WIsDNX6#nYeGLrtpAV6p;n-6!cFCULo_0^&G6LLLVgH8Kh57bGL&1)fX{R zIY_oUz;Y572I;7Yx$4a87WQd@-Zti9+UvlIORqz$$DdKFm}`IYpg}8g;ezW0;xxC> zE`=*wX}uv&IdD3N+>Tm5(A(v^Gt8w3{b*W)k{1K-g}eX|gJpDEy~M_MfO!eXPq_ok zr6Lb{5-)x75ill?~tN&aKV6Yf1Drkt9o&LOq!q)m|BRMwmB>9}yo1_0bLS z1&MuQKVbi@n5@LVUomIHrwnmB*IN!$y~0i2gmH9w_+R<*w{$s|1aztz60bDnrpT3^t)bT4-xi8rpNnh z_Fj5E3-*6tdhO@EtDnRkT^rkP&^L2!U5i}7wa@R5oo#DAtD3SI@0A6)FD-g~r`Qp*~RqxJJ+tMM-_gWl!MVebw)obg2K z4M!9iEAAxxnf^eyMsI)fe8VKJ4xrG z`f%#OIeEL7&#!2=+_gkv7o>ZLLDSj-+%uJr|9j$`;&vk5wYEVmQ7<~iByq0+5G3Mz z`QJdlPc!{_B#U7FknW9Q6R^tmk5Rhg*P%i6>K^o3Q^5Ao_I!f3j*z$Mg5;?HezFWZw{X+(t@6AupD@plweQK+W>iP6OXOC<)L%ovwjh zrpj+~Xu4~$FN7I-xUUd^IG&L$hM9JS|IE0S?J|8I@)F$YDRt=#5UNjC;yP8l z)pF@wKX7-B`Uty}ZI!MU3ziaFPlfr#U= z1RpWjpdf0OWy+u<>M7W6kJ5VbU`S*$>RF4pYp*@%=0QPDxn-Bc@IAz2*i`l<3dntwjqHJs+@ZuDmT~iSkAx4LH)aBptciv+r?+ zX0Y4l4Bd3|k=*BgC}#CCIHKWc>#Rp{8~XYTgKXK9{J$4>hRJ~%b#+EfR(aNxrh64qi*b~los1yO|#HC;OE5P zpr%vVCpDoxgXX?i?&-qkKAcC84nsY}NM<+p_{J~&IScEEc$_VVD}pdpkNHR5sX_qA z=D67=iRJvEBgm@zh1KD?C&pDpV>`z|^pv`J)lZXS{T6d})C*S56^=)x`6dnP2u|uS z$MPvgyJBeDLquiw*$i8L>9uMgcZL#*yfW{|GDrPXpqW9rSc_Z8dL1_`XKYqO$W_D>$U(0S;&}~% z({N&77SN}%c|D4D3~|*2_?O+>rpC@9#y`S>JcH?(iw7;1M21%8_%Lqs+PnmXbv3MV z4egw@3QA)HhMSeM1z0SQ(x@*%MkW>EUJp_1+^2&RL6PLSN*DpL{M#sCEA<#t*K#JK zO{i=+cx;8q5@ng)O6RWqRBN($`Ewj)LM#Dy+1|@kdwBL}k_#0$DpU~kp9nlq@n=O1 zBUUNQFaP;W)!Vjai+ModTbJtCKC(81YvV6V@NHG-3(gD$z~}2jHIUDeW?V=xrVx+R{XM-)r+ZXW=P4IWK%3 z=tazSDD4<;Wwf>afnCAn=1N1qj8{bp%LiHJN1ew#6|5`jGzt>oAH@H_pS;~O&4u1t zR151}qO1d;iCn#mRAUutJU#1B>}7;~+dO(9Dy_6fEpD!siCBh_5sfPG|8 zZt2Zn(+zQ#2Ot*0#zmyAOeHGfIpu>w^4aEnnKEGQLW5Jar%pU05#Iw|e^S{*RuEo+77?E9K`;HZj$d{j-ceVYJA;+o17icXL*2CL@+UNu>52_x{Zbd(kTP zELH?TaBOz|swhc#b579R`~K$6Xc;6ye?UTGV8)ya71dQ@+9&$rs>1sr2N>tYuDc6F zAb_Xs5yMyYZ9VwCgW-)J++zZU7ylGJ{?mE;P3tv`@kq4Yrf|7AN#}$1GCXlje~Idy zOt3M*=5D=!i4Pg{3s*x{BYXba$J-YT^!rQI9e8<-Z{6E5q7!F>W4?W*(jDnN;e#hYf4STH-KmB^B7S#=UH{IqMxU825Y1%H~JzX(HN#C{r;pG}w z?`#T9?BH|uxaxH~vWXFog#Vs?r+z39rX^j_1$>d7X4JP=gl+VNII`7po{VE6ftoARjX6H9*c^8=;; z{+WDA4$iM_Zr1IzDXQQok(>&&-$usIT~q7@jd7NXPkWV2h!Eeydv|%^28hoE7xNVH~!oi(8tv*b- z^}$4^PEU`HOrFN$Im|C%*ZSWhm&}MKnIE?8<9DW+J%K>>#q*yIetC>g6pMRqoLpR< zZTG2WQv1<+c^2E{47~5(?RwDl{EB$i#{cN`8y0Vz`BRZU$bAW-tAa*uccWP#ZOq;O z<@yL%#woqT(u>4+uF5(;T%t@iiZfIC?kSD7t{(Hbqu&I9y1bYZO((Ls$xrA=^o$C) zXG*sRDs3hdk)stoez#AYOUnN?evz)QlXR4p$jQwPxDA_$0*cwIwS|>94RdSZZ~5))Pis9<>z%@ z&F>Uk&bE4^6Wc1<><~Lu%!!@0hqd^_R}VkfryBPsG?QR|V!U>mCk=@s-Bbg}IaKw? zXjU=plf^9X{J)Tcd$PLkrsRe~I{039xtyce?l3Q<+rT4sNqU2tVT4N5gxOv)*xEDT z+}Er}391LP{@+8gW}v={KO9UiLRd+PFGT`R{+e-NvZh)Glz0MC{c&mUV58968`Dx% zUViS}y2KOS%9M6tcZigZPRft8qX$E`)(MYVoSS-pF6GC=ddoIaTe#iXCWLRR=M%tn zcnwUOzU~%$bsxOEoStm>Wa`JA%uZOy{jIu}EP%#=JJp6$d?oVYudw!Fw^+9t{incG)#wJUVz2(?n3N|B1 zj(r~BS@v(*0qI!h_!qLqb*aBJlgwNBCzBKfu}jg9aUNlwyE{evt-%?b#?m8omr2Vy zCD=#>wju5yBCWuTtQ&0=c-FukgU*T;sP#i4fnwal zD_1Cgz%Qd8)o~dA6_K($tzzwYw{VhvN*#!vF1J$m;BcEw5{??M;%#j{Q$eX=Wyq@n z6Oa7^E$}M8MZWxC+nXEsX|d@1-gDC~XiJdmaI|H320G|>8NCrHBU7$+GSm5Gmrr)R z6Vp7xN6fr=(m^5z_qEG(^($B@`~&uwM6fkod`@uZB%CY9f&crdo7;x^l=*aHOQ6>_ zoCv!n^si!uSSsueTBCJeJY*1$Y2p~{JaMp)bblUe4_Z2G3k@P4gd$$^B~2f7)7*}I zfroRuVCWx>B=!K*N!%HFji}MMMmAZdl+M~du*k!mjWT)%k69e4C9ac&Hm-SW)=O^> zQw6ErO@GaUEjQGYgYWFg{pvRcDCdByHSdRm{bcajCEfONZYvk#D0EvNr*kRGIJRmH z9Rk|6IT|V%pK($)URT#7nrQ7&A-Z~r!qE0f;pBet!|Kg*~WTLCdzKOHb{+% z>I_nQ(@Zlay(;k|0%yO;Gi~BThV-Eta6q=Ee*J&TICyih&gXN4>OU_iqk|^t2=3M` zb?QfvCcsY(r5p6CuC4Y{A(IbBy|R8+!t_@vLk3UJK*fKA)BQw0;7<@i#2;r(&1iK7 z3ii-!TW;ET%R44Y8{p1BE@*K)C8)LDy5zpRHD-oWj18f2YDF zN=MFw?QhX;D?P|#NUIF&^zFr*oo{m!L8)>D3>MB-;A1Iue8TT)7G>EsyiAVh8sMTe zcwXo>d!ftWdp6+NR_bc18BtjzP4fMVtNI@WxMF!<^kUdru8|64T+JY#nPB<6$2$$X z?}plw!v19?eyywSf_!!vud?S`!uI5q-UfO>krSc^RxQw2 z+OBOCb#kB|%|aZuD>hDvGS+vryK4V!*~hhPecM<)zuS<|N&lZN`O?l=CgLAIua+yg z13DZ1!anO4(t`HOGLa8y=bY(?QD*kJD7Lz-s_UqX(^`T2_2gP5y+D_9!QBssS?X85 zB2EmxA_}BPgnaqCU&jks0)9GLk?clY48expL*I_QnIKCVgt81FUUw9#H2>b zF~@P`6*tTMPS2rhMHk!BZf}sZ6Bxx~zud#!x~HEkQIj3aIlaOUIZb?lp|GD$3AR7jQhe($BtOaxJI40K8?uM)Y098=K* zaGiM*(bC&mB&R&>0z2LXRI$bV08a4EPGZE7Sl5>-jru&FvI~|^${{InLwO+11RhEX z+oCUsagEgEf7Tn%DdDlFUGN@urPNK&<$i}O*l$MY6&hKxR1tEd4@?JVm7Gn+Dm9lo zwCqXZRurkg<|Y5-hJVGG6-~4kRjr>c=Q*#J=@GWU3iN`?l{I?zc6{sx z!y6fYA(V(dYFMFH;m;{Dw&)%B9JWf>&BKH<>%Seb^CrIwCqNl1I?VOr|HjQJU|Y{3F`ySn)c@b9Ra-&S=6^xIlA0 zWFY>*68$3`Fy*#$Tf1G-YO>vtNND!_SBFQV0Il==xYJW7WQD zGB))LBh{|C1SGQ0J_))pC%*p?Ddr3O##`3QZ=W_-Rn2#Pn;QEKGOhcF12x@}8KKPX z9r=t~6nJkIHQW#G3F)$km+dZOP`QqldYsr4#@Fcwjhml_bk0OMKSISn7DskgFv`R?jY|R(%r!OJD%EYd1 zUkys$U`eToguFxvwR{ve6G`sX$9NUt_xH^@`~4E*y^Nhrv$>@9+PAN&wu==Ac$$~oxQ-wn8f;jq8va^g3MUs4L{ zB8ksXDZ0Be;)fTap-7DWZN>tBI9_b0rjp0^?~`Vc-|iu!DhZ&5#Pg8Q4VFkRhRHeu zHC?@Zr0N&Kivxz8I0wu|jxY+VW%z?pHstNKogdewpTiEny6Avn-+BXylFQyt9Vk`z z=*saCxO$(#Vz8A|G4jWOaJ-kYiErUQ;$B{Z|2N+#&apg8UT0h0`#HH0PiVB<3kF84#@j{O)KfVTLQ?yp*XuX_$dv^B%uelnMB`~Oq)tnSM4tS7 z-ICrIF@)dQtt99twYWLtuVoykESsM0zuo}*)S>YI;SyTPTC{9hUj2BalgWw9>pW@v z%8A6BKemh1^Ld~WuG5+tS0|gHMufjp^eBO*I4>xG$wJoSC}8mp!8;0MDbM-FE85UC zZP#%3_eNH=%cb28;{38o$UTp1TF~nvS&J0i={km>Oi609Uud;WVUD3??tS4nyB z@jYYrts4IEB82VP_%=}+C8HmrX{DqP$?JSZjc|r)gaxqZyqe0a?3{#296It57>Hgr zWys}w@FV6Oi~VywwU3>jOq%!w_$uBT+#nw{5b?>k-gt5%OtJ>M^8MFm&X}O-y%Ryytfo@{% zl?$isnGfRWXx*94JhIu&>_!c&ciOZ;8nps7p9x>c2H%f6sW%|DgN_+qScAIr8dO&g zskzTVskmDQ-^Gm2a>X|m4%rqTpMW-cJD{z=OU%&--+b291bRr6>_yvQ;uap)Wxm{c zqE~$tvh*0<9Wp6$$$sJ3K;_YFlz{MM)PXnLn<~`0t1z!LD`H$347IL_AjOFt%dF$x zv^1C)52C~ue{&q(ei7%>?6$~n6*=*laPdzrjDQ(I(3J2gw-U*IFU=l`!R2KfI7 zVJ0%`iHPEcD(otUb)-1xk`#p?dUpZ&4{+J$uR1&;Cq4kDe%@6 z{-6=GQ21}!?dI^&T{vT3dGX{{t{SpCD;LZ*eq7OW8TC&aa;}ybQ8S4y%h6X>67B*# z`P}YT?wQPQf4KE!PH70e0=t$SWoW?5?D`elm716GTT8-!I|0UWJVt4LZMb&B7XBMm zy$%9OV7$k*@dg(zdad7F?O~h~Zcs=)JdbCE>RwjSG9e0b5jtSEu_^Mh>C&yBGVfCv z7W7YN)ja7!%5(3K$XK@5Hm}BtWp?k_ zOv^jXLyq;5qz}FjUUgG+uALF>Y%BJ=ey%?fkhz$5j>z@^@VW6?D< z@SqTIf&AUUSgADv=@qE{9e}{=aX>8UJIRiflDx4F3@yXz$fd_C?1KAC+CQYXEAS+P zC1tid2qdoFma{!uqp)#ba{e2OE7xKbllf=^-UUJHRZxkMop@g{-`brnfcN65<+R}* z5oS>QBiDnubeP1NCXUz1N!AFyAV~y$ePDlaBO^lDf;89J?0*WVgWbHmWd=Ln41(k~ z%FO7u<=(%8HV(^uMHN5w@IIrKNO;Qycob2eg7IcOko!21O1r$n-|cUyQW3RIM+}^D z7IoJS%>W-I+*^Ii6m|Ddx#}u&pPXik_5#YIA2u(P$U9FS<=bE~c}0@ijxMwXX>Vm2 zh=?BZHk=9f@Ice9g=E{$C7ixej*s8JwBz7x9%9^MKGQ>(H@4>2&|i;&sxvhC(ay&h z*q1K(cNSruC`#HCqHg4JMx#sY(hDs%|IQ8dUPQW&TgT+f=E}PPWfKr4V75xT9J)~~ zD%gK`;e=wtNi(*dnmCj>l|0=jK*;S^WBsM$#hUD~KoSbK$az=!O5pQ5WN0=<%(JNKitA@rtfRxs}+l#H)lrEss!j z@#!Q6N*v#G`SMaIvU;Jj6Sb-=oo)Nx`3Ok-7D6lcOX=l~LmQZMEvYV_&@BU^`r-;H zrr%;VR_Z+8JPsP>j}4fu%RGqRD2Y%`R@NB=m%rT_EOG(2-;Snl9b zwD)`(qO-_yb8cWywQN6nK-ALO&_`)8Z~+Q~#bsmUGua*FitF}dggOAVKSR@EicB&>UiG+@1U}Y=u)L`%hL%)Pnz_DlKzgy zv{iA-9ZcmNQ2vo(dEV|9J3YTD^uFhThTcRu?tcc!`h_Gt%R?#Bl%Kgk6y7)?bFYvW zFBylYN&<$qt~7ptTQ*-KM-3^fe^7pWG!!sQym_AG&hfn~X-)GA%N0ikSxSk!xc4A+^30`6?uaq!;;_yFiq)X#;|uCW zo!a-!zzOd&CaN;9qEYE24UWk;CNL0;k{dcvDbRU4Fgdsvq5`aprq11{=9QlO6`gjj zfTUjS^me&jv}Nfsy5?_0jhk+OXn(>vUwW@XdUrY#(+WLUK_%Y?;Bhh4vUS=1io5on z>WzdHHW7LVr6{DWT$aWh@Yfvr*GNP@$bm}VlH8Xh8vLT(8tqNz=`zE_atfu?S;JC( zl30)E3(cM{T?Cj_TaP7;pg;Y6Cj%o}AUoHdsSoShUC&^&H`y}G8J@Q^i&tso0-yF; zfbJ9jW4^!Z*Uv{L;>)@sCTCZMn;+QUX~X?B$w6AK-E{ECn?;w)2drUR+vR9*;WyjF z{_I0e`z@qiN5^ zc3C|yvp9RmfZ-v8>4v3`1wV}Dd5dI$s~j?JL(j6mE@&jNNebtTU;J&M{gS)zNPM1o zy5LWy*eNA#Txkq}=cTS$`{=oF`rP<>;dsNp{Hb2)E7#YgHwkG6eXc(npD7D}_Eq@E zwLXXs2e3LeYN1;497Z7V!!f%o^5ez%GCr@P-0E|PMq9HSF6Z>%X-d=-JVL*vW=b35 zbkLUVdK?)LIn&oyoCOo;q*363MIA&8(*6;?=z*f^A`GLcF3@SIHuq+v(i_R z)nVxJ3}jnJ>^k3&jfo5)UWVtTU=r1s;U9q&rkUGa?;h&=_}r0S>onx|c)!4txSnT- zhbaY-Mq(SX$ATgh_$wA^UD5MyXJKe*>KHW+$&q@2F0r20sGC*25g?8JxyO3z5$FjO z*SP{-tjaTyd=)+s-DbzrpjQ=1QA;yqS@-sgsH1MTKT#^1|KgNUT~>X;$rmTTKj{LF z9`}{^(>MmDZ~BItJd0)FL@sxo-Bq*4mydl_#|MP8LMt0KKlufkuw^g0Pdt&l<#c}T z^EdB5a-+HDXpI}Tb|3t2EmC|~p4wB;EucqTFGbIvz|1h=jGo;HI zX65+W;RJC3X8H0rw#jT7+CPx zVA;Og&&d)nsI^mrTI`3me5BVRxzjnoU3lt&A#kcQ4QynsJn*@|ejj)PSQv*SoZndx`0tk6?t4IBQIybC+NRvqp!>xUW z%KcA>ThB2>`xsK$>}<~`>sGJG++KRb)-z(I6=P}#e&j!SZ(`FSs?X8wS`NH};RQB5 zR_=lGlRe7W1HS5O6bs)qD4-+lP_}v#s^$@3(<*3VFp6!haeF_Q5lPh@}{W@+a!W!y~sF^>{dZ+jvfr_p=q&O}Y z|5}U9>#8~$`=VxdvRTHz<#GDX^I&E;Z~8af>1#9sq9M{5H+w1!gfMPC9rH{15x+B- z&j!{hR8v&SQyBBN!PX3i06H-yVvZF?R_69cWeuxu#Vd&2>tFY{x{pVzuD(oS3UGn> zG0zmt``O(!7~jhyEbG1hc(qw`_+?Al#tMQ^msekOI;nTiQC6e-XXW-<+NP_(XY_LG zG-qSZ9q=gmvBi%@prY;e9(C@Ah9~}Hq-XA4pvQ}!H|?ebs}h1c=UAJS9V8uIIF>4e z&|XmQ;lL+f6=nQj;h*!}LujnvW-E~V%ab&Hq*n`d)2k>0gp_eD_TjYnSa)+*<7xBP zUSm^^PqiV5{tlBnPrhlH+#FmwZzVln_z;8r<;3h6?taR5rfv3jYoJK8^RlSw<&V?2 z1S*GSWQL5}mn?k@P3Xg179rgT{lJQrNqW@V90szLD_?X{@2s?e`G(^9)!sJ;l%oK# z<$LCxrc)Vcyecyohq%`I$o~_c#(V{LOQc3mKgH=yW1$4F50+uh1i!l*J~-t9ud%ay zi5(>iCv2$!PR46!*Q5ph8&@}=K5X}vC_+^O87fzTy{21F&j+Mi&Z%iT2d~0Hkg-Dj zrh@s>ExRA@PA+nZ&(%u`^X|uma)|HAp5N|-5IYW@VqyZsjE4A^a((X8(x=QtVlBn> zj$T(-B(+b51&ismjyP4gsK-4Xx&6FC7j+H( z=3RPz3`W~(>^NUwIAt|c!5~E(t5ia{ga*w=-3;+rkTvGYx^vR3Kg_8EAAP6}Jg^FS zpz`68CuUtmI+jr3^(cY9uxKUUp^T7AnqVZGz#J-Gw^@EQ5zh)3^xyjZQtSOn^I(nh zzJuclAmJXqSc7C~^}M6FNSf2u&}_QxKqts*GVI@ru-`D7QFt{w{`s&MR2H>7KM~9| zX%hi@#edx3U17E1a<2T2iLnf72DGQTIy0l=4v!_pTiAbSO88%IMBz(IL$fn#*y^-F zd`vpI?V;=8sG6)MdAMoDe5FI+v%ha}MHH~u5I{U>SKjL2pgIJUj8FaA<;Tow+*K5# z{D3hzmR8u@Cp1_W>a>1-a8xBDTm3puS#1nxon*E{c{)R9xV>q|(b=%34($X%EU zzJ;>FXh{r{I@BqGa^o|ewLF@8!{%Sk!n4sFvmi7a4TLL&dT3$;}ap09d8>gSa$(P|y3jAu1me}$gsEL1_88KNWz)%r{d zrQ=N(0@t#+^I?1Z8@-~Wk?8L{UL1VPp$N?<*cUTIfQ58!L}l9+Qe z+qfhaTSwBj#5VKa{}5)G;IXBVaO&511DC%%4zass_vEgKJi|%cJex6|!K-&=MBqhy zV({N_Lmff@9dazS(SYD{Yp5-bk`P2;J*c1Gt@QL*rc0QN${;&Ed zi!B3lm1c18<|TH+K|YTbw@dIbhM?8|LAOgpE*&HI;kOev8&9 z#am3a4(-$lcH6y${+rs8(6g>2@Q?(?Gv} zM;kdV^j+XWmL?EY-0(}gm=HVXY0%raA1AMI;m8=*#ba%mqMJDseza7qv{6v&)TOor zV%;+6|CR(%o}7VO7$pcGpq+O98fr0_q{QsqO7%tH$)qwv_!WrVQ-|N>2kSG zg(0Nvp1%9ny(Z0Lx8G7#j26{XT9zI7LBb&MK0;2`*aC`*w{FO>@u!fseR@wbew({DC+vd1qnf;7isnp$FN)tfQ@QG zlxZjzc(?cGWRGuWXob9M##=c?yACAA?p#a8$2{f$x)8Vf?tVIO1TKHG7_Nu|AV6v` z=c42Qjf$Gr`byDS()tRF4Og6y%Z6J{P_28$#qh0n%1`2T43}-sUA0?$l^5lC2j-p< z)xTCK^)rd1QMT`In?hX+hf^DHJ@LUfgpUlxe$>{(EWh<_*)qpX8NTa^ju42p2tpo2 zwVBFjnR77jOk-J42VXZd|I=qgZLv$#r;{kB2 zx5He2$A*X#HCuD(8&=0Ew+IQ4Hy7fbIqyyTu~6ryt#sl4tx8)7gm$;J&Mkse=QSS!?y?ND!8Jhfq_C;dSsFHHH)Tb;b17YPy12r~30h zlY4TWR)Ri719`H;o~U+$RCbgsqU`a|N%FqyOhn`iuv5`x<_ad4T|gj znXJa(wUu+=<(ow0bM>G%6C7b4vlO0@%N??#YL9iAX>-g_%ieE$Be^0>{u!e*h2kyP zjFRo0b_=CtIT`DJ#kKY#lp{`JTHY+9+)$#Slw1s#2%zGDP8TaAymKb=dnzImeXdb* zhr9-6dMdl_KChD!;GIZ?0Yd??OjY;EmC{Md!S# z(F*0YvtY=Sp^LsH#!IY({cm$S&3%}uTokxieQvF+pO`QiU#5`EabjXic!4?gFKGG% z`ZXW%5RmGkYmNcc#&bVQ`sRri-M^l_;l)YJyyx&0YF^6EmavOh+<8Q4hATrnIKvWe zO*{OumGW#Yr+)B<@9_WEHfCau;Bcgtf)fwUFM9Nxziynr&lX(D?E9%v;m$$WlHgV# zVIB9$mxpq*t>HeLW>Pkg{d=2l(uj-qtwSZw3CNK59w(*j|FwW)Yd!a$1v z;{Bm#%eZ>k9^IHl2C6(V_ogkP)+#M;q=ZpK_4miEcXNlqVrdxA>iq$YQH4VlL&$f< z%9@=fWILo8*N!AMojkNuFV&rJQ_yS0F~RXnvUk-{L+WKC3JX3zdn@Du57s2-z@Gp3 zYJ8@WX-)Gp#>kjw0cPD`qt48Ghpd2R)!5Jm#HpuhZpe6tX=kuV%3OEnZXh<|PbiJX zLF;al<&AFl!%Pg9&>Hl;VB0rdn7?}|B6`GQrtxJT(J&=vQ?z?^uy}?y?%Qt3Xe<EiB;U0^9vO}&t3E1F64ZVdNYuysXqTZ zvVn%QwP5sPMqGma4ml74J)%YRny`e(MDr`a3R+kw5Iac_whi)dQ+mpN+q_rd{9!1o zN^@`n`|f^N?Pb~k0r5RY(0Je0KikK(f|LAmjt}iNBIhwcW3^tNB-1|3$WA@ibsMR0 zq9yrWect+*@~wnF&gZ*R7tm5);TR6=zBfFP(dmAfk$pJcq?>7r3Ivo^=H#idJYC>+ zi~Wv)+4W4anC))YaWEhC9XX>(4$Qmk<9T@b&SZ?dwn<-9FEV`HlbV zK6yt)zt`N}b?Nz1DT?KqY)Drc9x6Vn9n^d$lwrPu3EFEb`g?by7wEvEVKVjH(_Vgp ztuv2jMtn&Qi6!S7A9`$`k;YBUwea(HX9rXVZXMtB2F$vucZnL5d26WCd)_ATvMhh) z&*_CV9HnSBL>#)0D*H^k{+4qu_{#2J4sUZB0mx}>Zz3fkuKNpOtF2B$)#*0*dCn3l zPJNyP@5f(0`ixWqZa>(3;!(5=8{QvMDC7dHr>5l#;LgHV54bt$QNjw>MEEYehlw;P zRwG~eFf6h1xqvHKsa}_~#1h{x%G2vJ?h-hTv%tbX2oLob?O0j|6$&qGRo=vJ*i=rc zw6%~@_Nvrfdy2ki8$da#%}O}k@Z47SCJ26hB38dcM6)Y_Vbll8`@y4Pb8vvtoc5e) zAId3?ay`fO2`{(j2A}lXYPtt@()ZnZyf703$3{X&hSjdM8>I?1#Rvu;(+$S8%7-p< z-Cpt1`&dJ>Y|75`+;hIS@;RoDlX8`^;my*?D)IgM!zuv%r3@)yvRkOv9Z=4Web;O>k;y(T zWkmCcadBrh_|wLUB(4HD5hf0;Sc#RV`S^ex1dkTyP*!r+rL60y}e9)ksZrE^+0f^H_Fl~ZpZ zmjOGDke;u!L1F?gB=~hG=PmYfHF@TqfX2E_N}x1Eas zrJ~Ai=7RJr#$Adz$^b|b>lEg_urPzyfFdBN3{D58f1#}M5eJu*&yujC_bk||vG=B~ zX_lEzqsKSd38hIG&UvqSH8Y?g1cW$CAr8v*)yFuG1 z-t^bIu-Y_{f?()1@96sk5UB;|_z7PR?iFC&8#fr#CvnFkOe3DJ3SCho=@4q0m!>XH zeiyodv3wEZ%b23ncF1*f*`eJ_dYe^Jc>i%$30p9`&ufFtn>E2U@7FRuSNEVpctfs- z1T&wCoTdEr(rso@dP^OSQf0KK7e zTuFJTg7PtplYv_QJ)S2XsG%NMmD2}B!A2hW7HKgD(HUXS9UY_(=p8)?7tdIAPaoxd zJ6sk$Z1ER05 zGVPDS6UXG=W*3DmS8hI`;v+XchbfejKAh;P*4)$oi7?+b6c5QUoKF|rkvkqqS^?## zZ$4-vM}T!wyw3XH^OTiCv}*5-J%0nv&pp(R-}NQp**z{`JL;vA&#cFDZ77#a>cXW! zmBep5-T>t6xl;JY_nI&75gs)=<&Iq7D~ zcIk%3jeo5FlJvUiblaudXtMjD1qJ3Yt|>aX9BH~?CQg3<9Z>GC3o@U|GzQXCSiZd! z=m?b9kd1)8UxZUpTacP#=0+T2FxEtCK6J`rb)(iNkqSP|K}citK$u_DT#9?Lj6wU4 z_NVu4u5;yXvpW7WBtwSXs>47uL;(8d9c{PBkq3co1%q4ryy@ma*#8Jm=0kDc`KG9fy}u8+eGUEg~$NScv%+RkS6{NT|EfD$zr7 z(i1pjOnRn0E|9F51aW?@@o4`Zbn>bGL2nb=nf~N~$Y1pi&@@BfuhsLmyL#7sb)#{v z2RD2g0z?KNTAOMz#cq*48C&~qwfSwm49eG6mrvP(rhoHn`1B}zS!#Mb*nX?zmSfAN z{!+v8)G3d~x(5f}SO1lf*{>eMcr?#JGS6VSI%?lb?%zkFHZ||(&Ric{Zew_h>Ygd4 zQu%;E@uPnM_q`;Ck>6#FPt=aV^aJhnEo4)ez(}n5ttW5H--0hXmEo`&v6#arK|2)Z z3rZEFPwBr$$fw-$4Bi^AcL#DIkAL;@9b9I<)S85Aj7(t>F<#Ps4Mi-zGR$#QIPWn$ zaF~sXj__rlexA){wA43~I)EzKV*KcJ=KBPYt~eZ!QLd?7%iP=k5mIcH89zEqaDnReeQT* z%J&@-3|MC=E`^sHL|RFSq*fC0WbWQSvJO<_l?c6(78O5FeiegfKz*|ns!B8OYXz7J zf}YMK1r?RE6tK;3H1E7yn}uN7fZ3PQGJ^`F9!+4iD+uhNF`c+!eNwTRL_f()qEnym zd-s>$64kKZ#q{8Sw&AiR1rFz_7-v^&1 zYV-n9tG)|_xWNE#S#hqJDU1pf*u3o&n7dUNV$5f5v}7o&W8f0!^)xxhQ$|EeK2i1c z9z&hlc;WTAkM@fRN}FzYGn>Jo@Br4P-ua`4(jP&KwPVayF#?{>`tNt{%9(Lpf8CCY zby?HC8{P2uZi#x26$7(bw_fXAhnICv4MmI#Zz!em1192f^DgXQXTNro6_ATs@o4!} zB3qzbR7(8xuI2NF>c7`v(pt_BR#` z+cP&kGC{GST`j6yFImGav9E$YATN%Ewj74Pk8-tlaieSd=WP%8W}wFDcQ>OGg6jI+$+YlO~E;l zx-{4eT;b;)2a(#0mpoBKY&s!(FKZkp?VlQkX7vtx1m|{2v*};~0j>_SQp*n?V+D?_ z6+OR&^@!R?40=C36F{rC;d|`l#q1DZrgh{PjvCW)goM&d3u)}W*iMZXz!&fYk}13{IQlm4@rX@uM|b&w?jY7EhWNp>F~YKOC^wy1%hzoBq966T49ed?zOiD~uCG%h{LN21wJ6 zjm@Cb<-TjJ>vA(scjH&4BtnwXa5kn`t$MYDRo=Mg0Y%DME)#<5xxuG7>QP9x5sTf-Bcqr8g(q?5G8 ze;A+p{wOHv9Ex1lT&u{fKQ3DUuPh)q1fsmLPLd~zAARoZ&`UY3C$eq(6yyxxa=)_R zOrAAA$$loVs^_k1E}$swY3fBQx8MHfHISBPwoU zl_594R_qwCvrfd@e@~+uI4SsU@U>HgT{^AMGwWC|d*+R{xNsl+QF25}JiSVd!j7I_ zF2SQ%8FQb=s9-|J*&FDMKHhg-Sowp*P0Y1$!P#T504uCZ#&WrlD|nT+>Uv*ysOq&) zJn(%++J0*dk$1q!7tm+xz6G!=*jJc3`CrqXU!k-W%7l41HMhwjLg(n0Yc)emp(?vM zDZCb>LPnGxd+odbL(y5sHTAY(TtGlUK%{db3M$f_6AXTefQm}DGP--PLrAxZGy{=P zx|@*$C5FUCZ!lnV=LYQM{qvl^pU*kZecj*dx+L_IM>U*p_ofdxm5lnH2GT3!48!km zXcykYt1h_j@I(w(|5Ur{5V9$V4E~o^x{Kdw?(IcV%ILO>zdt9BJ{Sk6q^4krJTtu$ zF>k<;`#J5JRaXJOfVUSsI~HBO#6iXbhj#~lBjo2ZC7J7n%(O0QcH6>9tX90uMBc$8x8e17zxPBhB=gs%)=U{p$YF+EE&H~YO! zw^r~?am@6~ypUe+mnHym1XR$NHLFT!oj5+6!@ZHXq!O1qc&xCc0LDg-n#uzAvYl8TX9G8Z<2am9f}_4dBkvpsrT`qme>`sGIhr4RB)6?Y(^a`bDt z0_F_aJ$kv5o$$~=UiAxl88EaTBO_CKI-0nF>n_H2C$stvc`qD4(5>^-H?STd4nThm z_j^PXK`XDu0ZHo@-+ap|!#VDwY44cdA9iho7^p~!J!u6G`cZLY*G9G+Jmq8>GsIEOqq_8^LV{q8zhrdDVil@aM|zeQa2vQ~x<0bGgg_nJ}O+iKf6yLIeie3aCL z@1ZzgeGF*W2790$j?X5#@E%$^$Zl~x8+?imH0+%LI6gyh4BW!o#>aTYOAD46=f#EV zEcl9;P3c_K&CLFQvW>jz+S~TxdON2N2xW&(O25lYqb|*^7hQtA6h(qewOiEd4qZyA z+ASEb5wpjGyvHuX?})3BZuhc#y(S!YF4)t%j>QwYq9;Ldx`8FS)+X+hI%A+`hg#ZH zm1GIvrU7Vd=)YI%oC{nZ+qn&C`#q_MF{&$yVQv-M9xdLYDzrj#k7K_Mj|X1t4o@8s ztns@)t^Q41E$OxLp+X^LYT{&Vy`BnXYX3=xnx%pAYenh?19>yPs64nh#~(1$V-|&n zFGK^xR*zZX)NnZA%aB06G6mtCS^b?dxdJ6XH{6-0*5Mz`Z(gpA4hUa0oprI>la8s2 z1=O&ADf3qzBU8aDQ(!?^TyQy!F!y-b$@|7%$?=p#&1+$GtI@JoN?sv!*tYTjq%V%g zFSR_oatY;V(iOj8*uq&pqrIZxX?VkjLQ-}10=oZwAjs>!R!asIl)Ej zr@4<6%)Fxl2WAr}BiOA4+BKJxzMoWO@`M7 zD|rv1)o*VVwa=xUY`9!+>$nl2T0)Rq?#$KKT`9OFuVVL2g58VW;AU8|yCoTY`-6Ik zZK~0ufAI5w;B8S$Kp`~oD1Ev^Lr?X;T)6; z&U*e@oU=6t#aai_=bQeIY9p*2pwgvqdr5^omkiI`lrefSm>=jnV99ZR%ZA^6N^3!R zf{?PhtExgP!eNygNFns}Ty6>i6RVKn3HYWwq`l;Ljn*i6~nBn!HF^1 zbVu26;~_dSGi6wdLO-)OCc9j9j8oJ>u1nh#Wan0LsxUQ0jS6Ug~#*Vvfq_CL!10iaQqh^h{r{IT~>rNrXqb%A;+&Ur^j3tgOa_d2;2%Y?^>3{ z#K7?EVxC3E4^=dbq9Y-G?5Bl-10F8uNabp;nY5)1a4a}$Qge(2Q2pDeU{(HCDr>*# zO3V5r@!sIWsISOVwzk=;L_J(v5l`-Xx+S(Rdx7;Z8Tg55xV_~={ySBuDBe}RkePK% z(W1{$GebVPYEUUcsKbF;*_kdVh`B}^`D@S6mUpbsBNrCy5^ne4PDi9Eg5o1R?cRr< ztb?RWON+4ysIwP9X?F5)igR;9!Pg)7yIPkaw}7p$$l0+zs?toptxBJBG`nW@N%xTq zhx|gL+|VQ}vKVC@JryxF$qM&4tv1K&i`F9o<1h_3@nf9zALj(&T{r!5q-R)cEh99v zW-i)B-JkX;{%M&n1Phq8dhsh2*wmLTN_-w{eh?l~iQWLx&;&GRJ-d?2W(Gl^-;Xru z;TQe&;(KQHUzX&ho9>Vv?fs-d!Qv^WBM;)EuL$+*K1Sr*K4F8T%z6ZQQg)lx=KX{? zHLo1;5B!-LV&yu?OBP#+njREMZ>}$o+D{K2!?CIKc9*J{3OA(O1?4SPj~!%7!ur44c9qFM%mbmK1?7d6|9RH1^^1fqy5%%H&JmryV zs<3X^xtpk1N#1%-YA;XC4ouk72}3M#oa-#he?~_)$3qB;zxQRYDLjwN%~G6argORh z%rh!n+}fx0`*rP5@=_Pv_>@iM|4vdkq7|Ox#P=D&{-tc0U-Anz=i6RyCV{;nE2c^u z5X5~bq>&9bKqj~TP{~dy6WXL8)bE`aBPKQf)o44<#MDoM(K%4jh(mrKm$z6FZRsmKsC~+^&^IU?{OpSg^`|7{ImX; zTB(Ug2d(e6D~8!|kW{X3qaBK1)K^pAwyf*~e=WvWi_`7|isjdmDe=S&?0dDF3k}{r z+6{5sC-ZsxUXMJCer1}^lPoVdw_>JPxYP_8e6D&7Dpt7jzTP&Ur8*E>IzKpk0x%bl zvV0dsyny_}gH;dRsp@F89{KJRKm-0GdcG$6Y3mVu6FhKm%VvFIa=RF%8*4CPVr)D?( z^4i?rm^T*HPxpz(jv`d%Ah0)x8jz$9tj%jC##2AK!HRA_fB>Q1Dt~vNNdBe>3e)=1 zc(?QMreJg1$ev7q_qe{F$}2fx)|6#$|3T!9orF}3Lf81E%Gj%wWyuLhojfEPKwgbb z9!r4VpBN*L0~N($P7kPs?!fz%z_dZ;>{c7k9;@CDBLH9KXK<(1H?FyA3D`)Jcyr(p zjmnG7m%|lah-6o%9Co7go09*hp2W5ecPK*r?0OZM_LO;p7`3mr!NRdbiuJP9p_XG9 zdNSNYp>_#`)&u5#ML@aA7#XcH76+S$bg4Fa6u+qK+1^e;$UbjTrM+kMSNzo&htL{5 zOIV`=y{z{OCXNlw=H`S66onYa9>W!I$e9W*Gz43BO~prR=39H?+^nYDejt&dJ*ZHA zRq}>I(6+Ez=erp}H)|fp*y$hGplnY9cX_*nl({AE2QhM+HDGLab!zh@fLie`z4f!W z&<_Wada7zte92l}nQFU^UlE_uf>WG*TWSg27x=J^Ka%rM31{n?UMt5=n+_jG1LGCE z=q->3E^WI4u(}PpanQQ2N>vV}ECae(T*W1ArPWkhRE{GqKlBOL!uwd1dgsg+dBPN! zPHg@|r7VP#fRth20_|tZ*VNUc`2)*01I~IeXou z8~-4)71xVWCr8NCN71rxULTkHkRy5h#2a^R1z;jG29B+H+Wi`|Tj+?+36s^ci_Z`#dEq(L1=>MB8{D=T2+ve$}~DZTaVO6(8#ZdEP!kaGB`PVRxMYmUVqq zZ!uAGrUR$=n2{~w*!I3}gGIdjM4n4kSssK>_{-Nx3NZ_`PCG%y7Ny>bO?%5n-|)+< z&{gcRgH_Bs7qo8_tnf7MeNBmY#qm#SZV<%5RPBk)Wf#(uqFPmk7hTkZcJIOomc{&L z$rJLX=T)VSe|d{hmy!IXLujL1dBypHV`cWL(PhH-!#!_3F=1 zd<|56CdL|r)teJUlqr_ib}D?N3*4Nl4n+a9+>%n}Y`;wG(wJR0OXMsk?8^*C0iC#g7PD~{_fj2yG6wGIA zQBLQBm@VbYnP#AgLgkK8z*}oZkB-JfkXqlb~XK_u$dQ7}5QwnpkFGscB)pC2H!Y$JhH=pSsDx+ef}lw5=};dZ&w~ z%7-Tl*6u`^mR~t~O}zGPeU^TfjkEd@$`=!90KHdT2>F-?o1iao=^3yKH)&kaRRG(a zH3?2oS@JYk(K?uc``k);Lq;_i9*!BkU3Aafmz1 z7oTPGv$DQr{A)Z;kCUB-^NmU0sfLI1&(ya)8T{`r1AD1giQnD6Qy{`mQ__5AXa|gg z(;^BUqU?v~rAKEcjqV4C|8Bl(0Zqd)pBoKSD>;ljNrpK*gD1$3Pn;ox8&CSrefMX! zA9ZX8#d%2A(N(CFdZyH@_3mmezKwm$b8-E|=OtWsXU8Ne>*9(U|0i9x56=US;B(QA zzlU^v>*QE<@@;1~QUUY*m=uXFuG#;n_WUSx-$$h!#*HcA8fb=YMVbqlo%b1R0C)9o z5_2pwJDcB?S?VJDi8Qq@ZydcxzP9$81?MvE=e+hvs>z96{W>UFVJy`3WXxpAOBX*f=FGv z#(3-Gc6o#5f*v8s0#Xh^p(WSO?)3(}gV+~FxcVZR_FCXlDLK6+ zl%Z~-b$<`{O9aSQYEyg_PsDaaRTsc#!0AkAqeYXaTBM`*O(m^Kxf6S27R{IjIzl~YXQ)8{V zZ}K~$e6YT;W!tr*AA9$7THnws9E(u$#JSO-O)9^Ci29uqvyvH&#L)@Q7N=`UvXAvr zs}@*ze90HF?{VlB!6~ZEYW5S~oIWXf<2y!VyBbaxnD?(SA#rwe5DDC}-wQh4TJpqI zwcd)&<7oR4%T&U*5vtkQ@SnMg+J}?#*LoR>0u5^MnZYMzuUYyrR@cFm;h&+a{ zY@Ee4k8OU%ctIVJYQ|k|x9_zq?J_!f<5$+u!VQFdL?AC7GZf0?pk1 zbf02SZG`Q!v(@@#=37`l3P-fwbHTis3)6nViuh*k>9F^g{2$v!RBz{u`oC0(?^1Co z4_Zd$J9e3Np%UNfmVXWkU>I*{=V`A5HM1&TW&+EQJ}ermC)_;Ju-Wj8uAS}EgX!pi z0N&b#C(&@Uz|eMDE4$hJt& zIXyi1q$9{%`jq)VI=&Z!(fC56HF5x?S3vM99|`U|E8Opj+QZrzw8a7 zK>25$tg~XQr)TZF4ZtGbiKj`YP6weoyy|48n!ke87jk8+hrCS}vD)c)dp<@WfEJB@ zq>d29-0X0=pTLUnjP5VxQKr|$GFZak971r*B>}ytG;|^E;$Vc zRVPm)id!PNY3Y9KZ19W2p831tC?M6qTJW9c|VE+eLwzOkbVt#LptDk{LpbZ@l-&lqmH1t2a z5NvR%ahDqwkq8DZT&A{d5eh*^q9y-=Te z_i&yl(-eoidb;@5XC3KMpH1HzSRcuM|2eIsdKH4b9v^n5?bO~==&|@nkzlBLrA^UD z(V>07)&q!41aW(ju8rpH8cC=Q0xSB!i$gV6wE87_gh_M` z@=%P*jG3h&^&f5On&cmz^PyIMLi(vfu@_R*;qDx5Bl)bi(FpsAP|pqNZmH)Pt!$`Q z2cYhu*4H_NCoN;j2d#amH3@W32)cduey%00N1-7BwBk3=!@0;8Yzt$rrc zq;Gu>HnKZ9CI}BZD@B`xL9JSrx_A}fPEPdXe(FVBBC+$H}vWa$wh|La)oDG zzKC*Sg-1j6$-&+X&s(tsLfQdKbl>Q+17w@cg z-O0t(ZPpC2%-*2uPq)rMU4V@$0p1hFn`laF9tT6j79JB@s3PjxBgk(Nuh5LS7af0q zEFTyEf0ci7gXLV3Bb%hV5;I>dJ>IA?4pHPEqQ?tt{5)33K*K&ZDtQn-kHr0%ni%kT zNa6O)4OYDT)javXIfXdV{#vcMq`KMYU-j%Jh4F?RRgT)#-Y?2(dMLlB-`zZqHu$Z+ zRQrLBupqdwjrP$8Mgj7ckIzIkm81x;=p_q86B(ZB^e|uYlXyXK-UIrhgg!%B2=glG z)9#KpHd5d8U^?F^VnzZTP+;f6wXIZo(Vh=W7Tpo(Deh^KZ!T=3m)z!p4^kS-GEBmQ zq3YzTXABkCvCxEzMHQ*aHUW3|K>srY6GF1AX=lJFAk=T&a3R0XJZ`417kJL({$sa_ zrV*p3djNlp0QX9vpMz7vj%)|ccHbPT<^4-qRdiuFe%vB+1q5qXx^V>MeBkDp2hR8H zDCxRUxrVf)sf@+VhPQnfh)R=fdEO$t6Y`Y-HNR|m!x_~~I5$?1en=5pjeT#FV-2$j zC2yL=fSrx^Ey`o|cKYBBfU$*Oypc1T-mR9$l;+sGM#SwKmCaee59F?qn^q z;ef)3u11X`?Xw9&;PrZ(WP^gxWXn#8x))cE^aVX^D9(G}so2_=<1j=*IdNkoo7I-7 z2oc3kn~X@DNj)Jqq!Ds?lyU zQL6j+Vtpg5Ihw_FsAHmT56bPH#CTwC)oOrl{v6L}%k`uz79)U3C~&J~Qhc-EW*PT! zansI;VZ|dF`2G&~e)xUa^M#wzzVo7IeY-Bzmc9a(a^DN?Tcihz)^_Oe`%pv(`7lj` z_wDD7{e+laSKG-n#I@=K3*O7NYnk$%{ckELFZaSS->vE-%p@OrnSM$<-y`imL{7m& z$QAT07)s;YGS8$TxqFvOlQ-&Ntb&Irj}GPh++||mq^cS>$W++vZ!M+!neRY z;5dLWAHdD_@c#0VpI|rcC_g;a7b`KASAbDI8VQpeMeX&Y$ifzh(T=>`g}4aw9&I$%PBx?2GOTJV+lw0fdQ*ghUGYd;Ifmaf||RW9&N=$Cchbp%5gEM1zX znt8>E9Czj%U$$`X!vw?&Pcpjw|Cn(q8wzXTf`(M5l|5*BNUO)l{uK1Eu!1o?CaPi* z42jbM$k7Rip~m_w4-SW0_(uq?mF|CS7Oh?*kkP{|S!I$>&DB@>ZnInx)+6kGo&fvb z?1u*t4qswu?TL*O$_$Bm42Q>eh0R`jC6wSFW$R8If{uJS__woZpLgBcNTE=Y?G?t| zcd6oMMR|pL4ATyJ{S!8#RSxri*)d}J{Jp}H<_AmPNu)kazSXcxbO8o}S$}T1FcQu5 zmuRBFJxyhCgZHP=^J}2new^Ho&;n*1++^njoozgSOP$3OU9T+x36|{3KgMRr-1I}; zYCtEbpXDd?jx2LSHa!D1qz^TT3N+ zFGy>HWFPwhcwO1qq{AQi@q|)vo6XsK+6%&ZI}SY64$$$|SR)4o+u$+68Vjbs4Tz{=;B3!Cw_hQ7bK4Ao@<|t6+K1lp^ zvz)ugFy{Q$;oqNr!?n6Poe{Vb;wct!JWvvN)P^&Wd5z zgT&)2MU$%Y%17A!`l%ZVSo_R+R1CjT$epobyosA!um`j`RnusLV82};-YtfH-tFeL zrNey8C&IeUSkCB789_ZYX@?@NE6u zmpNcA-OSgThWA#8G&fO8s%2$D`Nt-`K9LjE^(j!!z-T|p&^(-e&!e{v${P~6Q;6bI ze)WdHLtJ<@c78ki>dbn(oy2=`TqE5tm)fCt(>Z;)7*=2jGdHk1_NAiRwiEiv9eR4>mcKWIScrt=@_nEOzTyu0{b+`noh z^%8G1$+t>&2viwwH-8MGUaas-G(CQ-96M%XqL-_VkzF353)IyohDf&u65Mo)Z>^|IX^uf}N$ z-L?Y0yLF(mO3yDIPsD>Zdx#>8{oR&%Pj_x6cUyQC=s5}1%=&#a{#j{VKb&%xpR@fR zkaGd$4iSoDr;jr8*g90K{!`_1)!+U1mWsqIYeU8aNV`&#wz6&#@f8*B2Udkct;=-5 z39FNMdvJAc`SS6Kp-yE|C8ozjAA(XHCUtjn(M$HF@8#_Ugc7mD7a(D;4*~!j4b2;* zKu3=Xt6*i?qCN%EwCJ;P*kbDYm;i`cF3agiw`_8%-KUXv0rt5B&z{z2Am#3QiXGlu ze(6iJRFL>82yT-ZT{L@(>1sEQRU{0e>QMy#shZK^jIo<<{;2`3$2gV*c)9+R5k02E#n^;C2Tl!o$nZ}OF(59rT>jC1Mu0vG~=IUqCbcXXDe5GzmMbFdnBDZ zn1AN7Y19)D-pV%WCBx!x7-8r_?e|l2rLd#5uWkA0A2l@2;WHwk72uYN*C@L+GG*l? zpsky%aPw_P^7EtrCN*;Pld)9(sFn%iOu&7<+Er9Ecflv zD*V}`!7dNDpA1QJVLuq#AOp5d0P)wK&*!emE05^hB}{oWcSC1~4f7ld6-lor-zNdN znbbQ~iF5Y|pA(x|-9PQbuT1YMBrc1XFkQx40wd_i{i4`W{j-3?vKOifJlWs64t} z#73#;>4zlTpAGx`Ch?Rq6^JUN&iIAZUoJnXw#MJx(&qNJ1p^ve+VH;S4(4zw*`8{#X?vsR7!uD2n%$c=$nHAS2lfVEqE zc|_M^Tu;tV_H%0)rgIRGlF+>1%o>X>C_h+4MYso7e+W$t>hCs6=In*xMw=}M+Ft3` zTM2d_3Zj%^aelpLujtl|J}0b1`P{^U(#6mqN?_mXWdP9WGu1gM=vQT3%5le0u7=Qi zPCt>Q=g88_a$>v)65zLCvD$j)N*C?*ue@8tM~7HIou2J~7S7vU1W{lLVmi_Gv#$7L zJ-}=Rs=mNJ!|N?fvzr03z}y|j-wQjGYMVFBU!+_3&1jg9$B`MgbR=LUEhncTK6)m;7aD!+wwd1&G;HG z%aYl7-yMXPV_cMe__jM{zUy=%Sl4|>n%V>Jdj8*H*y?~fua$J8zYZ)!sc#&@s&>Kv z@h%&xe5}GrWMC@q^j~tt~{}#R=OWEZ&v{=FFDSr7zGPw&DZaflmx#kLvkXv`y zoqFe|Pc&JUy@x3&dNZu-4*HHH*+1<+kljUY?^j1Je?Qmd-gi)NFw+C_n3VIPmvPdI zp>)U>V@vcHBFOa!XY@Cl{C)vWhOBs{OwG)I8tXSSuACwLNwf?r*TU#R6}* z^MGR{HC)TrW^t%jmAlS#IdqxZkocUZwVm^qz&12FPtqr_(urT1K&H>EXC4w+r>tZW zBL)h~4U88rnlH|!Qv=iW4~_(w8TH5L4?ZNU-BVj z21V-MRBo@e>y-J>{9r+DUitknGWbO4g|OM4hDmXEDBs&GYr1PKph>LE$gpNg;yx`0 zpflZLa-aY$|Dvd<6455TJ;=_pwJmjvr7MNQki9d#jc#JbicCPb}fI3{4PL994H+zno0t^acO}{ z)7FHO#2J6NS-XLYhi77oGfJOnCqv2X(}%Ka**gXvWSig1dpbvU;X!VXUs2i?G|=`% zeSY#w*VliKlssJAu2xhTNR^Q~K3rqUg5*-T=zuVsyE4=&jEme>pvvw2=C~43Y8UnA ztAqDX)by~Hw`=?#FGII&jdB;jq)VSX5-0$A2FWQnKhlCZT(p8IB48J>94ayp2$^vF zz8GPHUw z2xxIh@YAi_GQh0S0OUkNve*=ke2bT+A{R$_1t?IgTX64D?&JIZ1SW@7te-B)kqi)i9wr3OVK4tbUbn+`BO- za&$23c2YibtaC89Os!OoX$6>k zT=udm6ls8rEGjSsI3wo->VwRrZQGd0&k4SzQe0$g6m$qZ2YS7J5(LS9!X(=(Cf(^0 z-B8+=4?sSjd0VUR-`a2dLEzgq?-W@3ES{rF=OBFM+&;+}5?_hEV&X$b`hNVH!87KE zK(E?3BSu}qyQKRh6AOO<;V0fQx6JzaM=DF$f5SGSx3A=JHvVp}<{^+jfqB_t`h3hA zJ#1b?P<{F;yw%;2EtJR-1bpM1mY4OQDV#HPhp4r-t#!Xw37edwaS3M7%{(#OITR;%OuvMW`W~sbzWShWxvX;#aZu1A?>0_n`cu`Duz6wQKH>Cgg&o670uVs`Y(UQp#bB zbeU|x7+@I`aXp+tdZ*bTex4AluLt9?*c{YnL7i2@N-7JIleTU==w!-UML-vq{>g{s!ycZ^<9QNiK0X4jT+J*Ec06U1AG zSR`Kd#Jb`rDdUTKof|~X;H;t(sZdJhjb&J;-H|LZ!e={v?z2-KSlWNNo8lAHc2>Q8 zY{NkB`^`ENyWxKmCgBkrBu?jc%DQQ|e+A!6X{MQ~Kcr73es48!*mvFItJ-xqV?h6> z){zWZqg)Oh0W!;1aSor6u980B(v^SZxY=h5)H(DWhf34OficI48!`VpMa9a;#caQg zwyL87xkdjKJ|FONv>LMbrC^YVvPj5eg5_O8sOByAom`W*)*m}9tTi{wS)^Ra6KWIp z4})pDyd3Bd9*$l-zNH3NDpo_leeyM<6hAIuPqB0nWhggxQs@5HXfI%p7c+Hees(Ej z;ceL#8e$JyrnruaYFI3I3b}<7=Q4c!MZ&4kk2WFyAl?jlTU%eKyO+WjH5*d#gYLI2 zbW$YVm|#7zY)tTklwaqJ2heZ32>bJ>oWN^GFSZRo@Aggol8)7(^3^jKr96ds#tC-n zh>MFB)pqt4Hzf$$MZRSQ!<4l8Q~{Mo8C6g5rG3e+Gne> zul9(m^Wk$Ai+H?R2H>7DNTO8+w%u!|55ErO=as?-wxiXmL$G6reXp`lL$$q890lsK zS(@oc=ZdFdON#sL*GukLHs7Dqr{KcbZUz`mV;`YKHX%lBpM7v|CXMi66%TQr}S*Fdvq* zbA)>FwY|DG(uMHHy!+5GtpmPxEiUHn+;Po6KIQIgH+e8gK(Z|R?efy&A46P(gCAg# z^KjWv-k!~X!nF;~$yKQXVr_fNklSx_lvf_v-Lvw(-v;qFH#YA4tG3d;&%FIM1ON{ z5LDMaIVG*$uj2r$C^g(SVW*fgL(u1mblz;(ddk7CT^9o$2>;(1HQ}vSwS{yToQj!| z@IsX^qh?X@brs4n5sCVoqiaMi%i0*IN}T|plSwM-vCQ+HdvtJX@!3~@kD6l{vcoDV*NLu=iOUTXFkz48Bg6gZbrzg zSJ+|_O?BeOwz2==KQ%FB9E(TkPbY4Ajr7&o{}`e>eKE`!7{cAV3$LbC(07Uz?{0Qj zXWM5kPIX7o;&xbxf;bNAI7%z}a-EaGPYq;6hnBlegqv`)BUS0VrTYKlAi1XS-d?5H zZIuHawhI9l{&i<`+dyobH`0YdSo)XRmhz-S-w@|^G_@y)k|fcaB1onc1`-cFKZ++W zBbLqsGRY-J>2gBOniD!`C)I1lhf4^^A?Bpz@6H)*7gB4*kZ0xJ&48^Ra5Eu||8oBrUpSsJl4rHH3AFEB+tfjU4&>snW9rC8M6==aWjE z2)xp7Zzc@-->^FpkER~(uQteX>yijwu4V4B?Qxg4R>q?tpQwpcC6n3ZMDTN9h|s zFH9j^S8*Wi8gCnrmGfS-zB*PNouqvqy-GQ%dZp0C3Z1~R?*;N5`la8K-J)tisH!wG zuSXc~s%&rk5rA6UasG5^WiB0tW~nt=wY>E0-_*jYZvlIz3tZJPm1gv{t;h3pCwI30 zr9{l|SU531p@)Pj08eMrH|lMm_d#TZCQKVNRP;d^A3{woX_Ue9vxKvzDLZ!7X04p5 zbha5;|5q~7tE-`IA2TPF{rBjL+_m{^+&~<4LQ~p!*!=E*t+s9Y9pPLS*0LGx4!??z zPW>U(IY4qpvx>W@3HHg)h!+=T3s?ksgLAF+J4qjgU|8#V#0-7xC%{z?oEQrBt|F@o zc8EMf>AUT=vA3D7r($E{6Njq=!Jqg_I|IiUnZdVi%tMb+i%hL7<~r*ivnS5GCQ4Ak zOLa}R-Yt1_Ht`h$$_#28;wAG$b$b&lP+=q@tkYYgPq{-Q$=lXq0tyM|x-3j5 zPnlZ4_rX_G8&>pU0yK~6Z}#5smXa9d>KIrH-o@GlRw#JjBZu9iP3ahp>YExkho zf_q>wSCpM@sR<{Z2=C<2DlUx>bLMM9=kARR<^-N!RS*{~FZGAzV(*2T8dh&5jtpJi z<9XBTDF#EOZygy}qA+ndr?W_nV1dDh5HQqRS(!c(L} zVp>pew=A(*a7Ji~W(u>VP))<}O`50w%)*SLp&M2uWbERF&$Mr{PQ@SC=Qz~?q zrC4B~yN*(bF@A@7HV5NJ$t37hzEN-vyQn(aXhNj@k#9~%q-Q9fD+5G@85>eE|7aY> zL7`t-ITu-kb1`of^dt3pZAvcrpiXAzP1L+w=#lGwlr}#Scuy*? z3FqxAJqYZ61u&m1tyera3OdQ^+7}$~Bb}a>FSq{RX?+fG&3Z&`zt{TeU6qjX4l7RL zTcCxC8DLkMvphF-$GU5x)&=HMv#e1GSsd$A{uz`oD$FXwDSM>lA#5WqGUZT}eUN*$ zqXE4W*CsDf9rkR@3=?if8Zl>uan?Zqg>w#v9(9&&kjFu4n9i50etGj27ms*dU|;OOis}q zJA+;mb6XqI3GY9+*8O=d(mKrCR(}9mqXqA|5Isg6%Xt`ET7S`d?OzqnF9&k^n{p0? zdL;r|`LVh~nP>SVIzyRf(shM$=i(or<#4v*;Jl@Vt$F;` zvHOQ)2$*Yke;ZZ1wGZ$)^Y1y=G_-zR>4{eFGsZo2lWt)SH%#ZL-#B2OB=I?BI9&8G zWgH)_9f5f!9!Z`1@_?9`FqiimE$h&ez`O;64>+@7ZKvNtSFB;wAH;f`*aKI_E_3Zi zX;qi)$xn8k<=39T>y_@qKLEd%-xo#tbU$z8v~fs$C+(c`wrM<4Z$5W4oz>jEjB6Tn>N&<|oW2FUBdz`>@X~F3lw7vV%LY1F zgd5k^8T7`e^-uLz&=b|y;zI=X!lyowz!x=Esw-(6S~_Ot+rNNm9)0z8I&w4W5y zQau@Z+QA3W{m}R7sg|tCIcRQAJfp0BHs|^H585_qOK9FNbGyB+BM)^^GWb;10-8SA zjBW7@>{q~=hsL9>uNlFo@ez0|(Sw-yU9QpBf4N^|yv?jrFWaZ{z8Yr9UNU)njFR}; zPPfnl0=bQ+VWlrKD?-taO>lgAKIOiel&7!$bIHOzULgSHST!4OmSl@ei zFTxifb|=@eWr>gh<#^rZC!t+8*9#+m2XIOD7B ze`TLra><1L6fv=C{eDP)Mn-qOXL1k9&`@Wy|G3TW_4H1)m%{O%dw^=9H3(3iP_z6h?*iO<%T zxScb8G5Bspy&AcD{Zqc-Uq`{GqWGjUe?2U6A7$S0sO-t&(r;({VfbzlPqxPQjr;H) z-wB+C>{0pRx6AtTh`a3qmo3JDp+Bu)AE1pI7tk+xB(7xUKBzMPG1d1VZ?E{p zL{3HI?X!J1kY~ZZO7c-1fk&5|6;%6#+~4zs=b}D&#zg_wVdZIzXK(t{9)Mrxe@|>z z-a}v)6N%wtF83qWEsE~(oY>ai{7m!Eb5KwE?fpG!+$cZb-X+#8+Ss}86xUwSM^B8# zapH&2`?3nh?g@I2#k}A-+wSfo(#J`WtCs3CjKjoUW#~7Z0**bR^ZyVpQ*#2kC?@lp zdw0Zr+Xl=g@(t*iNyhPY_gMF^f8ku{R|Ln6_u*b)?Rys~H28<`- zUe9}M5&I38i{st%z-cwx#$D+RhR7ec-)T10Vja;ZgHF*r%80$Ke8W zxB!=Y0_=|*TW|3EI9rhBP^;e%QqqWm?e`iwME3iH} zCXA|&oDWC8vO0mjz-n^(1)cKzdd8mYvau?Oi>6oB8N^Go$gCsA_JVIdjoXbzyfpSP z;vL~WV}(_2S%?j0=^TZyW-@v2-m-oo{c>KHfV)9%%kn-B#@fq&v+aVoavIy#e{2H%qc--}0akxU z@nW}DXxmmUVX6MTiV#NPS-%3MX+89uFK&$(AU5o1XwqM^BrOy@bid61J-DFA7PIFPI4l|)q%PRI99N*OgLphx*7uR^PA~OHq90HZc^vT1>J??@DdxtUEL?X4%?k8eAkH=bmqz%E z{2uH|9un1Gr}qjdZdb{H3;9~VkT2;-oEnB^9~{xgmU;KUQFmTMzgOg0rwQ`zHl~R^ zRsNNp!p^gNe;4G0&15v+3;?5ShxV_90KE&1Lp_JMdmldeO1{+Ot~Fo;QN zLSy{`FODAHxH08}g`c6@2GHj*q7|IMkUs@&5o;5h-?ca<-679UVO)3jOgbxghC?hm zi>l7cg%}X+1Mnji#l%8mMD~hhG&JEE3h#-$5b-e==YD=00k*XfR}#>FT{@JlBmKHt zu#0AO1OmeJ>I}?3a&9&a}!V0AatI2=&Jx80)zRV{+H~J4~*$x zjt74KXJpofky)=?U(2<9l;XVJ5_h97gX@8OS|d`L50!Y83f-k*{z#Q4Dv060@9CV6 zqn&PnmlCz9Yzy?5rc~>4cNtvvtkDNeroekWv5$gl4E*o&X++snUOPwe7}2_ zmJbLbH&fPtKO%>jS$Q5;+{cMmGoCo!rag$U4r!TX?hAJPYyJIOdBfP`xe+`StFpRy zKOF%+*Ps5ym+ub<8-K1t;`yow`>%4l_siV+-JrH#@!A&L`6r!oLFc@Ps>Fwi*oe^(~J!oGM9ZU4;i{b5{}oM+eTfan+IbHfF`f#Bhm zLr_Y!}}*(KNVNX*p9)FIt{JR61VBRZ_zrvOj)v~fY07W%A)>kO_u8v#D*C=w@4Y|6E&}_(l zC&%Tg)e~e7eI{qE;exdM9OUI%Ip7R&j?lI&fTWH^fE`hEyX+#U_ z#v~aXi@eW};W;SqDHs!U z?t^6J|ETKU_nf zQC6Fy1@}9|q=CR%Q{8EDWX^KL_|o@epEB@B>Hg%K@jAdi=WfHXgBs9RHK?rI^}|A( z4nLNyCVXX|P^K-2CK0m-+);Eb~q>k;9Mx`m< zA8Sx0ed+pj&sS?O?6+`#xG_y^sGs3jaK0Go<}KvUj7_wGyF`vL;We|obj}C8FXUfJ z{AIhi&+eW5&R%Za|9!Vxd$8it~oGO4M8; zem#roiQHq1xLw8rfZuiqh|6*xEo%E{$$xos=GH9eLz{(EgV+JT@8jrR-XG$u#P6Pf zb9W5=NG+=SBaV=GM)#1P0FAB~I7)5O0e~3OVVre%>Dgu)2WN|(6Th3y!$1F!TFSZl z3Vmn&!D}Wnza?>f;q{Osy0VVOMO-^n`=lBN)Z2q$gP(8w&YEy;f4}qmKG!4=`+qo# z1DR-bTtyK;<^6{_9)5+p$&4x6OvoL+L{;3YGfhtldsZRFicR3&el6l$pq@PS zySVS6p2+of-3}nWCt7}oy4W-#9)EDcTPaSYTs`F6mxkJ7-cE>hA$X7VTwd0Wh#Zra z-=rJ?UPtGJF%78?QQ9RrFHHm2vZ#S3=XQ>2i;(~F!a-E+pC)+Ti`=(3zj1$F{~f}% ztXU`Tl=#HSmEj(~P%FCS8Fl;lp6A1ymz~n}?F?_nHJtESKP7UA*!6{|aery~SHwx+ zJHz~j|*-Pr{ea?se(|y}WMD&!0D)J(NR+ zIw0hEQpgjs?)`cFkA0m24v$?pT-^NZm$*TAzobI0#DsPQ~x6fcFM+ zdOxn{5QyJ`-zB``V)sjDakXy*=@s9!Ev|XKfol-*?V!0OFtPvm*fv8Cxa$Dt(TCpX zP2hJo%waxCye{W)x<=9jOjfv#m-QX%u$qD2U2~iTy1ps&OJP5GbARySF07$nsWnF9 z@mk=}pW1K^;eIfX>+@Lr+@V)9Cx9zt^#ccG30Y>v5oXAFsBUcz{24PqGISG^m!;%cY*Nqt8(h zH_5JJvCcpaXZll}P1?8(o_j;Vok435{P>=CX$`3uW-R)6#wzaamFK8d$YCaXP1W41 zJcGMqjyJ5W_J$46-O~4I8e#8EpLnrQ)48fRw~OEFo#&JMUG=Oo^9Y~o zwd_1flcl@4Ax;@asKY~gh1xqF>GRhq^mZyPSL(qL8lPu9IPb*%i@qO;w?3EY7zjBV zQFt~kB1d`tynjTzO7>7YJMrIo{&26Kt?{y#JsAig0#*{2U>OJ^e-h8E`I<#Ibe~|av*a%q`qWyit;MX^4<-4j3*+zT*g!2*=o433 z#x25#L%p4F;fSH`p}l++`o_{;PpU5XQ)z;nZ`rt9_7F64`2bM|(0`YEQ)Ns7XNYx} zjWmB4becq5K3dere`oyWUah9^ZfJ|&&xeugVfbt@c;VP;cnQ^?eD~}kcZA++iM7aY z=VPNibMtTBo=YY}Pu`plcMoU_I_wh<=W|Ke;vLj4i`MNup+{e?nXuj|Ev z9aH`T&fS;)p!*Ni^b}N`4dHSL{~Qb(e}{f|2XSs}TSurtP%Xhx90t~#WAa*T_AAks z!Wsx76`y-fs^gT|I^zHNsNCe}$?wk-`|y|f8VDkPQ~V7*U*m7kYaxhv1?;3FxKdAV z@2R|v3*cHF^49k&%1t^IV>B3N-eUw9b>^pg36Wa_@_R`wWcz}bLtlyRDP$*Cu~6dt#sX`F%~^b&xs1ID15e@VJo zvewssO8VnU>p7@)kz*>c(`nQsTs_qVGaSPB%me*e3+I#11mdB3XTD0Vks|H_Er+#= z{Qk7y8A@W1WE-2-1Juw%#En~z&TUGLl;`7~Zc?bGxZ{m%BNQvQEna z9u~qzS%Pyt!}}uoE?xpZ6npPP>(yO`aL!UJpMP$~b=iKy?mPa=PRT!Zn-rFZl0&UDIu z`Tg_!SD3qi@BPE;@FnxSCE8q*?0DSHIS5=33+A=+?v(vL{xTnH9{Wzbj=zHs?+@Xo z)N&PHV^uU(AG^0SKELi&E#LgLA6MtO&F}gIxtSZsRm3&7z1N?R!$F_0z>iUw^9w%G z@%8FGMp?XMssEtmg|g?uQGP%7c`+YQ*p?-tjmj#@A8 zB6r4fU+?`3^?=s7|9Y{*Tn6`CbfC|8ITk#C%czRKh3~KT?aF!{>3?N=W7_Y3 z9wv5p>KR=N^cS6BZ5uX!A*T^<6Z`uX^LSqRzFN`(*2>f#8)xU0diF9cbFaRe_|86F zJu16yY?BLT_(5_4iX8UR+WaJ};sUirXg$jQbnfZiAQz(4GqOZ4{4#+)2VU>MwE+Ad zx?W9uyx)KDxZpdKX?wxnZ^%&|b6hSWmYYToFPFG;K;tA0yum(ysdm?iJzn>+oG_f* zC+rDmej#5ZB)f$b*yT}{N zfj6w@JNusRp2DGju}-Wv`CDjnowR@MYsq&{OLgAGJl~`%XS#6T3ddz<>u`MjcaE=+ zM*(7$ze68Gk=5@rC`tm`3&oVO#}=$ptL{)&as= z4Cm?s@9>R($5Uziw!83~CviQ+sQEq7n1;3iG5Me78~nQ%{t7)ueD)l_zX$!2UnzRf zFZ-Q;1ow#W?G#o;efFQ;(wN50X$|v^?ZsN>gwODmtdIj|^9ymKE%@@YaUl z0N?{rId|%775(k-_a)$>Ya$lk>2@K*k&fq-j6rdKU4P|u^&UU1hSEmN;2i23I2Mw7 z3jQwo1yblKID}s9l-SlB`oagp#>3fn7(XBS(>3Af-6h#bjei$$h^@S)&Y0?D+52d^ zYip55j!n#&9YZg{xGj*nwotw6s>Chn!V{ z1B!cp5TD^3qP{@P#lD$KfXAqt^F^-qOI-L~F{ePd>Z`sujb-`~93X;?B~&OCF$~{{TJycj2lp{(G0$;fZ<@ zQt(aIftgl_%d`gm(NSvhEXQy?)M%lH;ZnVS_f5V}-&?&VcRFa{~9$7VQ;pvJ;?Z+@AP?Szo-9dO+)(g z8K1J<*iR^@2XWREb*$igYrca^P%1(TK8ss7f}u!?)6t}ySs6J z)tLt7X7|D4q`gyEuE{0N>iPF?qTfZFjbkmYxiEIZ9)spF_MR{oDc6p}TAnWvHL=7V zeXGxH8nw7;ZF-(K4~#?D)ML)~#xwLh=kbi#A8D&(pUW`_A3n_2zA&$!!PhPxE9Gln z7|TBa8^JbRVIjhki#@R#_CVPdt&diJe)iA$!91qJ@j%0+^Jm`Rs~)58GtZgEaE98g zXURS0SqJjVzJrfs>U{7L)2?uUjElg12{sIPnOBgz(eDR5sg7+`$mc@rs;)&X_NVG+ zReBCn;;9BdCdFh^C4F!Pz%tt6iM5MwG^ReW}7}SX9ngQ+t80Jc<3PZ{QW*T^Yirszwu_j{PK4% z_~s&a)H1LS`OIIi>GNQjR%l-NOe7p4_}JTt4?O9_GPd zjD98X4ib+TK>gTs(`a^oczn2GKM=O~{?I?gRn!Hb9_Be!e+v_5E;f_8*XQc#W6pBnTZ@JMoei=HZ9?L7jaW+37qH`$F_iXY^zd(=rX0A^Lt4 zt8$OJ2mQW>=g3a~hL|m`B*&=g9(qkpe?*==jd_6jpun&0ykLG3zu%ZmeAFmN3;DCO zT=C;WP?umO2p4~W7cSv?jaQ#}@+mgxDNT)aXim8g9x&**?>7_hS8yJl)w8Q!YQeWd z^U%!LDxC9P6KdUC7&oCCxM4gz%_-+$P{*8j-d1{tr_ zK0FWPSfiD@4VLclf}bpG@w!L@JM=8z;)5E_R$`28YaM^jE}j9hzeKM+09HV~-@UF) z3%R5J5pxbcp~SGu9F29-df2Og?^7CSG7o`uChpPVGjgEi+bP#3G;p$^%Tp=Y3` zH{kkQyN=w@o>95Lzn|x!lssK{+`bYtopA{6+=hLq2Z_ z7eID+8rcT&I|hKU#oPfrcXEtOw7(bQ;%v_!=3o|)*@qhJ9-pc0oO&i|i<=YAt@f(W z`vZSG8S$2$&EUKRT!(#qr{0lzttH0f1J_2RV;+mJEAaOlYO3)*%CzsXD1 zpS#CBfM+TDu-d+ovEe)OF3SJ4&T=nmPg^DLt=^{~NA>Q!LCJG{hTMU&otN_mm#_IF zatPV@K-YrQKUaAIlWe2PIk2rf*0zCv|MGu?{LX3&b^H0Fy;$q{fh&B~+F2v7(LVd) zt=4#}huPkUmd3TE_?iT#ggXD>d||z9;8^x*)6nENgmj$lP}^{60bXu295xo9=N;@g}x(kcS(N?^;@dWyZJi@M!$PzXH4e^8Z>bU zhDE&l)!L3Na)_AoXZ-Kov*SPSfX@s1&HC11)@wH6&T6`h4gT+CtwOc6JJdBJeJjX! zh3in$b7Q|m<^nL*wXKuNI}jEruJ(WTftgaCA+z>6N^g|n1+7neEH$7-%o%3!%vckN z+l|fB@FT~c$E?I}5V_hLFrGVz(Z+3e7TM`(V(EEV#tygj9IV#A#Cce)_d)vHRQm?| z&|kBEz9#N#V=B)*tOfN?+C1d<4e69(okQxj;WZ=R4s#nu0P&4E721^)d$oUn1J8A% zRl(m)&{BFtF1$01H05(}{B+Op1o)cnHf}qtaaY@GbuJjAW9VDP1oz&Z(Ai5%YhloD zPqjqC3frLPCh>0@^s$=?52wemQs#- z*D^R@8H0+o7p4RY2WxdI=z6&vd z-Q5F^aNylt7)Mc`vnpVNgO!VV3vt!ibMBGs_{@+wgaDT@DhMKfoqbTHTs!wT{eSkp ztv^xq$@&A$#VE!-?PWBA8e_K_LAVphhziF4Hfr?KzrU(_j+`_m-JQ&vtG(MG!gH$A zsKa^P?iz;g+*5ofYNNyH2x7xUh&hv0QLR#&BZxclFoN_vx#!NGsF7~IagXYm zGlHHs%;gR3X4d9(GPp=X`bipQ2e=@1pnl?8@`TleEDCIkEeqygJ%-8S-&->sxv0nXGx<0`3@_;WV zA2ct|-25K}1E>Dh|8zT5{Jx7Z-%#$ay9&3H;D_peYhU`(sn2Dep4O1;=VAX&_3{Y3 zpt|=CA{If;jmh)Vw@+B!3j?`jmLv7#d0%I?lyNNF%tv|G{B>WCa&lm&-t6b$`^4?p zg*_+0?>d`8uZTW=p@DXrX;47^AIFAs_Ob6s-cHvU{L6g@bu4*LP^$Mb=*EYI)N`oD zu2W}!`BLZ^R&^9Gzanfn|83o;#2O3bF-1M__F4Ys3TwiTj{U-(>3wzfnivbE_jW*a zf2f;Ym$x+W`xE$nmJh;nMw`&7me`+a>{)Tuzo^eS{s%RX9EM9_I9DI=4X~D}w+QVH zasMA!Zp~a1e;CgRQ_nf`hvf4wB*vC$vz%ss(+$+nNw@}v0gS~Zs zM?b;51@=#QR$~c$Zpiv#z4{RBWCSu&vci*ityD zl=aYGGYsOlPgL#`0Y3!TE5IVio&*+ugTlESMSe2c@>ti!7`XS6vH?7&{ALcRk@EX* z_H9bOo699-N*yTDU&6c<%O7FCEc8L|yjC^xsZKexSFGou)7ythd}92uYA>768}kj~ zG8T1oW(NZc{5$*TIV3q2FKK#r zs>YRP*;q%$_cOwn#r_O$A)Xc1`6Q34K7Bv;?iJsSFnTvHzvMbWJjkyEFviRd-o1+4 zDqUZnXYnK6(Kjm0ZV_)Y)aCm8yqXT?kZ%bRs7Vt?cOUtksb^{C@bi}8hC97@rsPV1 zZPi2lRz0b<%c;C}oh*yPlr zn}GFvg1iLvPSe^U94OmQgkxbjF!B31$1;}`Grl)^x7G%(`H!M+r($GqUJ#o)_4e=% z;dFrYIoR8wQ)jqgJm2`7K`s_@sK`s*UjPTEd1TM5j^By%$GZvCbP%V1Od4by@2uV* z*CoRUIMscap#B)*zeDs{+Dx+?dv|djaGWVm2L4P%Y8lac>f>=x)<1CfbKQjIO6y@F zyIy0OY58~#e80v{@Nv<2)7)V$wT}1=-+EQ@pIm1UG1ss^cb)^h^n)l^uK>GVg*goY z?*-U+e#WeA^xI$@Aw~>;9l&K^Z!+1zPOpkN6PUAca}gwse{sx9@JuZK%6kCVn47D< zL%B7|FV_K6^6WbGHOp!8bL9mz<1x3}*8D%IhfHG}d28$$+>lnn1LVnLHQ%1I2gWiM zIB=XT`rj~EnH*fY;)%PvuA{Tf}(NATi`d|dsNY-7s zPk`Uyc(Civ+T8d1O<35C*2ApeNih~zanxxo-rVaod=>aPDn~u){bAiB3Fe#=r@v^L zPpuo3hh__S+$Z9&!Tg_6N%#i4UQIk-h)}EuI5o0woX3Vx6;i@c^;^r1?j_VO@Do@P{CtW&Z~M zu>g;n_Z}a4uBhB27w99vJj1#u<}`UN^v-|<7f&O%=9 zI+x={9)fStc?J4C$Y|sW3r_8g*sv?Z=KQEBn+B6 zZm#8j^Bp*sB<3z;y{XIjA|RIPfhNOHyBF)9Fd#o_^L#IkC*+Jf6Q$H83W5 zzeBlbtFh{(v@qX}pWx%vcx$g@X9oLr+T35JRUxsKPfBb9`Bl#Ve?a>?_2r7VCdK7o zVZR7)O$n@E?|8H89dG8yU(pJ7J<7Mz8nlRiLxk~f@Vx-_SvXtv0pwCswFS?JDK}y@ zPQ)X;0^9Hl>jmp@6Bv^%<1Shka(pfW^QD-l zztYz=V(?uKewHs=`Q5mT+eOaRB^V0$t=eFdo_pKwJzVFP6|Gs+9+1CP?z7A59xu>; zz?ga)raQe+G@@S!R}e*kF;{C3Iv-17vmDIL?l-(I&+n9KE%0;hD z;{Zy|uCKtKATeW-6G1&cH7-VF?@0|v&6Z1lOj+mZwfwVh{)009gAuPwCEkhW=D6+m zE%QVgIfO^@61y_vd;w7Z10Bdkv*UMv>=WA9Po!m~zSo;`yCvVv_Y)vTDENeB4%Dfy zgcdc`sF^Q2iqZG!Jm}-!8SMkBvGt9x{vMqmPq}AGyMkjQUfgl@;2WbWZE?x?7|K|b zXj{p#8J*7aXcPC9$e*{vZAhFENubsfu=nLXnnUV+bz1J!rhFR<>fw2AV6{#R;W zy^V9cSi@9bcQV#uJpPJC82PHyZ(e1#xrsayK@DyAskl%5ugyiK_x;cArw`aiAJJET zZ4XMxbA5swonmhWg}zeBHD96kB=(ch!8c;S^+~QN<;?t8J(zDiCFLHVFEflU=r`W@ z4&o&9YT0l0RmM&ga!YT`W%TfW87|Yq9{R@X#;vVbyw|My7W!55#|rRZFdr9dC(S*a z>loAUIVav0(A3?AhFK4gA3)P`fjURcog(hP5>mZ|^?Sf?9nyS{OU@l7@=X@u$Y`%~ zjYSi%X|fK}vC)pXPP|1;i^PT;_CK7%G(@gx$jj7Y;^D#fl({RVCPkQkDux}J5;qOw z0D~L}t^?{7Ml2oZkVD?@j^}e=e=s{laU8R;@N5cJQTxr=bg=7b{G-6RfCu}2zoI2p%mh8q_0qW&VRV7~>}Xvh;tep873Ax8c8Gm1Qamh;j$WntXgaq^fnDih^hlsr~B-_39Qz03T(f^(#X>yhon zGM!2Fy4CqQzpkO%V`mfg!3FEl2F?r2-KA=>5;uJ_A13y*3pJu+M#HIw_($X)YpnXn zas05;`dzBq|4heqb|&7;C$vv_o#dopkEftvQeF7ik1q3vh$HTQgwYe@&u4u{vCKo( z5xdCV4X_|v-)Q_xd|mc|xSS@qu06mQTXEzApRhS-iv7&iDX)bFN7lPfcu`yv#n-;O z?`A3YU+>g6=y!r+9`CKxr6eo@@z!>&2>Q=q9Jb!ni~SbokqXkWH27$W4-DrRa>pKL zh!xEl)9C}lx;Ku0GvjsdI;=Ji8o|K*2fSa@$KUp*&8=UHUwEwsdn0RrWwb#v_z~v( zN~}_WO&cg{*DlQ&%KCIR$9rY1y5O1qKBhC@ZxB9kk$>>{>($yhspzr5xnef=&`+4k z7Yci*`nb~9_|5?q=KxLMzJ6qUXq&*;%6}_;(yl>Ve~3qaPbRFUh;`UV;MEyMied3{ z@AG&1t?4=5ng<+D2g^&jRb3;Bg0@)=t*AYl4wilm&K2Utz;pJfa$3te@ys3|FXRZ~ zW8(L&ciV&R(7v6!Q@kE**^+#<>uP6X{EaNmHfOS-eh>`x?h9*p2=;#;Gwmx_<+5m>p?Y0#Pub=5udKc+j8B; z)AOac+aBcGW)9SNkXvO3XLXQpow;7Da_CY_V((Ia_`KiID082pr4 zASvAp?7xanZf&p`J9W&(x(?(+1{)vn($HJ!G^&B|TJN`-J8v3@^K7PGfA=ahwn(Sc z-2PgBKL3!sK8T0^FD*_`ILEYDAgRZ!c6w!9I^Py_4P~rWsGm^A1(dq>5-fK7s@CBp zhJ>GSX4Q3G`PkE3ee9XG37oPsEPnNuXE6n|KPFlpO1zUc=WVSw5_sR3kIj98(a}Y1 zSg^am*~KvU9qL=_8GvZiht}ZmR({(eJ2@jipeKEU z(zTJ!IT*Sm@K1$amvpa+ZhVDRrU-IopX1rVDyq1x~!FdLC)jgCLp%y$xe)$HGY z$c0V(Yq0Jh_a$QBRs?o#Lp<86x!oQN>3gG7_ik=HFrV|`)HNPjtB*ZfYV4gmgR-0t zyXHYTOG1BoNiV|(X#}VDpqBuL%j6<%>Hf!@QGcX&fojO)V^0LOA9HKQuMPYUFgC^emGRhr$o&g@JO&>D^U2Q5d~9=Vp636$&S(`ZH{6d; zM1MQ|`y{v|S>J>_$8VpZ4hdt6{o3Z}ZqlOf1;^W)!IE=xJ{$+je4Fr&u}_W3YsvVJ zq96(5kdMcQX#|t~_=I)W9{I*aeA@ZX{S~lj1+lxxI~Dw0>5IsT|0EVICziZ_d1K#2 z#^012gPC|hQfn4AOy=ykPjLFN^BwbW z-=RK)r_a!Pfxn&F$C7_2eLjBoYpDGi7W7774qz7wUt+Lzo%kiMelBvcLQ~Q{dDHGX zV7w{7O z0P^^KwvdCRvo}T?1y~W#_yevxw1v|i{Qe5!9pR5so(Jj*=^PH&QOt$1oXg2KsxkHv zS~mD!^Lth!d%|a|Y~GyzjLY~hQs=qN?TExHYjK_VhI{2>5texEgyO@0yq5C9?hn<5f zRC}W($2iuM`ST4hN2%d|1cqg?#>cMj4~a3Z^zEu|dCtFIUwq3M&wFIwW*5GKZz%VW z^rh&1(*BmRW~BckKl}C{O8Y%EooI=xQ)_i^z|>7Tz5R^o9=x^gSN7e4K0!@4oM{U% zE?QN?fOyc5#{gpM6pk9|rW^-Hyl_ybc|hJY86V%wAEn+cVR(su*Edhc0`xCfynI_5 zoC1u`UDWOv0PbVUF@8{U2|Hm7eR@0>Hh65m_7_cWIH^8#Epy3iANX6)+sA(wug&Ob zfS)A$sa``TK6=#Cn!b+l^r<=_-x?0r_y$r7ew5{v(exS0^4I!WhTOHkwqF3>RFq$1 zc-51_3yFI0Wc!4F?=7_IX-uIP*#up7#8fGGh1E1TWx+hfK=Wnc1e!t=*F;{-=VLn6-(=F62j2Xs%eOL7^j)$wE+Ov2O{{uVM zKde`Avg)k{Yy1vW2b@IWQ${b%U)=I$k+YGU$oLl-GeSNjw z!fWaMd^4+2>rY4f{uH!9s+-Wf%D#_>tE^q8=Ps?+BM$pKe&Z#6ni9X9$XT(zRPg74 zkFLx3=g^;jHG8d*i8)R!&jH`<8+OG#HUJm?+&9F1%W_h&SpRHo0LEOdsm9SwhWp9N zZjRbjv!7H~UEnu9RxAFo3Vf0;v+1Z*JI$MpmVMB-v*vqv7mB_A&^*6qe)+SO_-*2v z(|LTA?=*JAokE<6E^-UKZn=%dbFz)&q+a{y=kDr%^8$K!kwc-3ZxM8=k$)jj&J3Y# zmhI2p`^G`p7d;sJ6aSo_86#aI2;TdzuK6J8t=`iYjNjM$fuH?a@Df@-UZAh0ujrjz zmdAuMBik1axyQ1;aQOQLXZumXf;@Z3L&*E=8b`sMZfY9lao8bS3^{kcmL3WF{d@Yp zue1+;Du?SIeTH|OT{1Tqm-e*q`M3mUt@1n)&LYh6t$bWkedD*jz#8~XyqxKEfjzE^tY61I=iFs& zIeys7y8X`Jyzd}1!2GKG%o6Y zk>mSFsT1gY`|NCkGmLST>RRsw*NdJ)MdREXH=q3)o|!OS5yK&H49%|Fwr~22X3$OS zoA7QFbQcH6E8TeO0ssG9NO`4 z6*)}{wK$ah1a;uhvbl{D-&Hs>S^s@lrM#lZ_g#r&DW3a4eU{Z|?>pwkFVXJEy?*)Q zP57RIet`Ks#w5diSnF*j z*c|@ucrSyq%;+vqd?)uZ`lPI$!Rygw8Voz+DrVXt6z4T6w8uP%30M6V#3rD_qvY~a z95YweZ;NeYP4PR*_JlH4*ThgkZLl3Nyo=XrTE1njf%}p0^$l5PH3yH6SZA!hgic+F zvk6}y&(6aiZ`XUXu>ck z3dVy1e(bIP86PV$~$yXC(n;*ts%yqGzs;X6~B+Qenms7+)n4-_v6N&*#sNw z#$_?SHlCMoRP!;lQ~6ibhRJas!h8ZgHZU5?8N(QagF4{WU-Kvw-7Ob%+rV%N9|F{iw6{rp&Y+?@kWd< zX__m!5KVuw*zaJPld7L`ui}d}|3m7e2ga*Oc?Wx?=5ciUEU(u;SMRUc6ZwAn=juB$ ze22U@J2RAPw7n>EK-}L~Fx20c4fEVXH2zNnka3l^%cy1T@3Jfs0YvPtu$Yj(OKn{Gj6Mvvug(!(cgtcW(=A z80?oIP8-=jM))1n4A`kp}i`xdZ@Gthrs4?028s0J<0QOWg}2(wCjZ1CKyk6y#i<9aFQZMeHN z26vEOl^Pr~)UX1dE|MIe$f=L~zZC0p47`$SB|UYXL%HF4<}WiRd}e(La6inI0e4?0 zxP|z$OPx}G=4-NfVEnRp=I~yM1LvVkf=YPwYxbe9anbT~zqxc#>wY5f{8}%@AP!sg zH~RAhdp(62E{XBP_=_0t45te4>G{(Ktiy-Mm!tC5+L3F_5#Q9Gvi;m?Mx?pL)_5Cy z(6-Qdm3Be#JDj29!O(4i=z}5d=^tsWsEBxzX?{X~BiaW7BdBn|05*>Hz0he>;uO}m z!mtJ^{*uL|zJ+nxitq*xs_xZ6;^l{$&X{^1+ULS+)jV zq@CpP$>@XMUE2B!w2mYH?g9=$p4)8~_fw~Ta=^;jPFj3g|1@&8+h_1o7x5j7I77i= z2)xUcIVBcT6>{dB>vh(y`#3B{(Q|!e16qt-c|Me?qim5$qN^U^^T;);0vq#}X z!GHfc)?eJ|?ei1Hg$lp2Vb^V|F@*C`?ae`)hCGKQPD6f{%>%Uc_?Pd4@A&tEo*$ln zf0#5Lv1eBF(95_H*NB#P6rJ}!mG2+NlO$P5_Ns)+&OFvhLJLXu=7a2UGS9fl&Prv^ z$jZ)M2N_4kIhApgad2?#bvVa4*4Ov9`yaTk$928m&)4$>V+2PH$em@j3((#|W{tlc zTJZ!m-+7^}E^>;BM+yHOF$Aqjd50KUbk>pug6Y6ELA&h7Gy z|6_IeowKJMkId+IFc+kGq+LeY{<(rRCGI8}&i}okMz?1C`lMm-UPuuj{bl&fdkZj> z{ZkI}Am&wqI)7_$R^!24l_iJM(@o&mW0qbPqm@yu+>VatRNCw;?I~UMDA}j3pioJA z+icgXZocp0-JNnnDP!s6xlH*^7iJqnAgaOaU5WV4LA}+t_fusTfe_&R`iBFmvybH3 z;WNQ(PFrZUE+K45D;-cwG{RjnQZ?DT$cDkuaqe`UChi{Rs~D^v?h;HFK)*XL@_W;% zCuc`LV+OMBB#do$SGGah2==F)}NSOD5aqevmT$t=6{oAT5 zlAV9+10&?#K~x+)jT*}8#l+LAyJ1XwM^!&<t}xDi%|E1c;$(O-heU14hnLR7w^K?}nfjQ}4LI!bSPf7P`f zUsYznazoczJ#jS#`N7JWI$cfm<7=`v==r|@;I6b5`dz+?epDXaQHv%Q%Q08!c2vAL z4M}e@%%uh^N557~Vyg{IHTO-Rj88sFm&1Gp<;9w5b;wo=eM%jBIF!NB%O>A=AN(){ z%U6YF=$z*P(;+q%)P*4^Z;&Gx&@itJbkk1*ikIImWqh&A`=#+8{AQzf5w3@1stHKr znmFa~&!^CK-u3wTYqcD^Dl?2?3Sn28hUEX~#}|epagRGyj-JoEe)$M4d8Jm76~8=~Q>EB^7TSZ@^t9^n z3W<$Yd1a;)HeLNdY844e~pA;<_ zQ8a#VibC7P14&$I^0#erO@i?I9D)UgFB>@C8VWL48wSU5=`)?o<5Aodj#mk%Wa&tE1%pr(MvF zG5}Ka=AGT~tvsh1)o|TOV5y(oG*@9S@C*sQmlwI-6LfU5zxL!R;io>~$OP89J$++q z9`&`>=onGu3T9y&;&q%6BxUOUYp9)DdV6y#?q=c)r9UAT`@<>~UeN3oT1(TDzWsaK zcfqlVR^fZq`&bSOYs8-}Uhbr()?#(UorI)3q@mDx?eC}y@1KBbU~obOD87P;DH9Mr ztLZs-%$>x4%-2%woj0@Vrmt2Q5OLr?wqDx*bwn3*)BB(0wE*u+gqf!fL3%a!n0gRL z8&c?5_Y!cYI^t4%C(H{itB1$_38B3TzbhR)6McD^E(z(|Rafp|gURVGa=*>Rnn$(? zZ!rUxCNao1!1pbIn4d44jZTptMm->>1?-0(LcMd$i)pwSxSE;V$7pl9HAO$Q5MHy| zyEODbTz}uNf`B7On&C87k8v>$*x<@x6}}2RI@Iz63-jT@iV}3ytcf_* z>c?j=5~`Vvtr1)e8wz%7GYai43Rf$;>rg&lUpjuyj#>k}j}KX4LN!;At&REmm;Ed5 z+^Bsl1l!Zb|Ah>DzR^D0PdbDR2EHiu4RaoebC(PFBBcUhIQUgyanw7#f_LZ) zn`SB(XTmKoiXg{JZ=stPka_ z!hQOydGtF{%>*ttOyY{+>kWFUXWEfR24Ua;cQcJ=CMoMB^r97?U!vBF1=X*<-SXm- z6hPcFdquJU>fKiP#+Rg#8l0|Is#`Y9x)IJAq_$2wSeubbK~&gQaA@-1**D*=oL@gt zhD-XW$>20MGiv^+h?a49Qh#3BYlLu=?5)@GzQyG;f7GL#69JJg>;G`LM?Q*DFEghyzhOWkB%& zA$TBHL{`GeEI}&f30qE;+*?1PB`=fy1TI`XnAY4(mq*^a?4s_OijX!X*~sSQ;`O|` zFnwlueO4aKouhfuq$SNEK`LERg@*Y8ssvq*Vx(4n-|qM#_~eg7f!gg+bfcedjINdV z({`o?Zb6x^o}ODz+FmaZeoio00%dB^&a5p}nzym+OX8Dib?I7tw8?M`+^b7W;;ydY zA)J$)#MShHw)EFuJCi-fz7T7;nDl|*4My72$OEJA+XV(61^Mcd-8+j>@;Vd}NX7%1 zwnqZlw#D|URQ^}3l+zNFd%uOYE7kO;=8e1TEPr>eE|JC3;_rkjya|Gh5*+S_!1r`n;JC+Vg(&&F`p^wKb z$-T#bmq7GIYT>Ui8+A*7l#Jr!N71B}lG$$!Zc*L^r-Cu4iLvM&88Po4Zk>Io^@){} zL79IyfaUnrhUSfTE|g2@8wGN)_*zDMlk`j4S0}n*^snHU*SI&r@| z*|Wj(TRM0Dcp^|zIeXmU0+3GV=K@XUU)%?g`xJgnDa~)2{EXL5hW8!I6Kg+{S8tP7 z>&N+^EF=a8>8)#aMw*BrH_9gvT$;q55x01w&%CT&7`sVz-*dmCOkF6 z{05^#r)_jD9VzflUj%y;g^mC5;E9Zlhd6|h7iMe&oQ3UPgmyj>y1CWY8%BoC-g@GJ zW+r|?YNDy7+4D}QPT&Sw_~-}_+D?Xx+LQ;)Jd~n=ahFP8wk>3RzTs5q{q6nH1-F-h zAIUi|$q6M9WXV6LOr==ePbXG5Gu!VjMF$nk*l03;Y8;+I*Wp~{2>u*$$u&(WF?S=5 zZnhTC>yqL9rr-3D_9?b*^XFPkIKLiorX4FxLg_3Jl@hpkxip!%h~Z zU-j|$AZ>Zmn`Z-F@hNqwsVvve+aEJKgw4a{R@e-=32-@(zsuhDxzw7(+R1F>AU%?* zB%sZTf}P#jR@Y|HBDoodFFrh|x`Q;_d&>sw-PCKl3I^><8*n$x&pk$3yJnXYBm|Wr zCz%A;_c9^YN8n@LIfc8u`T5{b-nAI8J?I;w@9jVZK+@lMNcNJ(}?%@O>V7!K%+1Tpk&NXh>FM|&s1>wFDqCqqMH9G-wpvG z;Q~(=@h!+bV)(|!yN;SnP080JCUNEW-GU&4J=xxCCGXC}Kv7=}X!$4mka>e5jc*j& zoWFQ~%Z}STCgk(dP@S`Je=Ics-~%SGc>rewNp+Et93oC~i{zQTcbz|7@hP0R)zL;0 zjSDwfgSRU-+t|;TRWi?Nsc9hp22>Ug^87w@65{+o4s+4ndiQ$ExUAb=YH5~N5K<$< z%leYq#DIIXY*gMdwcz`dcw&`<#Vc0tOlzPl14-?eO@p__FGfK^g`O+`3csAW^lQj> zQoDH}8+ts_%9rGN6%W?p$-8c=HS;NWa$=*oWbHD`;={EKkH=DXA_=KSTf}y?%tcLy z=JFEXMjNT11WDpGGm@0@Gl`6>$>&@OANmBZ6LRM?O}0_{S$~?P5wm+{nm8?SJ@YYzWuWdY$JzY`KS>h|)J7d>b zI&Q^IEVUq?7!unhwv2sQ2|FKoQ?;lZAJ(HG!x6+w@Yt@9Nd9dS;>C3EFsY(_HPnrv za`~Lj;q?N|7+pG*uaNs?!SspSm&eMHbN^zD_*6y2VX$0;f*atzewd(WME-sHAoYjU z%fu?~&aV@d&nF^OT)6Dh%)EcLG~_$z&&7WeSGn+R+xg$x@^Vvi(&_5SM}r8<#^QxfyWB{=#jeifr(%@kkrI5nSS&s>_k>XZcgWJ@4oPyC(Shjk@GCi;Wv!_Uj@ zpBf^5>n8Pd?!=1(u%97P*?(Q!D$A9HT;Baqt-fw@ASNgW0DP>lSTLI4)O8b`09)AlV=XiXMfW}j5m%&ZmBoShf}x>)+O3n_w3U*5?n;q(#k_23~$vnq-8yR<6KFeW_I6~r9H^wN5t91o|n_~Nc%2>dbcS%#2K$5)o#l{I&3l^_W86HMCJ4k{as-C zU5Sh$D)dz1Ka?S>Whl2pKt@QQ6TSJj z)B1N)E4i!+McnCj1s>2JXmsZPcZPUm<;}_ZD&Q1`05r3i!<-%Cc8?C~J5KtKZ6YZN zfi}z&!w;#?Vq3C#6z60UUopnkaNsjLc8WW4lmuLBue*M1BJ8!L^$|7JOqCK>2m(N@ zK`}w>Rz>osc<+#8_x4`I0~MF>=SbDzgxyizmau|uO|`y#1iZgcdO@-K2)*zAb(tC~ z&t2bY*1HW3SWAB%{*RAP8>|JR!`l$uI{?|}SeS(qF;HaNNvAs2hfzDT&+o+t@u(3- zJn<4Z60Ly7Kj+qt1!W7L$y7*c0E)(J+l^K(JJLI8$iDt|Pd(i?u`$SX6tosr37sHS_iYYUN4AU22i@ErIb-DIiznou zgEve={rPLSlUKbHb<3kEJ+A(8H%G1&|GY&t{VI5SaW4By6uV!}HQ(#@cb}-BPg`<(%G}FO0A6` z-e+x(C*6ie~Z-DIzNR!JwcqAr3+z{}m@5`k#_5z6w_ z6W@~i7WA^+#)dJVWFy20qZ8IUPvdf%%&4?+u9=9TeWv4~_hkCUVoX>k5A@irgS+`b z#_Vh&a0Zt(>2AG&uzk9zk2W$H`g#-n>IBA?_9yc%1Q@Zv#4yi=hV#FAqmcUHIXksJ zUH7%}#uZa0-Xz`9U1|ijZxZ9a8&ny_J>BK@P^wl}!FFfpp)^;Blw)E}#EJWGHrt+- z?3rkflceLrEOKLQ;C9aBi7|{5LlCe=J%5=u+&s_Qb^nwd(YByGCPX*=g;aI0D;i;m(u7RoNPpfso2CfFJ4 zC{|Lr8mx6@yOoL0e5f6;%s4mG+ag)(wqOOkcB_zQ{ZsOzeJIh@qzo%?^6$+yZ$f47 z=bsoP{F`6iAS6Fp0&mpU?jnLJ`F4oXxqc@h?X-XrccAsqCN4-jp+7F`=GOByq-#PU8XqKxz;UNCM<1CF1jyXB7hLy@r_Cj!J!G3bxm9KszSij zv1%lLm6-Sa{pE91z4f3yI;m!0SbsE7g|&d?d3JBlQEd^s@p)?k@Zon{lfmcFxuEea#!>&sS>%A8$Ks7Aw0WF%NT@ z9_3$Men;uZ+2Ntaj1lHE>cox^F;k;%6=SlwvF&NI;9ivAu}_yh=P=vcb07669i|S> zm!`{^Nc^f%%P*(V=G36yFQDg>L_l+G=3fmB#sc zKi=^7!LqtFX#InG{mbE|Ad-d(2GMZd6|MLS+Z@6| zSw^Y27dIhIaykFnj>QN~hkQMHa3R>(tSg`2i zTyw9)YwFu!Y<#^`%$nxhJMm-d7{Ocd?oO1I;nS_ugrip^2hPI?Ev}$_ z0V^Z1C_|HG=HbGu-Va%-8egKwci-{f?eV#~b@>MmDlUWAstLeZ5}WR&1L?X0zR(Hr z)fmg&_xMOxuM5xzq43M69E;KGG;f}Qss|#UQD%bZPa<;r;K5|N36}i`O+mvpp%pbz zQu4&cCb53JFgM#I5W&iA88hR#oApa8L3!zhGn21$H`~tAeAFRf;LHw6vy-oYsSUJd z%njRdx#gSl1#pJ>z_gOa$6ZE8UiDa|VS|_aOI-GOW(n>&>Pk7$u`SFMD-b&)%%(z@ zTb(ag%dirRAb#j}yz!BuhjcOKPkukol|B|85&$DeDI8~0CY_-V<8(PR*t)V!Ht4%f z>^2Pf=7J+nlVY;i^j`Qr4!c*=|~JH)dFqfQzgCixuSCke>HyVVJViwTm3?*HK& zp-~BE7pQSgz}0_3b*sit=*07_#f+xoIOkmrol}*`m1Pg9yld;E5HWJ`=x3gKzOsTJyE5uKsmFOz)~NzpD%9>}l7dS) zxU;jJeQQ6VVlw-7+7*JkA2acZECXN9R~n3oBj|Dr?M;B?h$xgYWPG^(jQLn>yHljX zuiy6LY57KxL+~4t$M(~igCpH!GZp78lo_bdEURRQxmwDLp)3rj4zySkI zyN{YkBi5LVh{k`Rv6Kf8oAs};fZpL#i%%=6*&hlS8sz)T#zs47C%f{mPQMIo5W~r@ zOmbAICi$<8WuP3ATmsh^HiU5TAQug z*wiMc>!ch*gOayQa6a zX+^tt+)phuqxV2>B}16b4IS;Tp&qoI(~9*b(p9_9s0sJZLgy>5wJm6B_sAoTi%6>%h9DLQjUAVSLk=Yhqp&{ zJ@Nm+>|>Y=e$Y++sK|seC0pi;dNJK*Ge|iU>+vP7@Tq5`#(07<%|FxM7CaAuz!{{; zm(oKRsZFBs;U;x)03&9XRMGT_tj>@-+n)XF3h}+7+Z6|d!}-P5L%k)cV^hqIH5x;9 zlr)L(?+WQpE>Ae}Y?Eivka4InA5bmtAXu!?G@sKEp`9G$ASRbL6SLuZW7Jw5C{9-C zbRnuUe1&~r!`A)UQ6=@FA0L@>@=uS#=}==FuCh>vEaM7noJ@HBv6SBp!Il}#0CfBx zqeu8^+@49(?3WYO9-er~|BRL9q^&uKsf{8QeqFA%CL5ZSf3f$5I20MAbSj_4x2MX- zoMZ>R9?=BoBvMr{R|TIpB;gu(6kL=pZ>)*?nwn=n|AHi!3cVgHzcoQdwf0BHn5wYy z_rMmd!jVAu^rPFD^&|#yh3v7ZF~=mV0c?fP$h$7)Kl0mK7IzWz!WX%rR|Vkl#%%GIpF+1Grza^+S9$mcfk0YnfP;1@X zSB?>~s!3t9uS~m7hh^>A=QIXel*3xhu{Vc%V`kcVt9~Kg$f?a)_RqV)ywSWTO#eJu zFd{xzTcC@KlkAF}A;Y&euUd+=N}G;}rP#PTZdQ0`A3#$~A2eK+>-?!cfeYrPD$Y3t3cwGgli!@X(}FHK3}(3h@1 zP}9|K7T$}NN8Sz(dJ@-MJMBuGv-BPIuL0zbh1W#ez0{%-uC-5B*d8Xu`|6$AfT|VG zG5=(tVz@sgrMvO{xWOavHScXu5PR<*+Ahn1p8p?8jNWS+}-c?jFi(MK3*+3x^s#2A5ose+uz5JdrD+c&D%L1=(GCr;2nf&r_i%VW^H^i^Z#pQ$gH6m2Iya+8Dd4y3!Xf1M^PTnjP<*al~5zi&={>H_@8@7Q0* zTLzrc-@>om9_Az83-aPd({yRSBbfz~X+VFcPkuVO_)F&`<)w7&9SZjZr=tsB+&H^e z$Sf)^6O%U-cyj{VY@&o*ITLNWzuwZGx{r@^)VP!SQkBmfQ(N2@t}gwBnE4?mfDqng3c#xunCX@!c#cCaSyZLX(a3gtZ=7EV|7edBL38d?e%g(!Y* z5U+`L8&0mq?OM}znLQti-mjB*<-cD_cvM>g;*XXZ^7W}=sqhV4pau5)%;v=25Q@62 zeVFpT?Gh|^J9{^~Hy6WP3vQjN?Wxi#H|g_tvT-Xe>W7_$yN64JDQV}n@Jf9z>oXbc zUN!V{lIn3~^}V(?ed}b!i|^RO1Z&3&FlqfbZ0q)7Z$#C3^w-8VUQ_^Cms-BeQBM-0 zcQ5;zB^a8MbbKdXq#E$!R!`{Lj;YhgzAhA-SZ#;->o(DGZ_RJ>YXYAg-10a2ayvKC z<@GT9nfrkwEI3)HWh{xyeXoKwNnK2Jt|_|p(g=;iv151jZ1Vbb3ic+8&^dt@pKt3N z9^k5SG4a-zcQ;fvK6SrS4D(gsX`|uTq8!FfQ2m>_)@&9&krNoG79++;|LVC`u*JNe z&|~8;`Ldjs65HYovizy7VjPlxX^Z1v+F|TeVGW9Yet}Hv63Zs7O{dDWzqxw$?BwcL zd04>Gy8JG&FOW>pI`Q~BHffl)<)Np!W|QGc`BRWC zxZOPv{X*J+gR(^mOK@&gIMzAIV8BR`hJjig>CSxER#E3k3Z=_${QAh4ep+o=U8@)q~!^ z%8_@C;p%i4PDqv5FSUU@93A2HUO@)Lj^8nXO9AN&RoZj49zUSKILOR7)YQ#`^V8&& zUv0}j=m(4wCh};Rjl});rk*O7d=>TLx%E2U!pBP{-a5-qPHXHZ&s9B3?!tHOlmA3J za=uRjnmNEp$glHY?RQAkGtTGtsGYn76Px4r{CS)XdIm3&{5I`po$7BR6w&na#@(zv zI3*jU3aJ96;V&1$u-2LNVi=$B9JKsXw@c_3j^%d==M=waKOt<+jWTg}1 zXV#PwY#$`YX^XufMT?|g%9LSc+~k*K%Toicg?u!*QmeA`ShMNB-^Zvd5=mmq!+ADt zLTaux?Msm8qOSOYrE1;mp~{gSX)#+dMdYCL(A@MT*${G6lK<#VZQon(3jK$Q1Hz?eD`um^KhWG(IN2R zaQJjX19}Mv#Ge>b0{{i-}Dy4O8 zLz%I2q||c)Z4L9T(qjsypG+D?A^H$5v1Mb*8TYC#@Q1UT4v-l6Fle)}orT8Rx0p3| zIGm<09dK@q;#(XQzGadcBGYLsj)2L)3d$E~sW5x$+lNr!ih1aPKPuOJuEce?m-kqY zFm=C;G*sUYS*SwQsSkkf2_@F%?dSb9D?eNsqv~YM-|qbB6WzFC#?>(-6R6+t-RJGGK}Q2O+s*KdDA!{StLSKCa&*Dwz>-)zxIc+sO$2agh7ISzVWfu?GLfVlsvEk#|f zD!cy`Lmhtnr-IH!@vanVT3tj6Q%fbPI6%IFVn1^uANM}bkgJ&LKVEtYceYJbCATTL zRXyrgKd$%;2fP=t?aIrW6Q7Ai64L1XvRrDirH&!7sU*5j_wWkU zEReYpRU#2xOv=(^qJpi7OSayvuXZdsinhL5d6yHs*|sbai$t zJBzID3L!O%8X>BI*|->2Rg#wuw~h&3UVI;_4JVGT{CscwsH9-A&2DDpBuFB!fb@uQ z%WT;Cg{IPy*4h@;hL3d-n!3dC9}u`}mD#0WTRoTkb~f4wi@A9OIe5&W!B<_xnP*^o zp|0xSzwk|@7|y9APqX}XThZU=zy6H$w91~Z)@VC>^qpbAg>lZi#2@lurmv<F}|(h$(8Pt9hQzfr#>P8PXz{EL^emG44cRTaOdjqm*jc2Tz}!-JX=5y#&?oUtmh{ z2hU4?T^q^Q9Q0(${b_@m{hn#{XS3$$0eX?hjo3F5#^ldFP<8eAB9udY@U^nIH35TZiAY@rXe%{uPh^(2<2pTn|3T=UE)FGb~ zV8%}6%?;7t{;R}$#^Rr=J4bK%F7I6c{SHmK3;)g8PfN*k1ji=!ey{5^XDGU9Pv7G) z8kXm4+8e6N_E8kXTw9rtvrZ^fg>11xo7m?)Q-<+jNpj>PIXEkj>aL=UuVY^znF}%{ zwoMIdF7fq>R(aZx?I@FPgszJ^Jym}J1bHSTNiO4L^kv0!*(ZJq4%7zXd?skX$%HW; ztTRXd75@)3>;h)e?(rSP!B~e*pKcgys-4lfv4gCeGJb<0Yup(w^^4W%KBQo#B!AYu z4DwP)iyyD2rRx{-Ouy;od0zFJ~JTT^951Jx`ER+S1GwW+~sZeokdb z4R-&V>PYqNh#o(N?6dFlaAq4$i~R()qz%QM{^h7ls<8-)`fjDYHVvq|QNrX1Wec<^ z)z#Y?J$~pZx0igI@IF()^ITKerQ??b}opzP3A67*l1n8N$UR!7Rt^g!)ax3hU3=2HO#7G-^PLX!ilZu58e6Z zzx_X&c;k?U30)`#PUb${W8V#F??9xSRmeGki!$zyGzjMW_4R`7n&jk8AayP9C2=?5 zTYQ_ChllA~K{Pj)hApdzdpw2^EKwZU680soy`f%=XWLeSI?%=SW<~?k@4q7e!fwkx zd9esxK)wSC;P3gv-yQK1oo@L>L{~a*To+A3n+T+_x?e#%#+PN-4z#F_Q&+?^=of=h zhcQ4G{liU4Tiv9n$&sXnG!Iw99AgS}k61aw`U5KP?#?WI?3_Y^jD}^B1Lmf>-m%`| zxqno1l9i2*d(^;CiQD%QKRYT!|92z)P%rDVZXcj_WxnrLBQ&C!-fd9=b5CA@&cKTm zJwnJ}zb$k>H>*K#%p+hD&)|5QBF9F1HP{|k>h%L1LpJbq(f8Nt;P`qnw#k$lTHQs~ zxUW_iJC+xK`qz8`_4sjc)o;0qjOYo1C95B7;eh}FKkRxTwHiUwm_gi0u5ACKq0iLy z@-dK7GpcrCbvy}uIl4W`*ss3hu57+33HA?U zt)#|bc|V*E-*Au*<1!02`ehUZr$wISfEve(5L*{ejf+-2odCD(YNX4SSd6{2^)~ku z4R9QZ1tQzqwlGqUH!`SJ-5auJ+6()k0J)jBtQpCZ=q`7)vZZVGUf#W08S485UU1~D z5!yC({!`vPm5FpQHta9n<0^qtsA8S7r#0dJkmr{(f#xyi(w1k)XXsOnlcJzW-yCcL z3LPiDV7GZh*_Ce6swKWmQA{IzE0T2OW!0t3ma;~x?Y-e++6*i;UA$%9v&_nvuV)R?aYI1vGb<1hcP;gl zrIE?Zn!r%?<)gU2chSJxg?8p?`Ww4-;VPP?M4AJmJ}h26Ec?i{dw-lxC-zY1GgXw2 z@j#G5HI4_{v=f-O0pa0K4>Sg7=+ zlV|2BkNGh@o!(mI!H&J_Kx_-4i>oH(LG@j{DCKY9OjWy=QrTa|25-fZXxa&v6msjO z%XWF!qLZnD)OmC8-lOczXu|l0=D2kyO&;{;)a=xU30y@YsFeWj_Su!dZ{CAf0D+#ZD@BMP)oQ)Qct+@Zh%Y0b7mUs2h&~`vb zt#?_#f(YVIP>1wLw}~(|RPMKiMnXd~-Tvd-gY2)=EK6@eq@2C;CK+D4*HJ^`jbraKNho?L@Gj z@}%Vq+8M1*SgGUOhNn(?QL@#$zi{5^GTh` z+APNa-G+K=H+Ske7jmv>OZhGT4m9PK&c85P0QweIVJ~Cf_E07Hl+n@>*FIfz5LNrvVLldJikc%(rZjF6S5SJo+WeARqSjn^rV zs;LD&yAoa970;!1Q;TY*m6Y*_B)jGcGQQop_}tTSncCW{gWam_d>^HiMd0{xOWjB! zL}n@Xec)VPNG!vyqf*VVE+Q{>d=j0lIRn@PK#m6OJV&xGPjU}zR-Tt^WCUKl6%dVh zu*UJILTEW%IrZaC(?-+h_V+3_ZB+~bcV~M}wb6Zv{r6J4->Hj`e!H|t;l5`$GcE^f znsPKK$q2T&0WYKIpLYW5 z-~!$DQ0WZ&&aa|^%e-ci@x%{-k8_{Kle6Bc99WG@Sp@`ApbO9VjYZFT6zs=>E^I;; zRmV(|tTf`Yto`P0o%!kf`Jj)!}7pn2YJXWD>17HIo0lwfjo^v${8+ENrtLt$d3U31F@~!QFsg(0I zaPUG%@^>yZbR?_a&z;u!#4M)Q&q|>b?HbASx21 z6T>&*W?MS|7gsxewq-s7A3D82trVDeH=(YKX?zE1?!m+MHTwt2f2V0sF{OVmcv1Xj z6Rp4!9h~%R+1M)f{>H}KHK%F7+vC_%wSHmKqc!%i_c%}IL$s<;n>gWU50r}|f^z;P zcM9Ih8&%z03EeDbfG#^xJDz!z@q33D43Lu^p&}5KgQJdR;G%zzy8=Q_1*?-v9dFB0 zijkev%3`e(b^0+dAEz2wH-S+j@Tn)u83K70LB7Lq>^y)@%T~Wj(gSAOJF%TF^1RcI z^uh9{?PQ8UnYu?S%HRX}$;in-@U_XG8$?7bV(%hfkWv|BlgCK0UCW-L_r99~;7B*7&bj-t_xYqZr@+ zp4fb}*rXjZ<+COp_|MY6GVOkEHR4fw1@iwGMZV9sz{p1T01v_C#<13GvErm!M%Lh7NIP7S{Gr4lojWzUd@C0Cq~nJ#$F}O=L$}-B=*M!g z>|9Y?={b#-_j;}Rgn#B+qg2n09!Q1tGI-z!3k)5LtIdi8i)JuJXLbvtN6Lo}q;Zis zi=?s=(&*ICmROhOjZMPmli@A0bZDX4sI(|~#$pLFGOV5u`GX#JvaJ6*NG}U|F2H$F zJ$|z`SRdF->wHJO?K2a}rXpc( z-=wMsIny}6jM5zTbt66fO?RW+nZ3OBnL4AZ_#<39@hWIu)i^Hd;HS6xANPgK$HrCN zLDh)|ha?}cXnUwq!b98GjfGZv?vCk}C}oU7BiBSwNNLk^Zc0;i2PF6ocNW_@lIvS% z4&?g(nbfrA@8?!_|8wxCU2XL7n@0)F=SPisY~ZD>==G?bhH1t1^~jLBW+RXGi9wQk zMG*o~)6xEO3P+AH>E`F;aW!A8Cv4{a0qrmQ>*<&q1o6FT-{ZUcUUr)-_47p&O=jym zQW*y*7}$S=u6bD}lxOl{@uA+X&pS-$ArLCQ>{6Dvisu1jAe&CD+xNGks&^%aTymUE zV4?q>O)@wdyrFZ$bAac~FJY2+tLjla+f@bHVzrilYtnfw$~1Tdu*#=b3Gh0-*Jb1R zuCOZXQaVjnl-3#BeAJo<{!V@SGTFo*&%;)3drxhEvuFIJ?G3vRwq5<`Qj~ickR-Hr zdXMTtdPds!t8$$Sd0v_1+XY=wv~mPho_)bKQqsqb6AXWlCGwo~&Fj+U)`hXZV>i#3 zd%5h(TMj}43$&^CB1r}n)J@#0BA#$We&UK}{$x@N$ zE@I2Rrw5;OBqJLlLhkq48Rs2V`H>TYOg&j}*SFg-%l^!(OzegVw5T9>He;@FXfk# z4yR9NL; z?kgv+kz|31{9rF}0^;oq{S@_&uSxBl;Fh52CZRsdm;Vvxh^io#19qSL7rZ8HVK#iW zem2?X*52(SIuA8m)}PBnA|VUAxu?-vT!2B?S&0WBUe0>H7E#kX4P}LPMhnp z!dQ@)@+XVV#lfk3F*R|L07k+$!Huk}-tRrXY{%}SLDqa0motbh$i%-jc(s_hCVK_4yvoc|SIKO08tIWYYXcR+~0=$#_YQHtZ^IrXKd zYJ=9o7`UYsoio06zI)LW+@ejrRWw$pdFXO`l}LR_v?D9fn8E8TdxgG~;}Pd^C#JJn z)=F6}jB>`17wtQ6#t@eqj&F-&X&SI5GvWcxFm7V-$JtqGo&uw>oH3q%<^%AW<&pBI=$nEM z!Pn|rddMywhi(nx3;B%FP8Y;&Irm_`a(avk`mgw2%(u-HS4Yfu$+y#a&(Lov_0a^l zaVGPJapm>l?)Ep08~b|+cO182AEuL8zJDe^0f$`qnDPFrb9?Ix^h_V}#{Xw3?#zAv zMLqAk8>Lr^?{^u0aliCCC#v{#l8a8$dq%G8+h@e6IhX@^_G{Qrl=gkMuG5QsQ{@e1 z+#XXeR(Q2Iew1(+HPHV?T){@k=|MdV^L2p{?L**Bv8aC9cV73%G3E@RmqDDf_kUyL zia^dx*ZA?`Ta6|8>bK9>UofslVvUSf%tjob|C{Q{+IO&4C+8n}CO`{0sT2Q}s^j#kRchV1e>j$VM%O_7n8o!&!F@nu%JnQkmw$W|%?!Y9 z0q?*MRab_^W}HLkC4S=A2Bu|>Jhh-tS+fsH9XbgT;AUicwxC}^m;~h+Ur#iL4XC99 zhsKNOd1HU)I2jLmX{4XW|1M+f!VaTrP8Z03LtSylLP zd|heJ$$1XJk0z`DoNW=>;f~UC$he5PK5bxN--qC`f;yL*#4C?<*Y|v^Fqgsf>6yPt z>zKU*;SDnD9q<9$!1%G{XCT8j_q{3YcLi&J=R-(+23b2}#V3CeR)1*i?~L{m=cS!}jqK zvu=BH>W8L%0r(lf&D^tnbno1z#({jEAZfre!?{d**y86O^{iewR%%~P`dnReAL`zM zKHAkrjh*|8CharkbHTdl0arY6Y$;f@^tr|MpZ=U1Pij(-Qw4!H-kK2^c}MY)jy zU?Oln===c+V4u7@+nqx5BPEr z2Z%jMakmw*dw(!JZdr@oT$^LhiJg{y?io?D1TIDDsi2zei%e19f}^Q*=#aP63fg%U5JKP=-a zJLoQM=0oI8rhBQscMo+ut(IlNepbJK`p|WyyvJoevNCq|WqoiN4$9PgrZkdI)C(?j z?_nLNaVh)$A6swf^#k|e8WY5iN_>eJr}Mewen*ZP65mDkdC^~&7y{_QJ%&!5^hhnh zREauojm2EtPRq5)&Sm!e=3zz2W#@g$X{h-eCN##(&l~!uq(J2UmZtOt1EpTo%DTOC z*v6iRt;AW^p;l5E+qddxkOS#W@ZN-B?ytfA#lvfJ^O^N!FrM|qPD*S!`Pn9)OMixG z%JBbpi*VKIdQ~~^gukQqe89Ozm||78hiR^N9@IP~^fI2ht%(0^=hm9leoI^ny#6nK ztyfn+^QKLR(V%B!+n-{b1zd4k^`8A?a0tf-Rl7#qOU++k-|4X)2Nvur;AuO&1ej+B z9>5jvZB%*uPT{nPyjYNP{-8Z7$A5Hk(R}7!53!@7my+Qdzhs|MzKS#|1H)bdHcP?t z<;FuFvW{zm*sb;Ake@kmnZ6S}7x)9>z17ds>-k#l`P4Ih0?svN$9j*<=5ZWf`tz@V zi^#D{u7-<1%zYBCA06|Mnpftt<=Co)>JQ4jq5FV^=O4ST{GO(}li6GFdw-fwJp@2&d9C(nWNV3a#11?!w^1?hWe@$E~d<5Rw#U~fwwO|x&R4@UJ4t8oaO zSFDFoj>_JJNqqE;I`z?ZyeLRwd?v2bs%iX~lD~uX{0h4%cr8``3hJkA^lPL}Fx4ZJ z*m$Vu3st$ldvKkYbYmbVzkl{NLDJZIe|_BMD9U8tp~p4UZVcUH^2aLn`Y`RG$= z9KQ^sTcI4JnxDp+ZsH}9KS%4iZZ#Jn)PA52hPAa`mU8TE`1`EkUtn9Oe>{L;a%HLIwh z$8ZmxQ#WSQ-ri4$*CkBM5QMGN3khPoW<8)P*NoNGnT3~-OwU%De5 zXqq$B8Kj%tEMdeR2x2!j03Gp59&>+6P2J0u-b=$ARr2{9 z(JQ%UwbebZ?_GzL;{Lp5i|{Ne$qnG&ReZu3E}?pcSASmaM}=dD#|oqCYEf*zX?DP9 z95`ogDL)cFSMR_l>g|2wHFlkwcg6O3&+`f5`@DV3WBlAb{srQET#u3mo${tKMwe?q zUL!yI?qg8<7+yCJ?>sq!tv4Z#))c3Cr0|6-k*9_EY^231w9Rz<9dKq_%Du;+eb)H5 zzi9qKet$c}?l2!0xdDYeC7TJlDwchNXJo568CIK*zA^Y0@s!dxS9vnt9DhDqG1#HH zYrMu|$lqG87x1R%k5`^u98IIx&C`!l#t`_)V9c(>4L!^pFLrD3(zom`jHwU)pkd#5 zP8se4{*HJL^U1Q8Lx;|cf-}8qo1@_faei4Y6o0gJO5U5WJHWjJ*u=_}x$N9AUgB@H zLHnUNUJ}>9x!%TDx8qGmP1Y+`REyYp4&d+gIv~vz?0J))sggrS=dzSsgT`y@O>gIJ zVkZ=L_hQ!bgW7F=V!k8CpFb}2o6Ry#bbLR`Y2&r!m^C)*uEeMM>qrI$P{AKK^P_WLv0LLAky?@r-)h$V8epJpp6h_QBi<$paW)a*mhB41P=mk1o^MAw@k4Cj67$lV77APje;XaIts4Iaf>L@=M}@a6D=A^-w>T&+P>3rik_OF@$6XxIVM0 z?=^{=cTm%YJf&+)cHK7PyjrOFyevl->5;qD!Q(^q${4o;zb&4-2G3aLFXKC$)exOP ztu%?3sve}D&ST4KsD@zSIDd*h1FzZ}4v)>Q=a}2jitdoByvp%n!})z@5JUVCc1DNb z^t|sIP*;em?gDx)D|@fjJGjTj8s?>M^tQgy-TR;c031b-Cq6cw>E81f(rm!m>&|y_ z``3D+ek^U3njhizRrWGNY-*Xt%%PrOnU7_Cx%hrpp6l>kd9DkrV}HrHF0RSunXj#L zhR47X=jA8R=+d5t=U`L&@+)Y7gWZz4-*DDwSR*!%QqNnQ8{aX2vWCazXfn}aw^SSe zS_ynzSiOk!0~)(-JDS+$?VNIQ3O+S{BY(*X?xW_%&f1VJoMrI4rFNtp?MW*E&r>)% z!O!2Z{%+_k{(tPfS$}up=#nnHuj^N^>ZbejshtJFGyxxfUW^qo!^{(rLTUHl+exy%ve+^vRCC4($kBmME(0_p8 zf%VIM_1PeHkBk9eNYCkPSi6JREaX3Ny^3RB6?~RY)-MNqSG6o`xmw=3I-Ntr3>4~<&J9l4$ixev!VP7ad9#}65_+T821OYZ#R1RR-bmi-%e}YUjNC~ zJ<5SByjZyY&9AiVu=h9c)n(>ik-f+8t?+zHJh)nUWmDcA)_8K60JWBYQL>LWPirI_ zZ$5d?qx;X+S{BYZy*DlY?2$g%13CK!{ILgZ;=b5JAAjU~@WY~x67_Pl&SYNpo<5QH zC4b*L!zRb7&*b~p#&nU$`Gz@D>?e?giv5IhAZ;gcKs^nXQcsg{56)970Lx_dJK9A4F)KG(l-9jx5zGH}U0LH&G6Oz{o)K=pcevp+rp z!!_mFdpJ9jo)NMi&kPTf{U36jt^9x#&NTm_g51FF4M zYO1=?$Oz&`$hCk0p|0fHhV^f1g?p zMq^V@^OccXisQKMVdlWU5j(E!S6Yy(3AsrEt3;{2ZPsfVaMQ54TM*9L0Q6)+?mjL@ z^#RJEz5BQ6Skr(Z z34C&+VP(SV7Z(yc>|u88&Hfl@wW*mQPk@`_EbPM?8*k(uPJZK&wRwAE)1AV+XZX7C z`cvi|?2pwOkb76jHPGR4s{P;JL;k_UtVlQvc!@nJl+cCnmffV zViIwm2+Na>fN$?s)=-daf;x1GJ%0??yhYQ{SIw)-P3P*8^xf5EvAc7|%s!q%UbJmM zjvKF;gT3kofCb!P_?z9^>wAdj-3$sH7VFudF9L9&tKz$OuZg(|1=$Y3Yn1VNsu3id z#{K&^r!ew5jb=ffa~>dHdm@K>!|Z8uZ8!8-&4;)(7`~&xtH*H_HH<2!J%91oLoG7! zqzY{PHN4yLMSYpTiypC>M_J>7@nUFi1o`R~V2y>{2H{?Bn0>){fytg5X<$DiH$By@ zC;Cem%a7B8>VE0QfK`>TZt*(kK%OUbEC5Uns;8|wtG4eXo`Jkb z^e3wLqg<}B`=4NZvF};&G`N1iOZ-Ut0x(_ldKu%bZ@{)t)K6UXEJ&Kd4Jo3M9vmq-`ZGX zR+uQYbl|^GFm>oTi6bZRgNf^aa978BFOWV=#(3A-_dJ-+J|TWfcC8L9jNLUuz< zgpcjwwwc;rw3nY_ZKHjj<*$b8kS}s7Pg!DPd~ViAM}jSS+@{)#kun*`v8Moof$BWO z89;D(jEvR}=6@IDC(p@IZK&4v0`gEOU%{_*MI5!E=S@Fd5?WT0Eu zW5wP}X*Y{^ki8C=Dq?-$cMDHHN9W~(oyNRSWwONcQ|CabL%I|4S>kODkxwDUv)loW z=;fSW?SGw%9Ji%B_Vt-%eJajjkQrk* zydQ98YX?||2Rh)9F$lH&8!OrVH;_BtTf15bYo%|7m4(jyC_R*kygn%Fp7#)=cv@^t z@{vgFchnn7tR2rpGS&{VRk77mF*TF8nHjjaUquY%5L5TVhnTSWZy*jrJT9d?U$ZQ3 zJpimkhJV|&NZM?bt*v3)Xgq)%Y7IET^p#uV`<7yMVy}bG2{>TtwXNU`^(!@r(R|Ns zagKxY;QHFEcIbdFRR^7S5_jv|@%UFd&*fCr+k$(HY{ev2xxllKw%eUutSpF6rzG;j z1~v1Fb9^!T0dwLk;PkpKt))L|pL1Q{auFAg{D02YG!~pEYU&PK#J4@GMV67sFM0$& z$vJZX_8G@{uVwLc37mKJ>~Rav9_PmiRJ@!N-noqV6*bAQuNTC#3v-EhaSOy4W%C31 zQWofV%tIhPO~To#7&pRxb^~1Z!se5?2;}<~8)D%HaC9Y#D=?Wk1M2b9`*{9^{2YF#d1A|90lM zGJB$SUccT2_NL@@Na*myo~C}UlzS5x+OSTN*cn;l12Uk)F|^^|AN9?N{5{a$r~{at zi+pi0>aQ8qexcqbY@rCSjQ9No3H%`$&woLC9^yZ};RLWU5bqCi0r`2%L0%WM>2|75 zNBROD!U4{{tE>GvncvOV$_O1!uc-4Cm;XdE5-6Gxg)N83!lFT5jlA=d35&l^l<{86f8ggz~9> zF>YSNc?EpY!CkXfsog5v%n(0xiF0np*J|5Y7 z(${zvPg43myhX00^lJ&Za|F*#G7!f)ksI^4T;nu7d2z?vlZgvKZTVBd zt4)mI5x?vqzgDfcwlsZ3SQjVyfAraBUJpf%m7rHfT6gV&on9|5O@E`5ReyTqnF|`T zBYjC*FOT${ruO9xoOe>&C2ELL<@S5Y>cOu_1DVLL&h{-s4TAP#du%Ey=WLV>g@ko^&9Pg0Hm_-_n$^O3C!%sZ6U(>&H zTPV>=|i6~jVCK5%CitR3X0A&v{^fks7rAcW zpIp%T+Rmc$zliJOZ!&jcFD4-SO19kn!eRMv)CZlPU#5Voh1`Vnw}SZ3=p^LsluU`CcQ>d;&jg0=2w2R`UCSz>%hJU+mAfQlAXI_4|o4bNL*v znsq)$-Eo`w)e}7IjqbwKN_6Jpv0beIz5*O;NBhEkEfY9jyL5)r5MQ%iE;`%F)Mi}a zj)rGL%%@`f7qV}xKVNZN5a*1z$A;a&@e7cLO}>G8`G3x(vm@W1SYHQmYw&Y>aCQy5 z3m49XMIEr6R}?$HK!1!YINv2tSKGhjJoLP7aXup4REcdSa*_e#a{Q3IO&kY2V*{>e z6>YT)dDKO`=mD%7J*(cmwlZtog*O|3O~!F!j-1!n91rdTd*-&Xm1o@GIvkLOm zG71H|pMS)lQTKETFG_J_K%EKX=~F(w2|fqF!p8X&KC)wbn$`{EHXDO~F?@c&?osj# zSnk+N|2N~R2U$Y7Kw?f5pIg1WgL)EoHh}w}j*{i#5>J<9An)43ttxrh0^_B}`gU39 zJP7CMVe-9M#B0HAU0<2S-u#yGFEZ@$wEJ()pMUpZcdXW@CgxYj5!7p}4z#ib3_s$W zyARx%9&w+FydSV%sg~8O>ws%9<+&dqi%g?-2V8SbJrKA{Ox|%>E9H`+gJ3TXAI0?pdV;wHQ@Svpz0)^^X_7&e+2=8HY@yq3|P*T;Rxu$Oqwc$R(m9W6v3o zLp-|etoGY=%*W~JZK?snYl(2d;xJ=!#K#+p1~Qdvxc!Ctbbj= zz1_pXEmoH1wmflxOUx+cDHZ_xyo_yb7xCLGQ~SblEFe|^`N(=?R|`vfRxa9No>;#7 z_Cn38{V~~Yv;wz&y=zZt>;^@h$=mZd)t;)(=lJ};0W9;QZR2^1dt+A{-QUnYc;8%P zAM$mTz}g-_{b#vghrP$hTH!lu8-M&gH!*T0Rv~uTQtEb3#_x~sbi40x21eTiFHRnY(`qACdn1A>_9l)Qz zeIji1!dYwe_4D4(Yp3M1Jn*k`o2+Ma1~ex>0avuT#*>&n!|n!T(MPVCnrj9&V(T$F zhips(co&fGj>lNe!iqybgod?0TU*<#+`F1jc27x%_nxm;lI=fX+ml>3E+xJN+UG6O zCy%o2ThC`V2YYiv+{Pzl;eX(%aL4xM;VsF%V{^`PbC0fxca25%5&wLf@lWoTIPRM} zne%$QPr)hM_#+S^xC`KX9L*F=hC1up)nN0G`l}3k z^>qAdFGi6u=c)IffhQ&QSRxLd;Hu;C4#5?AL>6DLIz4fJ;MD`fDF8disiVEIB2G=1 zTYZA|uRM_PeD&P+N5C4Ovv4z zLvAm{>zT|)-p<0r(saJ&!REx6zH0=?~-vTqg4e)CMfij6o+tBmp@PYBkM@4Alp5 z5Uc=;i}R0DUYPJdS4Tz{^17!3oagR}&r8O*F+KETI_cPYeM^4&y>a5Y=h*f4kDbrg zvl0Vl`{2W;rTDa(daZZUH%e6N%J4o%!!Gb@EqHxs0)I0a&*WTI0oF)>`6IN?^)29< zsIfhUfymwq{sMFDPz?#sfhC_A-#d@jHz|FYoW-5G-~Uv9muO#w&)qJSe?;y|0?qYmX)FD5V zo%aHc87O!ffExyUs&H-xZds~N6S>t%eiz8q!8|3zoCG~Yc)!(V0(+=g)BAw!2>vAz zi-Y?3TC0Auz1)4f9cyjIlL~$0J}^@Qe;MhxQGfq3Y;RfKteR8J>+B$B8hn-weMh+i zxK0PCOV~U3`E^)r)x3J`&aG{Ho`F5ahO9u)BU^$`19 z*)xkActNHj= z#DCc68C`F6_?k2YHU(i|fgNlO$DaX@8uB%emvB}?Tz9Nd?pO4|bi>=bVfRCxd<1?4 z;A?Mfzl4O9&HGYWI0Z3IQ{s#&W8VJ(9yYAKI$#%oZ}JAeZGqqWI^|wm7sy-8>^xoC z$mBVelfnCL5!Kl6#|aO5RGtO%5hV$cm-A` z`tywzvt?X4RstXLegfYDObXi|tS4LXS+aMLzYqPs=nI^Pao~1zwLG)6FTk0--G3h| zSWj)uT-)2SKN>dSp3m)S#dopBy9{d-ecU|uEAMUjqv3oZd^~8Y27ntyZDqB*15vNh zA#Osz;ezvS{Sd=~;eE=SCOju%-sxJ-0p2V1fd*rQ__PP#23#zV?=INhG6pkYaiRd^ zF5(m^@=uNr;&Or9$+PjD@;p;KXMccQT|>RQ@CYA-_IH)9JCGClPL5Bd1-MA2>f;YP zWRFNZULKz*IQ%?Ju`IHEK$ZILNE+<&`mt~$4)i}v01s#E>4?bbGaySDK=cbA*a z?P5B*8-M=hf6?IguTnSd5HG7VMT*0$WnXVo_)LXphaP4$K7mbl96S`v7G2)-~?WznQ)jW3bIq`g(lEE`-G$j`O5M$4@rsNhyN`6#fWNC|PV9OxMc))+>FGS~=QQuG zOCA5>zI!)bb@~^Z_O6+SGXcxJ+IFrk@4wA@{y;{DGaV0BG%J-S#cXjRI z?GNc;vF_ghHj8Kr$A4q#55-z|4;U;UBP6$+7EHOn53x0$Xnm=j+Fjd+SQ4_grLg7eEs9=p=otbgkg-#*wIhg7~8b}ogp zca{3U`p0sxb!N2^ox^#JgEBtX!l$tYY|7EFw`Os? z7Wm5?zXIdX0$)Gl&trR{GI7Ed;43Eb^lZPt_^^qGk6|u~HscO#a-xPlUmjxnEhVR)w+cUr%os{s5-k5%1U?*($UchP*^U#-3sOKfl z%4C8$zRoYFAn+;|MUaa;NXtO`?4@$S-Vf?B-KpB=(n{} za(~|7d|}j9;D2j2_&pbhpAPbw`FD^T(1w_jUs^lh1A;im_Hx_4yIgfrIMi&269Se7 z_(F^ezz!OZu+F4*hql7@+181M+zt$n@W{A{dk*8OkJaTVZP7>f4Ey~p@Y$b`S%Nz& zvmft4myc%UwJrJUQI;t_eHd5CTMK$i!GAhsdq{HAa%>HGk61g>=P&lnhYv&9H;AO+{Xdmv4M=ICF%eA?=g_v&!?|*EA z@eQ8vO&pWm=5PWWJB&-VkigY*>T!r|9j4uj=Qfm=12(?{%Bj0+@o#0tZrL+uOLMTzsrRCf8{)Yow!UjOB&WL*v))@^EPPgr`a|Fj$~be@ zYg4lxupFxU7V=bKT?hDkUw`o;{d5OL4d+mRQ{ zE+P3BX2}RzGfcLiT=2FP8+E4WUNED zo`*J1>@au}G9CP2m{*r!`-ppP-_YJ4PLNvz>d9|8W_NZU4)4eQpbsk;85eJ1{m9y@ z0pwZ-@rm`6a)16Df7?s$ZM@F`{Ko6vdQ|LY_6K}9V9WOE&WZEzi=@YIvQ~!ki&}S7y-`38gff{ZF=HtS!bMI4W5fi@lcF6 zT`dmudb?loLC0|0#WHR_!})at_L71@+8;nXbh-jtW7NOgcB{yN96Y9RW3%zx7b%o@yfhn(=9R*pv4=2GBR!T+^c4Ioyh>3yCPt?R8;vzi~n z+OUiby${x?5kzQfqmM*#J|iXy>$8*uxIznkLNP*bB{G^^u3t$yGcyUX~SaUGjM;a}ex z`S|Zbv}xZ4leS^H-mX_}-E) z%?-Tj<@|4Lx)=uPw*so%axo%fxd(!OzNWVGDuIS^}P z;b^TDYkzlZkZ*nK++JdiXkYJEZ||;mN{zLUsdhbBQjY26u5))??A~5)x>sGNNqHMi z^KM%FR?TlZyXJj&H@NRy-P}X&DgR#Q_LAoKI=H==Ufg%8l5>LlkN`W%(l8fOea|lW zo=);T+syZry1Q}Qx$0~?w@#sRdztU(8z1FMv40hSuVe&xwO1%7fFp25(!Q*D z8~Wovzuon4PT0Dh|GiuAzjxpJ(?7po>2{}|FAQ~@515Pm_u)qSdiCXV=j!?%ufzT9 z`d4}1_WN+NGj=yc<=GwlhR@;}*4^*5Nc&c!bvx__vMs~H7rgK8de<3l?!R4KZoXf2 z3V*}e{S?;xSN+~G8*pEK(PBBX>>RX0KKXhO(s-z`rAllKF}HhRgPd)2cQ(msy&ZH` zfQ=3~FgEF$0>i|SW0|OFQ}=GguHHM7;5T>FS3pGjNP4!IjrRGYt{)@6!F;j{s5Z>IDgp5 z=9m({y2#fO?Sh==uAkp@`uR-Z5HaxS9e}e2_QtNW>+Gh`o~gjIp*1p9 zFa%R%OA|PcaldESRCx<*9j5Pl4asxH#yQ5?B8uzLnyz*4M#epGuSo1LZmYuF;rQwJ zUYI-jd%*a5Q`@=e+}^~U+h*Lk)qe+_+v(@d?(%a7;6EfP*@SD!ab9w3U$A8z6r#z6g)`#o;;NIQa>&q$Ml%4QLy?>>)2dgvo z!NQ)t&3#}QrE~Vd!k)g>eGsh9-v@j5?%rNsPVWPD&s*CE6z7Aw!^{|N;=a2#)`wX+ zt0oTe?2g2qJ8!^-C>8AbJ?0E$^}#jnBg}1kbAJ8u${dtu8Es$NGqz@~v93HR%S2tk ztIAWTT}L1632Yg>=Z)FSqJLfI%2PN`Vca25^H4HkscG}JeG{?OjhYjaHFx{DGw&@% z?udG?US|Fo#|lx`=+WGimy{ELTU^hSad~UlBl-4*^5@(WxF>l1t+m-GEdYz?q*Wn|Ny0^=W%3bI*mZWPjL6)RMYtErD?X zu{hr}dg%Y^7j>WFV2JCtbrCb65VWVfE`7r>{tz?d*3k2#KGo;)8Xx+NV|7!$xl;Sb zW02r)PQ|@2Ly(^n@Re^7`+XMN@wTgN{S!iWwjt{OEUJhcdc@cc5CAKnq23P+cStsw08W0#0in(EPpUD7`}y*<)7XI{hjC&S$Z1Ag+jVb}suYvBhH6Ud3h+ z*S25#70OS&OMm1kK#tP>Z#W*1=MQ=4P>+-L{rx&4xCXTX&Bh{dW?#mFmqS0dF6~+D zqKmeX;LDAv=CHhN5BJCD$fw`ABQq5f|~6%a0gTiOLIuMD{yY(7_PQ2 zYQo9KPcrGCAA}WHU~3oZd@5s#8?!oyFp#*eQ1cJ^XMcz}1{02{2(k-eeR6$5yAJbI z8IE**WH{qnUBA@jD1)^0jMQhCw%#eD(rs4{#tOlk#s0qax)7 ze?=ah5`XZLFkTAyKE(0MTaW=?`>Epxwdm>@W3SCrKWG|3o;WD>@b0i4pK4mu@}}FQ zi(u@qjlf^Quo~q#h~YIT_@*rH2I}#N+sHyYsq@zK)xn<0u$?awwo@MZ)$5Lil{P$g z)>)vDwN3{hlUH`JM_4Cy1sekG2(#dXq?aVF7k}7zJFUEpn#pSX_|riO&afcy+yK)&UOzFrd5RZ!9mKVUCh+ zgxq<7#Q=LGSeY8sa6!!>#Je{B0JfBZ z;eX)5x&p39id9Zi$42Uo7;qr=#s>JS8J9ON$QX3iFxm<6&_CaD0 zLv1nG!J}a_+QXw_?>$(f@o0D%voRQt*nd2X2y=6yjNhJaIkDF3wLD-xkF?8`Tt}S+ z*Eiqfdk0os-(emATc-}z^Ws{8dlOt`pldAHBOJ4}(UJHegnxouLLOr91Y)k(oP(@e z5XVq3qr4S8Zu^zL9jfjbzILX)3~P}hM@Q!r&|Zc}yJi1m$QKYy!j zmt6AlTqR{EuX`aG(Bxyvc$Ns;B-o|Z?~8hjD&M!1*UDv%tcQNtbM>JekNP7%+d6%j|E zJ2w$G7v~+;ocJcg6rUhR8`wZsfPY_J-Z@%;*#Eqa_uIjoU*3Q1SH@3+godwu*y@yps-bkU?H^1h`|S#EsuzUd%(deqY9(lDgvj zy$UuI`kK!0`5&BBn9aF$XM@-kIrs&!4jot<4aPBgUAyTs&Ld_=-Pu}?`38D{BRB)l zFGjqOi0gv(#@sRh+Z^`>@qbPx>}=9OCeKIb_}W5t3eKDfnkd8(q+)@cfSWHX`DIro5s^ZRcpFgFIM3{UP}Z@EieaCgGPSd;fUNE9+m9S5)A{ zAM}OoRrPFvJ~2F_t5^wbzfz}KMcg}3BjH=<=eu}oYdG5%c>bCGMt{6V*H@NSTDw}Q z&er8QH8uxpUHUZ%yL=zFSi$(;TZ63vV%|1f;K$6H=+|O%dflzv0=8=deX&e0L5+Z0 z7#Z#Zuzz00$C4a_EWi7tt?G0=Id(AqhB`)rP>)RgNAc6rVt5YjS;Ch{t5K2s%t`F3 z-onw&`z_zDsrdNqjbenUfYfoqPSMiV;tK zS2;G!51Yidm00^}Yj#rl%JFXzQ&-g2i+0NMgMzJ_sHcXpynmd3r8cnn4Hz%P^cXfw zqCOvRtSPKzmiHMY$lFTCV5a*ScDv+z6LrP?B);=Ooo-+31;Fl( z+#%XoUCv3Z?0=oaby&-AJ&6^4P%oQkW1{{PWP#kfwPYPDVNtR?{5gMr@_DuYJojGo zh1HoVyr^0*m2C~CD#jG~j>NO!23?fA;x`J&VNmEA4YZ^?FacC`J2)v$}N-aroaE*!kAyqJ>)JtVM{co z30WX=pQH{F@yIVf=2?R8MeVn$ zLz3~ACx6fYfIxr0r{S9(2Z4`cRu!9%|8|w3H&{-T#Kxn)m3QZpd^u>#E6*qMcjSG^ z-<9_roLQ8dmRP|@75nm>9Ehyx6iopSRXky+_)XGc4&kZFshc&uR2OT zzcYuN8@Rl+czpMIvUX;{XW~t{zp=Gm#RcvM?4y6al~^(icN{r}drG}Ma4awmKgOk+ z$Wak>|13A9Iw7oNI;x(9_E!my@ehn z-hn=HQ8SI_7vM#;i!4?&gS;o?_uGB*zpRt8vb3lJ^%wl3d6e{C(V=v;l**4Vo4EBT52!k&MkyQ8&T0De&AzDkR6Qf-+Zdu7Yq!2~9t z31>t@j6Lv%632DQn&$i$N7k*(=jA@z`XyfnW8kVBh3fvGya*+}EBLidqp)!?-<0Y9 z7xV3&D@(fRawDT&8O}4Naj$Sape#9E!%TmPL zn6`E@YDCl5+R3~G2lP)v-wiOQ39zTTjH5S^_aE%Z`33Afvrf6eqx89vyj(@>-^SKT z99NXFP%?6Aqc?}86+C2b2XJJa?o<4&qqcF

    N4Mz8FU970q{{udLgIj$n4u-LdtR$?t&Ub9ya5k_YkJ zw!Z<6;&XKx=P@|jo_+@$i)7m=JWMwUUgBB$b(Plu^xyuvlfIQyd8wSEnVo-BkaCG^ zZ*hJ;woX6z5R{lUpC8HH$MRq5*BI|MXF+%iewFk1j6jzJ%-&nuGjn0)3lrx$4m^cZ z?-VD2`rW>!mlU33wziWxQs*@YeRe)aJMiWq95`pSyQ#t78Mrx#I@e>kIi-nhC^b6} z!=C9|M$jE;>oF$UAr|oLR2VHBTjfQn*z!zQ|4O^hc@eGGGZ?hn> zhP_f+9UkRQw-?r!YYcW5oDI?baksWs z3LkaW(_l`3Z@0H=Yh~a%(JVtRwu^#SIi|K1SdJvz2ji^o+S@K-e2RaZoriJsUD;Y` zW*IK`ZOSu-Pw&mb5`gPxB^aZNE> z;8Msqe-$e%k1UO+>#=z>$M@kI;4R7+GokB`%aQlaJqWnF(pOIyx>B#pH6wMg@*BMe zYyD9+egXegO^ zCm)L$HZd;dZ7)}CzXZ?OmL6?}I^f%r-u~X7M$JZC{tE353;Q-@V9(CX(+bds&Hca3 zmgrHOpqB8p(ZAUqxzQ^veWq{mtUBAPCrjAU59UEW+J;kln#X?xdXyil?15B&uu`)v zYT$%ECV5AFVm?&xtrYLc|&8$aF#X>;7c z8B2_P7XONR-x>Twte;HJNWzGeyoHrBsxUe1+ZoDV&Gs}5Cbrz(USnWyAe@EBj z8<6`)+s1P#GxmSPJ2=zTHkK~dl*~s|*R_(HqOK9CE7U#wA?p=cFZ~&VgZ-B9Uy$t% zF(2^nHOFe~qFJ5XISs&@0Gx&L)}uQ9Dar^V*f#6sg4?JRsQwl?2p*~rGTPZX#X+0d z$F#HC4UZqqz|V(gqtD6OWURN=Z0){)_B`0Z!j_=g9n*g(Y2cr8L@xNlINudt@1Y)s zvq#vQU_4-oXNn9Q!2Np%XK&SJ4qT?pOyT{f)zp;%nq_hK&!H z-H*}>f%H!u%CYX$8k!47D{r&-gZMpg{uvDQ3Dh#Vjp>mwkn{b`PsUN?dA|4bb6b@C z%;<}3&+UH`@v;`O#`pDW1+vDB>$%KveGh!Birl$Po@W%<+xoV5wh`-E>bu^;odr9) z*!;5{vKs6}&Kh6KYR($}?L$8*`tjB@x-h4E=V`J3vA&6XACwz1&~(6S%RksR8FT~S zF>oK~m*n4jpiffBZihWDxU1`E`=Y_z5Zs4t#ai|0<|j-Shqd8}`*=ffDtmLIyB>1w;K2hMek+l~_V zg1C2`X4s8PL*F1L3FA(Cgr3HC+_2|Q>*xEx99AkkPM@ZiL5H(EmxVZQF}!)&yIt_f zh-dw$b^F?x=(4Y0~a812^f0>xij#6XH z*Vl)(E_*nQv>188sj zh#a%@c0oO%VtIJyDhL_uBF2(ZOM>90il73zlInXWqooVNSO>lYOK z0^#GJedJ$K?zB;Y=OR81aQ+k+W`u{EhuR*fC%3?_QP}wWSy~f_bNNb=CQbqnEPg<3%nN5 z@wGHS9z&@|P-mVqZ#&Cyg&&&jv4i@UN9y_W*8O?<{|vrBtS@0$`MtI6yReQTTk9^F zEP#C7t=rHy3ReEsG|a%60e63=K0PjnCWt`@_qD*6G&CocL0ms#%@4c8MTvWda{YNd z7XAh~6-V~(zMm2H1^FlS3&bsP0JrYv8XFes0$amnw&_SfF)%>ax6h#9e+)8C7Isa4J6EQ145TSzv?h+frHy z{PX#J+*gUodl{a$PhNlD?{Z!{MgHnJdtl%1viOF37i7rI7g1wcMGWo#y?_4THWk=5 zgb|izOIQA-)Ly9H`d712z~{jS12F`SN6@^=bKf7F84mPi5>Mwq-_O(QSDGpo3GN~3 zXU6rU;^}NS=9_}4BYxY%zfo#l4r*M~^{V)oRDJPr_EGk0#jJnVHh6CDSCky>OSDmK z@HI8W`o%G!ydu&Q{QRFP7fG+=M}YA?yh+rkw2GZ^kGO}pUqkWLh<(oeSjXCcb~DVK zNn9ES{2CIklX%Oy&q?@yppJ>#GmsP1&{rU*1s@0Dcu8z=%CX(p#Y({@EMZ}H@?6u= z7V)4ru#Z^`m3V(eQ0G$JXWOrQ1AoOHpAP;X!%@Ej3~BV~A+`X{3*eWG-B~$u5x-uk zolIgeD7ejqwOLQj)p>S|oU4Sa3r^x+$Q=G!QtqY27WnvD?2M)4>qgDGK7ljUA%1rA z=)9)H)bGenmHkn5up|0LSj6(IE$pQU`CDn7xEk?z*z$ioN$UjTvUt|OTo~|UH7RZ` zc~SaQhpXZra|{E-4Z=1sUKojKE&Kz7DO?h`1PL5vzOI-p;Tk2x#>Zz6hluYlr&RkOxwrIolhV0^=Q0QpxWwmV^Q@H{1UerRnkR;?|!i3yWqG;9gp0J{EI zd;iEj@w8?=(7}+uL#y$7B|)+Ztd+cGj>KMw$-#ZEY7J?q@E{p|eKJ807pa zVB3G%2Gi+qAL)WMJIC*SxF)i;=Wl`cXYnz^^)vVvlszJ30rH5{b;1=V*^|)ekb8yP zH%!hb{DZcHU?BM5L{k##{H;x_G7LEOGvMWA$)}w()$?>PV z=P`UtO)u&7GS)@x<6?f~pgd(gg|Mx6;8TBewG!qEGLDCZJu}y=eqbZlB;Z|o~bI7$@V_aB0XNq%CLWT`ktOMkZ6 zE@_IxTr0W#@|-Aew!o(Xb$OiMTH^A>w$=+CUB6I!klg1vzo+Bcb&|6bhtpSkXZ&D< z97u4!F7SN$%?M-tqE@^>BYI4vF*Q z%GwL`ABc5Wl|BxJ7shb!WDTCl&-=v72yI~gu5>U%i0=!Vs2f`1^@FGA=11a~U= zRz`iS`CuHds(*y@Pz9W8T=+kfIpF&%+8;lN;k)2_qwjO9y@EZ1Tnt#_bmq2=+SbyL zA6ELV88#dEHw125qZNSv5YB(*oR1xNG||5zY9g6$rRuEOzQb|qu)YW5zMOlKuK!q_ z%ifudbVEkYEnDw!R#R>Fqa3auH81b6=H+?v8kD^u^%v*JMx5M$aYLfq;WcE$!4`my z#XbIHzKbJ!;1&HAspJ2KYG6|BV?IwGzKRcD#go*wqP*({H%9l)F6w_Px7J%*n!egw zU)!WlW8cuy}urZA@dNS4LWQ4Q&}8ZbHK-+{$hM1YCout&3bJE`yS3{CUH$~tYM4!p7_}Y_h5va10w!j ziCn{lGcv>DhIM~lQ*BnnaF)CmY<~dvGTUdo4V;$%Z9(H+p6^7gvbXgNI-lEHsBr+_ z*kG?8!QQ?g4s5&5@%3w~=GA!9Y*Yg9vGRR_@gUGaEEZ@}4k6}G?yYY+<7oFBFM4A8 zm)mX?a^dx@vn^dG*X`v!a)1n*JVq`P7}W+I3m;bo60encKxip!4F((+*3Wk#2>ccynAhH z-2&#jNe%+^pAhFd_eY{WLcfUM=&UBNs0eF}u=b~@zw6~Y(4G6So#*9tO7epyzJD^G zE#ujA%+8nZgWu&?0vp+RxE$NM6c>Vepgh@v zBCoS{TSeOy#)DxI-%sqBTNoMcd2zTOlof~l(ND$g43!^p5bDSH_Eaq1eLT^8k|&PY z+_-Uyj$)*f1HxHn&8N)P8RLiV8wG%N5j^Z$Aj2;chPKs zZCK%cD3&)|zDt~kDevZhpEEJvVP~xJ->7)WeEul@Mll+Sv0&~d*6ykNcWu8Cv>`VW zu&ZFrB-a(38}6(k<#&(zi5z+0D27_<0-S$iM|E>;YnOtHXoNQP<#+^pn0QjhJXc!9 z&;{9oz7>qAbpyuRHg1RfxyzL~E3ZdY&OtXg+D5nGu2~FIwO zpU$cqakf%0xWRsh7v!i~mU#LS*FOj?iPO> zW}gtpY-I(y%9#as7*ne27i_)l++hXx1jNFudH`)f&SSn#@C=B#!wfUTxPbKl-^Ka~ zQ6m9oddSVF-QL3dOgot~;u|5U*j7;N|V3?$MOCXV`w~-ai9duM0X0^i<+p-{Ah`Lf{m; z6BD>+>%q>c-%mW2E07|~W+NkrAjd`DdluscGPj;;SrEUEbg#OeASME}w$LZ5*x|n4 zShSPLo&7w3gXgYUo{6UCMGb$6q3;~67P7h&r#VACgt*5r#^3zPzfczr3r^F&7@K{J zOFPY(;+N}J^uct)W8UO zo-n4z>Tg&rJov-l1fM6ZFn71It1#m6$eC?T3YsLJ_ zn6JynjMiNp{Muu6y;1!=|9g-e7p(12YKHK)KCMYwyWqP%(tfpGn&DcR{&9QD^yPT= zh7+{s2!o%;ehE_rZLxn4^O7O&jOFw2x}_HQFVP=v4qIEQnSi}p4owa7PpHP~+8n51UQri`IVOCsXZP`7?V)bp=dUIF4bCUb;$O`FT7=jH!;JS6_X&Ph zhS$CWU1WpI2w|_qJ298XZQ=sd?00uVJ-yp~in~WL+$b51dIa=fi4q$=B6a#AhC@z~}L`A3IGycq_UgG1nO}n)H2j z_mEnw`@b1B{Y;g;7*{J+5F^TMv?kE@#MztWL`vDq_p>g~R=5vDzR&`5cZV&kmjk;1 zF(azUxE;jm_MV9?9EVbvtW7z6 znpseuInPU{wLf|}j^7l&kb=c?&F9BFE8p){V_bhNARp?jwXNL;Bje%-Z+Z)2(=d+^ z7t|n^gX+o)laV$7JsQ(Fhy2EAXAiX5cR7U$V;(?t-!3MUcXkbeDJ&l`RU9T5xCWjTGIgf9sLQzYKw7$keulo zCF(zX!>?38hMFOs4It-XYVP$_$%%y=6UcuZhB5R(KH8WY1-TxiPiVby+YZ(dugPX| zZ5FSf21tFs$Ynx*TMy<>;MXO`FIdqUemNfc6ulX@?iB zdI0NQ(UCgpw9!z^2grFGTk|ea%bqEh(bu%4Tp{MyM!bfRR^D(sgVkcJM;f=i#eRSL zQNJ+XcZ9z*Oiaft0 zk361duE(6G9ejT(7drSshSe78o?*558TLNq0+s}iJ^1-tqZT!YiaBuCwOvg z4!c;3Fs!!9hwEFM?fT5N+wJ-86S#j^?7V>aB7l2f5oZ_W_8Hwf8bi!8N!+8%t9TdT zD2SYThTp_>N-$~G5vOd%Ip;s9t{v+&a|e_9pF_8vq6z=wQUsF~t6fT&)K6uF18Tz|WNWX73zM z@-u7!7C&J2jlF6iiAQ4~R|eW@?V;2|u%20b7v@veZ~>OWmgSK9YTx$d|KWa0Is59u zj;j+^7L)N{SFv-L;1W>z5lN0T#&NPftw6R9oVof1VI#H;DZ_uAEvwH=>aOFmoz-4g zM(NIO=u>mpLEWz#rKLS97wvuQdx`5gabyiB>rbns%nh?!YC9fRKbRYq(*u5{_E2A0 zT50WS7cq-7?b@*CMP1F__#b^6f$D>3!F6H2ZCm>+02kF&xV z6aBALw?Vbg${C*3Rf3LonxXg(wN2sNt7S~+ zTlA|m>lJ&{FMPh~7p&p-B5oH7;_ps1U!vdg{~ocmncRN^FxTn!oF{7N={d;f8x2v; zW37NQ>oIIYZr_`0!ZpV88``qyW5!qtw+9k+D+zlXby?N@KHNIuTP$Zk92Ux$Gv$O` z%!_vlxAEOZs{rd2&-*jbncaZ<5A0BnZ0-w~1uOphXxMd{{sz_}#cvDz z9?FXo_o2NQtXxCq_Xq0x!OtiDE%+=-{N9BLehPmPJI6M}=noNXx(}3pukB)mKMOI8 zCHTEXUl0S0VjKK79+On@=o9vlDvNmRTda5RrBZDk?pcm=X57H{Y3)<&32g8x@6DMp<7>)v*j}H6+lv`AwI%JT2RTuoZA=X}35q}i0 zphA0A-kM2VRFF{tj*NmE1HMdRp(2%nRaRu(55a$So$0HBz z4$PNo4_QtAu*-GA4)h&jixkx}2ie7_Uv3x5+PDlMjtX@EquO}lwtfj7;*^v-omlG)lEkYAaLj(Uq-T#4O)@C$Y8;-erFZ zeS-Nwm`fj_4;Igt+=r(x9Ly&K`vhw1%i9E}5y^aE)fR+=99IBzK!QcyqD@z!!Cd3_BO9m#}(I`tVb-ZZNH#AM|zj_@5kpr?oEi} zk5R@MQ2$n2G7MwY_ki)cL7K0P<%w7*djr7h09^>aguFAWt@s>~zg!=ue81``b*94K zBw|$N82RC60n0%aG2TAu8Uug5$@2_AM%MJ3-gRxzQ)*%nV}Hi{evR(Z!nH{`XjJoX zKb1Z$o+~S2bu*|ngFFPoC>MW_Zw>0n8(7<(vW^D4rXBo9P+zr>I3B{kO*uay?Ms*9 z3#sw(k#eqRzh<65QRI{#;XuH?ALIZ$65Ass2KoARCMmHK&WDzkOaBfqJ=9!SQ7fY6 z`zy7DA`ec~p2!>}1=}M%SLg7VgJ10g^B6dVvCGe=6z3y=GX`+0xdO1%f>O>!RK zTzz1QG=oCO`kXHm zK7Y<%`QEV;$kE{70_7oUax-serG3=;r<>_kB5^<^BV= z{(t=UZ{ndUmlN_9AvylzzkmDlzy9mD+<)adtJnfTXn242WImr(=izsMyjohZKM!-R z7dcDc_M%)o@p4Y$+WdRY3f-LL&in`(liSc6a`D89bC%K&p*L>w-){<@$RKJ_M@0S{ApeIl-20pa{u+`Z{9r) zg6lbfwe){-PGCh*?(53-GP~>D$6n}0a=4ku#i4@#{wvq>;?**w@vs&?n+WXP6lUZ5 ze3|?GN4voE%YXfe{~N)LPHyR0?mP^(xw`)KuY+aq--itiU2hrXEbR6&^kOf{&8*P> z?nUtvHS-hu82{$&#E){073OR&w~9PB7teF3ZoRj!?+Abb0eZJE@(AP(fB&DocWrXx zMiNE8&#yrAMqEqhbhFix$20Dk9fvI0v%1F*t)%hXxDyj=unHuxDi-KMRk!H9^WSe| zCV)b{t5`*Lll1P1vsM!YBog^TA|ETHPbk$x$<%OH=(p_4(Bvs2ZC}7v=}o(an$@yLxUs@6o!s8E0prmOD^;Se@K>MQBv7<3&x6t3mBIk3r--imO38 zbSEcz{IlPm_&KMWK@Sw~wZftRLoam472&_Jmdd8BVM(A=63RF)e+viSbrd1QsrMl; z>R@>Q$xsW%vA=NRE_Pt`T4bEbW4DL1z4LB0LY?@mI~u+Ah`J4eeAPp-@&hUQMo^Bu zIH=voL|lDF+PZ|gy)*YK9)~jIsjr~}_cuzp^VxmI+!x08hHi_HX{cC?ZVz{aP|J?W zybF8Tz(VdD8GOVIf6Rd^%n*DcO|cXk2^j~)010F4z2eS#2pczcueXjKus*mDs)y<% zOpMAQkCsmL$T}wzqyeXg6I+uRC$(qU(^e^re`pc%C~TQ#$WFnusXg!gNRx9jeOgev zPoeU)q!*S{3VMjj=i@O_+n*3I;uD850hjQ)r66vP%~ckMfAsJctB_tC8AzKjg9>Tv zHH7rjyQ7TR&Fl}CY(p*(^V-Pfw6-pk8c+**a+I-71rJ;0SR%kuHd|;HS9YI!kxd0S z9zp~a0XT9=W45u2SSjM+JfuefU3-02QR|J0MV!7*d75eV1URDfM-X05*-AyB_M;5w zdE2zQiWkb4e-5|IMYKu{)u}zHad$Jj`SO2vi+~ao9nUVMee6*rl$Lrp(NG5D=o55{ z``KMqlo4|-`MP!Z+iUSM;x$O+iz1uj7fLGhZ}AXVsDO;}i%pqf?G`$`QElnm@>2;361-;O(0?Td%iKYe@8KaIOHiugy78rS|q7hXKOL* zBNWWUU82CQzgGcZ7I{dvw;&w91z~nFhQ}>3&c_cn-nj53S#QFpgfcdz+bn-_J^$S5UW4w*SUu(bhz3<|($+_|?`eB_0dX zjJwQ(e;NCR9G17gqje!u^_E?%xB4!)xTL?m&*oaB`j-8J{>=;*CN61M+v$I z)*5AKj^3qQI?jF5$`PF%@Md)6e&t`Ed*Mj2Kax=!o9U4gjeW7S1x^7fryi63Mh&Bj$xC--m z7K`gUWsayiuQxc!VlZ)k@GlQO0$)>D$FA&0iTgT$5$fs2I3nbL>ov1STec;n=UQw`3ImPH!+)w1vvGREROAH z+yqv~Uc*nJNV$x#+_hk+52;W~c&v9jG`En-u@UAm!SBppJq#uUn+K3aO*3 z2WUq>VE-8RA+>8DdH^|H2gR{B0QUB>gFLRo$eFbLtsw4Da<``Ex6gh(thJg`>(TSO z48no<{DEw;CP+?*-*@%@3?Y}`qTM-=cMnhYDZNYt9aYZ;se^xLp&*!JHW zcr2BsP?6>fk#5a@jyZO?Aj*}dTZf}nigcPW_R^L>!by3iVU=J7IUT}61f-t``&9S# z$M+x5Y*B1Bn_WYz(Ca?~tZ-s~xwc=mi6#V^DxsUv9VPW0Zl)JTRag!$hH79qcGr>J z$Z*M1gN!qA5*2Z_*93kQzLq-4Hn7~+S-7Md4UfHv9r}QOus%WMGBdu=;S)s$xt~ix z)tlBx%KVgTVChKWuK|9qf}v)?hm;X@;2eGRkm{bsNRB!bolAL;CQKe!o;2lJ)C}!s zDm1JySXS)oR?`XTBa;~?QNW{qTN8_pbE?qMhR}UV5c6jJPDR2<4dbB2I%ZJ)Vu=xj zSo9UHA1F$H;LzUXB|BWuqjTYMm@129O5R_X{%c5HhY1pYQS;XpNtDca00iQF)GmAc zE$u|&IeSkYnqgwZY@oL^u^T>& zP%*1L3fW>|IdZe5x}!-1jm6G+m?}+3Jgn4dy5>|z>Rn_)_YJ23q=U+ahq>K!z;kjk zVz--32bRuNRvi3R(?d`UlMsVM!vST&qY(xtCIu#A|MTSg!!UgAzi>B(a1YLl9`}oG z|HQt39TN}hkvIug#5f5pw5jRUX5Yyj6r^Xi~~9_9*yVX#9S7W`6|xSNpW!RM4MZp zr$3^fBjOMqh=+GQoQlt3ytCoVybOnPFT56*4`}n~IJ*;ZsFEwZF@$RwUtvC5D8ihw z$hly1e?wuaO8JeLFm_x3_p3zD>}93sj4)Ra^S$evi}kUBh|4v`fNnMsmao!+VSy%p zh(I?N89K0V_PgJ?kaS4s+pIWCw;N%S?|#W-0)0?oK96j2-0N-3*D`o#cJwkYg0&Dl z%@VEg1JHh1xNF4J#S z@~upC3OLEuBDwHOcCI0(atHJ0-OE?hP4I2RV`2U~63Oo7PaR%51L-SY99Hgs)j{wW zgkLRO#~)YUc-m8l!CIW1O@w_1Y7Z?CTQYU50K_-z&WZ#5&be38PVH9@FK-@;!PN-c z3Cf+RO|VAXov-{ktWj1lpu9dU+?680Qs+Sc<;1bquI=wwtSxnkHGcJ2Jd~f_w=@=Ox#zc}z0VUFn!M0NOWbRow zC6qzJlI0?#@=!qAnTG!p|H`4+Oz;sN=LK>U&O^R3XmB|fB4(PWQe%rs5KY*s#=($p z9G};5ye;ziNc?Dpv+Q^T@P{5&loytM4D!1O(6PT4)E(>;lDdecGkHsYXh!D2WO9pN zO|JFs@}b8=VR`ri%8AEf>s5g|C3!KmbyvmK8On_ZwC6q;`td7wZW0w{fhZY%?mqeG z>=?U;0kX<|@__Qng7D~MmILgRCzo9gYiB6G>XCbJ8P;kC)Orn#@)CImRoP$ChikrNdc$LyI$c2lz*rOkp^6vc6Aw~I^icOO@wPZd z!~B~>YGFabu85|(yX$FaR{!1aUZzx6P_0FrQgcBR6nPo>e49Lfu~BE5d~`fb6FJXP zQ}i_88y-mT)Xms8JXl$Oo|miw5M8oFEO`<}rmFVm0RK6E``z#Uz7ny3!JOHz(C3*dmTf{X%(+2_giM_v5o;tdDnhTK8J4<# z3;*?35epL_7-#D_%o&Gf7VMr~rU5)1O8pV{{x|SXCsc1Q9I&|3W?-33)6O3dM{~OHn9mjDlZM)|?jU zjJ=6DoLUaBN8nWjn8Qkfhw&tJ0dz_dVYj@# zE)1Q2p=3Bv{jm3MUeom_;2XGa=t96cpQ|i|QX#Hy-uqM~d@0zQI2FkP%5yw<_5RIM zcBi6j?e0>c*hFe8LZ(X1`aB?cnvydG|4)zyoo5gvF2>x1SaXRx5Wm$}_o$*zFUWchoY7*M8P?nvkqqdrsX2E@k$Qp1S zKrYrnaqRWf?6K`21nbaoCS}x$SUZTsYpj=8=JbJV-J@)x-R<5ipa!rW2aBIX*+l;c zr(yMTs+w5E-kw?h2XN^^K3=VT6Gbq_7%xa&DUTx3|Ktvy6$XR~UCCfDU{^crU5Ai= z+NBJ{p-cq4YR%Y7%_4B$bKDVmnyr8Oisrpa#8N_Ey@UaE2RzAJ5tFC-qp@%9WfU=< zr3$tYU=QMr+GJ4!6!x6+EdUrBo?zEcJLx9MmJ%w+5fFf%S&lk_JFg>0wIc~NZx;S3 zNzK+$YdmwAvbEr`W4=wu4$41^bfW${;$x`ALKQQDpj*s)Uq3!D7A zJWmk$(itRyorQuVc#_H>gGi`UZB(R|Tc*VlVq9jdO8OYq0mzl10Q}hy0!2n;mQvc@kcr#dC4< z{Ke<&ukz~)Z(lNI7j_G?kM2ljQeFS5V)5^pz7kxgHy4%3k@mE9lRvAQx;W!X=@f|d z-#?xj8>utQWk5G4*TR+kto7}$zZ_P z9I9?+MIjt{C<2g?CKPP5NtAJYVpN^o4u+qIEt=OR2FL}*!D(FCVk0Kni2D};wLw{& z=4ig+_b`)}ppVFN_f?F4<0`SF$x(IdKr9cpJo-KVB-h!R$oswgRWQDUl5wfwU`%-x zA=B^^JW2^NzR9(WmiaWw@E|*;fDFv@R~yfTzI6Foi{D)m}^bIQpNrJtYxgT#R6J?sYA$C9I`ZluIgH? zt@6XmRA0lSg!oSTq%1r4Zl;tLd}wQ>49@WzEu|fewOz^xIvW$F7LSLuWLj=5WxgGH zfvH((sH`~5wWem#M5N z0^`jAANY!LTNXzp|)%1^*NIZ{b+Tm@Qe>JP1^RhFz+dNQ029 zBSvE7dy(?l50DPgOTzikw9B;u#`Y`C{G}dLh7|xga>?cIWt6-sAmu!yR26rJl1)vP zO+h3GJ)GIQ4VelUhhzE&H(n~hoDlPmHdrdiIX@wA7$b#$Y>Jl{s0R+xJjM_vhh&2o zCpV#dSSbzv3lUC5%0y^G3sZHCNe{&z$!YSt%2H#a^vV;q%bLpa`;|52G0szNG(7oCM8B&CACO8Pib*r z>%`Q0AkTn*R}_Q0LaE$Jk99^bPR1nh3Pljk-FsX9vPMs0BoGXF=hjP@;iItew&b1` z+rqizo}rEaR4;?7KDf3?wL@_w#uxBr=FiMp*#_2WnrnF0W5i?|%FfzY^Duit zwpz<^k22LBR^~jkq1FZ3>Dp=gls~^&X(bFF;Q8Nh$Mw6*)Q2?hYmil^MB zUm_iUrY=mtBz|@aCO2QAkD|n#%(E)Cf{de$Sa%upGM=P(sy6r;;JIkv9C_Ht! zH3ZWSAh)_Am~2kEJ5fEQl-<8ix)HwDw31Ax zYHf?vzIH{>i-wn@S4>bd#kl8CgJPp}Ua$>+j!laMonh=vYVsk!|J(ZyFxWV-sE!Kz z^9+1eGb#{o{;>o${!6nYM2Q5*(pP*V%}Se(OZcrc0CNl)_STWg(u9%e<>5s8Ik-}D3kd<0k~0S&}ZK}9t)qCl(7a&OI{&5cO5 zIRUI8s}EBzVA-w7RZ&+IN>JY2%yQt` zCCAH+w40b%dh7=6Vdcq=Fdn;v$q#*)l-UtoXCimXSUrsFsouUkxzuiV>~@^pcdHx` z`?yW*4)rm}mQ%PT70>?=BIb&%)%-tsi)<}Oo48_>S&lCC2Q;HK>> zM08bfy*D)@EtbLJhM0^$vG1YGAk+s*~LKP;S2up5(0+Bdj zX@C9d)~i8NAwx5!2NHj=5J9QGa2ztV5&7%zel}@Aso$ji^{d-57yRR& zzF!nhCP}qdz!Hl1Koir?dXd#DF8 zu`D)W-cN7YI{}r4{%i#ikGFsENBpUen5dd4ZKJ2=_p-gxpXZ%`ZQ*;|kz>Yvb3G81 zz5T&k1}trvC{# zpyKQ=?Loa&kqova!yxotfEL*2f7uxYcV-GOkmys-JkYs);3FMs>OwhNG!-C+MDAoH zG(z7jEgC;LMf0F>vy<2c@5@O?L?{}%(y_T%@jIz(Y3F7_+t2R~Ubk)gTvt<=43w1`3}CJIrBcDETpf(Z&w<3kUPc0LuqLVhmROl9s%CZIOc+yI0< zhyo6MjAW{vz{Bo|0^X81SiwKARIY`-G6 z2=CnkaQFyc<%U2%&D&go6efS8JFNVutT^n=Zm)7=zi)S4bTi@w?~G-|5xnR1+QLXl zu?G=xK-sX1e^A)FG&lxlohjQqsjn`tbbMNOn+{x^hNrG;lVcrqNF3An>2f;Tr<*Qc zrI(k^BmUoI)Ni;3g{S;RVp$<}49W*jA*R?zpbrI`s-1iD75?Yrf?*z4z zW^%oW#F|Px!@q2gY#sBBUa6G&oAFdIBK}vAf26?)7U|rmSW6fWu1zfxEDUM=wxRI< zl9xU-E>GYOPW^*q!Ynn=YBTm@9Dqx*2ILjjY%WC1bQT0c>qQntTNWe&Jg=8brp`qO zbwxKJ{F(ZAgV29ZWvtPSyWleN-@8CTN0D{>8ZdbZwMDVgBp@fHB95=2L*+t>D4f;6 ze+acxx0m3V7Iz}K1VBO&2?XQ^l~T*4OBQCRqQD0Up5OVF%~iTG^NY2L-wR5wgWBI> zkwx(Dz^z8kY}z3XgFnxC@bS{G`w7YrOvD-c4-1Y=u_h%nGtXQZO;r3iOM$jcrb3+lPffV4Ke7(>>e+ssyQ$ClGOt)4wZxXrYiHx=gzdLw?0&jn< zN?}9oBPzIW)&SM9{XD9l>BlMkn=mkmafJkK-W@C(iwbcVcPa7gD43h!HL%td+RepS z9D--pylyA<&pvoL==4_dx~J#58RW!KTpif<*IV;!Ge8YB5b9|4(=czYcA7Y3e=2p8 zyFXlkXQKsBXXKrhs#3qZA$jvjwHt=@;~PZ75wQQH)}E07%?G1LgWAu;Yaq=*=3UE4 z?}4{!GWFU>Z8sjv?F6q`M}0~^3vn#d?Qfjsu-wGWjN^u!f*N(3nM8YjXnb3g+CPVV z;{n_bS3C}{v}w0A937nxk#6X~f1+DO@)^y5#p!aMD^cl4Hf!nuou8>5!d&f|sW9w# zy%aTjoppOkg}xp5!Z>%cm@ehuf!vzlN(gH0LD2cq&BUCKX&~e` zB(J{Xa}k-4Rc}iGB0l4cxLj*cf0gF>Q-ppBiNB3y#uFZ=BDW~WI*17p3;mWJS$TBNx3JU(PR!|K zZGxlh;2x62gP|?V!wouxtD?7^{pfhB&U2D;REcl%QX7ZyE)aJrS#R(_En7b431Tyf z6Z*jzC6XE~37RymH$)F(h_2YD!oWVt_Gs8*pSM(PmKo|>e=LL7H;So9X9Gi*sz*E} zPt+*MTB_QSH$=2}Pq8TQGA8cryD*(crbUAEm#pb7;_h(NSl5P>VQdheLn^xaY|TGX z_>pv~ZN~n-5;4m(rmC+uBGHO6126F#O`0nafdC(80Rns7!9UDJaR!L*fs1QlPD+`_ zh1p8*5Rw(Me{==(AGmZx=zom(fxglSXCKAZK!LfL6eAUI$U0rd3IsNV>Og~Ov<6tD z?nMG4+5|^oU8K}9;#-7BdFWB=*KSPgrf>T*Y%My+vuy3O9@EyJ;%;pFL46eQJ44$p zY>u-O{*G?~);83pbvq9NmBr~G8ueFcCQpCVX;G%Xf3xX~K#Jq_g=#K1t+*oj=F-|n z1K$-N?++em4_1zUG$&PN%$cZ4YoquF6`qMRh581*eh`kG;P32X4B6_Sd?=FiwlIfd zK@;8?@L-i!25@a0a5`@dNUo2vC8Wd0HClBSW^Gp`-k_6Y)!o&{!*eRa-jh*b>~4HI zox&?me^}wtu}bbY+w@^OcP!XZLdz88q+#`i~Tx9V$5$W{xB>~ zsmtRyd_ZZOBVq6ctQ?-dCrr<7oxPR2N2g(brve_CNnc{dnC0=62tI08K}sc5SBiK` zB@8p5F_~;55@3ETlt^2XasKSV*FtZ2AZF}8fA}3GGPu7n9jJ|0^9%Wow26)aGg-P)iTu@BdQBK<=DVgZjy5Q@FG?QN zik~q`Y0s$wtF=L;xnD9K+4r>k=dH@vnunq=DPMvjOG!1Dm>G%B4=!M4HYLWo?hZBI ze+;}sv{K_}QPnzoE~?sDVzeF7A*nFMBTEu^Ek=1&E2d@)oCItkqX;d9*hGK%6eW19 z*#-O*ML8+yiy1?3=$Q&5fp~-_0Hm{00YoxZOyZ|`=ba0Nug_3=0ibq3W0+PglmjGJ z1A=-P3@0hK8us_lVhc$UOhnY7I+t4@e|{$1W~Z#F|8D48a|;noX&JRhn^rm=f9c60 zVP%bovo-YWv@w7brb3*m+vSd_smXnl=mXM;xhL3nRXdw;Q_2{tvwJK`e|T>DHS6W?6J6nL}P4?lijU*`*o zPqqNUR^wZAs#uu71+cjDPz0vN0EV@~wUSFMsMsw|7K%*vvtu$Dg9`_qO-2vVXd543O>KXS<8`GKEZf=Pk`$f8#Ba=#FxI+N$V{?{wy^)J-Tut1ZWC)-^QtBR9}x_W7{=-f2 zR)sI!1kGI5@WH@Z;*X2hdLU#HZqwypS(EdUVbY6td<{la~yWOjrbE%zp z@{eE15k|UmPGHzjv((Yfctg}p<(Zy2Y3{~V4a{nVXVDfV{%RDY(6mSfEBp)GF9Htr zHBE-Jxny8=9K%pvY9P1GUpQS!QR{!hX`$4l8#3qMr!pSCwMY{gf9O0dy)VZ3M@(ungoXAs(51{CxlRv8>A#UzjJVg24=bI3A<<`Cg3XpPrAm1`M_C%N8)xcUl6L zX(p9e)mkc(S=Y}ex2}hajZyaY^OLZ*pYPA!Hs>*w#l2@f^Oopkb&un>SBZ-MZ#C~x zCemb)2Z@T=f2(;5e|yb&8mzFgCr#c`W0eLRbC_OvvxhC+#oc*anmDlBx>|`aJG_0q z1I9WPrx`fVIQNNbd>vPBGOuu}PrsuWuqpN19y62D zMpa*o)DR=~TFsT}-R{;}<|5qYON&1NQatXC0ZJ_|$ z1!$9~JB+MjYXMzmq+Y{r)EwIaefs^gFIkXJq9I65XY;j8Q%bV%eq@@K$eXrftoEc6BBbx|zZRvdRlvtNBAST1mPBKd)@#Z#=}^?XJJ72;(P0&u&1`0hPKBW{!g zty=;BB76cB$EN3x7D1MXXxk20B+@IhTm=-W4`#3gf3w>V%2c`coI~KM0GN%@G?Y|C zQKHr?$aJdKELQQA*AtLtXp^q~Olbc#(Rhnh-tARYt7bWYwvI;78c1%8v->mbG# zDG(gA<-*9@A7M!^MCsByu}cWum1Gva7lDdH(_AXk_~?L*wzQ=$3`vgtsWGU{45A`= z5IBorf3@EEV$ds(O=qyR3aJS0d`pQ8J*0ep%y&gfHGVnt?%PUE<1Y!V(|cEjcB-CO zgEZMjohoMn&hEH#w|%w;4xifc*#V=I@yw80bSt?HyH|If*#4NP?(W@9Ksz#1l<8C? zACgR`UuSU`33J}`_bZccY6LxqQihIK0`u^vAAIjBJNGnk$K zEo^$+%P1<>rqY!24#2^mAUz^gHG4yY)TB_(82cM#?ynR>YQ;HR9?Vq)S0HaXhj`os zf3DTAf|tyXR$LEoOEWk_(HlWq*&WbB%G8?XlynLRwh~z z+dK^hI-;U$evTXHZ%dl09#tH)D4WXIj(R8VS+Zcxl|vZ@i}Xg&_hf&XgLon_@Z>4l zbp=A0atob?T;&sd<~Ij1L=m;0=6EgCKEJ1eI>>4&{nKd0HENOZ%+z7M)sEkZf2oE( z^bgsq=GrN#Z&ahuIGfe^7bdpj@ zDC4}w1ANy~6$E~M?2S@u_p~p~RQKY73qHQrm3q8%KC|Gkq4hc(os2Ke;imE`apYt; zf?cYSXT(L_QD(K6Y}Yhy$gw`Ze>CoSTIJ*lu@eCOL(ZDv>!)~fni`~Iisw2FwbytF zO5`(w>R<6Vl+eP_(-wjI8%2uyd@y6~3v;Q*t5C=^l(WLCltVofe4v7J!de(uQf?!I zk0v@;r*;VX<^6{@2gLx^GbTrIXB}MV#&y_vkCpXm_xziF>xZU(>duYdfAMP9LTA&6 zi2Aup@}hyzrw|^K>CW0y>Y+*tWBXQpJrdp8h?B>uYMa3wpn2k97$?UWHGzbCty*`JiJJlJng~5hpWf z&6)^u!ONK4%>Ho6HgthBe~x!Hr?qt!ut+tKS2Sm0gURO@@TH~ zC(Bu|KuA0KFV%XZV(4m(_6K_cUgy#ufw!NU@+{t~6}^<0TFdc55cw>2n@7)JK~A6b z?rvr`U$?6}2@3%Mk+-)z3C96{k6--Z_xQE_aqj*2;@Ow~`X|isuge~QyqLY{x8|2G z8dv=qgBRGP(w8*&QfxZBKRo>|*4A&NXIHgYA4ZQeVCofB2gauPt>c@yyf zl|JO>(GZMGPsrU*KHWEOH3fa^6;H&By|j7soaQ1c$^}`&De6n6)f)YO^rpUBLP73Z zGA#}WX2iwa3YGBcPEzDZb2qGoVQsG-%&xSFqH;L3D z54oT1LRMyP4Uf$9<5#zTP8yP^8l(V<{5V?p7pKbwe~Il!3jOMfv169m04ddO*c67H zfTyjnp9y_zKI(UarJt2kB%$4id^#(qI%N&9kG68)(5-!sAYr*oCh+edbnjOJDb0T| z!ZtBW5sL)VbwUvuHdLL|Xo0nV>oEeqGz(zU#t${r)_R=^O3I#D z5nqo&^APa$+os>zHf~jHU6Qaz#nQC8pRqSF!3|mB(AxSlwBkwq8>`pOmw=Zq$^Ciy zl8M=J#@(lnv#m|pKK9%;CuErt;iB`K5h?+o$T|Bx>w_z%3!L!^>%h9BaNy&2Aq_YD*nt zJzbrSf`+*{3uieEZP&RsizKsS3K+N--=P~4UvFIe0v7Ef?<2kGU=1Jeb(6he`vieC z_Jivb-tG0z7i`G}b7M~7bu!=0blqcr{YGErjBE_mV@%?#Afh{E(~TWkrl3eW<1@sH z^LZIzB_bWme>LfsId7s+8pK^4`Id!oC-ACP+|ZPvM78JP5)o=}QM|H*D$v)aXbb*F z9@}|M?bxoYFx6N2JN)&|Tkn~mS)|@!NtspRnUKxuDkaoV>u&7kG?lGeO|2_`)rQI> z;Li|cjJCRqyl@o&ks$2tz6U$H<(fIs4LJo>=Qgt+O;>JdncE$YR_Emy=~Q`c=s=BE zq@dB9Se!0r!V;m5)QSESxS>aI#e)A3l1va6xl9eEAv0w9Y4>P13@ z0%Yt}Q#Xkv_yfk|nV^#_mcL|zNvP5aSp<0rUmmOkdm?9I27eN15I*h0t}1L(fhs%= z?We*6C_XCqFneTb4z}K{;Z!(Sxmns6&vSMrkJTLE?apCVk-;(DuT+$O%TWjqh7sC? z<05a(1-A1hUlT=r>I5AHfAgSudDMbRrtZZfBa> zIQd!S&K{~43T6YoA_NDbp%qI=wN;&on${6uA2%JHU)1M zCM@u0k(ft+^JuN^vOnr!OxUT*{DG&T)BGJxtJ@rHjsU2)GAa<&P^DBk)hQXEUP)C6 zX*WhNS*NhRm*41Rp;gPbqN+;r@4Otp9^6v9U^CCu4sYO`H>U3spNq(7)cWlK)-i?b zlIn-SzeB%_=v?H5xj5nAtqPy$r>?Da0|FSuKkM0lap}}rH0>wuM-RE^HBi~3z5CVU zvGX=q``JJp+{`GWg;Dd=xkzf^(+LGrQ)}jWI?=m|qjojk_{j+<^v1nSsM?zjYp53% zLO>(MLw)Vda_!9?lylujA)ucr(aZ;fjEZ&|+Yd+A7#bau*6gwAV1N5P zbgwsju+A-$&IFuUp3>*W3Z+iKfz|tOkwN=DV^${Z$#N&7IZJ!mPr_#LYAzE%;vkDrlA-yiA`oGcf&r z3d)jpGKrR~w!QIAcanZLRK`7#Jd(eHD_SLMSNqN*Bor8PuEiIhGZ6<0s_j^^bR0r| zO@{>I$y}xh)bo0>QCiD6mY|ET=!2&;BN7~gg22#kg`PC9f{#7KRH;bMq(~Ptl`OAU z={mYj7QyFVeE!FO({xX}`h4)IJi=x-hI@~#(~UvsE^Thgaj}S5q;(!e>Rua<4i-oT z!Z9tr3IrLO&yZwori4jX52-)meIiqTaYbOnn=Ca5!M8GGatYPhX6$7YQ3oan%rJrw z~q zwBuON&b$W+XxBLWK=QR3j8ymg?$rJ_O%$`>0Te5RTh=B~%Y?6?+H^owElq`g?1ID^ zRS1G+y8bu%zgK8e4MxxO1-d-VHQH?O=E`jaUp0;~5UOT5{k^yLZa2a6F(+Vq=bPD& z(QUY5nhGh}*j77iuAhzVQQ#osx1C1wPFV59;bVY`*WX!hd8voE~YpG~4ZZIM0%^j?lHP4!n; z3;fc`Q~?b|Dv~w&O(MDICUeE72jz1>qaDUvx1H$rd^4?G)a1|XH}Rmj006UlqH9Mdzt;k7GSskcGqk? zBMa$9h13V2c4pHb1v>ZUnccP(^A0AVt%^rGzy7!U8hwR-0_+%6Ua9zsUu{&lGoi@R zj+*ZO#Zh1;gFRF#kq%a6ShciHr1KnmbEoK;Ho*$0w zD}^2asR<6bsAuDU6?z>miic#L8n2Krz!7p~;J;w#@S#U* z;w?!ns4Hrn1u&MuArWG+1>6DjsOW!Er0MhLt$ouUk`rsDbTQPBVFw%wuV@LhnhdWQk}{Q^5?7=Lj^59 zg-ulFJt%OKxyufTqtj9!dRH%FH@hs-6_?zy3x9`Pvr^Rm*Gn&QuZg31D{heuk za$;|$@~N7Cq`!~Ai15P2x#=Bj?Z3u`>7Ik-TexkTW}Mb8NwNDVH2wrT#8xdXE^Bny zrSZ9uRUTpV_oZ>S*$46eR+v?lD)6d>87;sT8MM0=z1#eTQU`F4+xm@W5ti;=zc_68 zHNBf&n}M39B_{Qu{s6>kVz))H|BLN_9q=TP_G$!wO^-~Q+8ABtnxw;7nt|C#ZK-f>^6HAHnlA=Gh4>K#YJ1wS9q z*p;Y%(EmNxOQuAs_p5(MCW65n7>8%tAj(3ht-6NxdKtzd+&p{sY*63kmc6=Z8d?Y1 zpYtx|H8)f0oL;0{yWv=*5JYUo0Q;J&JvIih^VgyQIUUKiSYHqXDEB!2iTb^T5JF{N+z?SRo~tYl(X;MeM^Wx+xt0-67*FXoB1|tp zotO2tmG`*BXFS@6zOA%t^x(%w8+L&pk^6X=Nxc%uMT;p2qfLGZP*Of!GYjTp8hGz# z%LYGNGS|oOe$$AGN$k&`L3QT{>6<-&$h{MOeEEXSDC>OJ&BqRW+AWdaXmL}TFPAfA zIv*=ws=iE*dAoZSHsZQnVHU>?=h(;E)UXvD6R7E*QBVHdbYOi<%ytm_spt|B4${vx zM?WFA)M(~9THCR%MIu!q)9rUaIj;(7``tPH8}qSymF~$>&5O3w!f5>Fq?KcT^R^#W zSzZ`J>&nu=#iLi6EvW1+zt;He(8@RMWIVnONc;R=NstbHnp&LHRLyA?J%g2W`?|YG zmEDy1Nl2D`D)y4tkYWe@-T`^f59=G&BZ6n2`?}Hv~~BF0yjLWi+}krhTQ&l=JDfj z0@R`AF?s@O;T-A?@XvCDS71;4Ri3)ZM=$}OJ%p=(PHB)6RLZISUm{NhMf|CkXrO;CwJcT}mIS)RHIGnMUv0KmNySTu4j1+}{ zR2MhQ#HUmwF=WGB;Sv~#m?aQu3PmW{oJSl})e^o~$l#Ju;x|;=c>n&pOQseJQ@#*O z^Mve9CTYea>?Q+Yiy{qwT4b0BRg>`&TxJIDW-(<39CKP|?T)8w?I??t3^mq8F?Nnw z?D3f~^*HIYR?NVGZyP=hjTSflWVt{okm)Fq@hak4S1vC2$Ks)0=4quai_?k$KoCU} z|19ZGIK!-%fg|;mDHeW(KmY9K1{z6XQ~zvGrV(6m5nPilNRkJC68(S@&D<^m6!Q2Y zQQoKNS+%lR%GLBlDlHX@d$&FN6}e$m1|D2OkqwUxUAqgewOnGz{EDJa0VWzfR7xSp zouUdyot(VFT^&?t;fhBhxd=Ob#TSm=O@`&fHI*RCXRJswkCMlWw5E#Z{ur?vOSWHh z$|I+a7jB1ZU-80!6|{{6v)@gjLKuTC1+^zJDIM25Io2QlD0=Q7<)Jj(i+uY~?$Ifg z12D*J3}}OxVrPDsoE4h6U@QatK&X0)RhPYy^;#$<@OFQ3$84Q6?0R2ji6^Od2CZj(paO*rs}58- z*y;G7t};-Sj&|mUAAi6{Pn95QjE*Ssv=ofcDfK~uA*NxHKfri8K#OC@B?hBd0ftK% z^iio(Xd3@gvj`q#$V)&^2lm0?isrpa#8N^}g@l3QCE!WkAc?#bAC1w0eutvNd80O2 z)BuHjB=R&d*KETRJYPHM1{Er^Kv07!hdSfk@Y+jhhnhF#wtw(ziH+Rxb#EYj;MWlQtcC#h~u{8^eGhqE(^``|JA@je#G zJ6B1?+_!E2Ac`nTsGS^I0dbDa-l7uLYZa0(U%pcW6@+RUiXeQSdRi!lXr-% zD0_#W9f0eh;(uY>a0TxUWD2q7CMyWE{LDv*vKGbeF}@x|tDQ>S4mt^yZa1?>g}y6+ z4^!rjqK2yS!f{ST@%3uFNI5%GzHtb=qIes4wNZ(1ZS=rttQPnzV6KR6AgD;n*0BLO zb}Dden6#T>XP;al1$Gt+ec(wdgABr*QngW$T5g#ZOMiIkoiTFingTu*nP~3%>jQ^vH15)UkR?$n~Tci7(Su3oBUbb)WsQB zN~fTc{(t==T0MLo+&q7A;i4cQa5sw7J-x&w0#L6_j1M&EG=A||c}L<~4ivxSLT1!@ zE@LEOz)Y+xANX%XI+GY_oS!8YQZbGv@7edtHLNPkLIwNKUhqJ|CyHU8{3;UVA;JW~ z+rBb7uT}X;aB|LYnJHzBkmr8VOu3OHAzTr9f;cDmT$l3pX54Q6Uo1qzY4~e5SL*Zjk*LU z4L^a0-MD4Q2Z+|%LPAs%14BNG-GNevMKDdPOV}eq`*gvhNV7SIz$fa#1mH;xroRUY zMt|*X5)nY0VZJpqeJRGBM_So=)54Ca8KkQ;nxDFib+%YQYc&YYg81|Vo@ccJ?-?4* zv6qJ5sXR)EZ&l`{u{+qIAFQ7b_&-*@WCWWZ9Oh7m$Qq~|Tea$J9;!9)=M(geK``7s z)E9jId*3PdbjCgu`*;>^4v^y(VFNoPKew=I31{r~K}33uB@wl4Zt@aTJ&?S3R> zC*677>cLBq?L-|9I+Bx|zB#!uNEE4RfdGR7Br{q4-{0C(4VXA8?WA?rxoL|i6smSr z?b_qFQ;6P1W9zkA9Z^WnGS<8>*J@?FYR??uAQRzG8V?K5BeOQqAD(_PwfZw&%UzxVcuCP6zMK({tf7e)IpR%}h8iWx|_!=2hYG0Sc*5_IzW!^sAnpJ)*hy04!DN(*ZR^57V6BbE29 z_=W;{{gq8G;g4QgUq_oe7u-8m^?)$jl-^pNFa*8uv4ey;%BD**Qjz(=S6^c~udQvP?m{;tG-_l336zjyKc zDun-@)!te5-{|uF=tciEl==82|8*1COYnDVd?>m9u8(p3D;r7udmm@^!hb_xKCktE zoB{Czv43HI=BN`8GvHXTh=Ik1N-ItTq%^{OX4-9Ff*cf%Yi_NDhDjZm2WJ$%sfy)L9oz`g7;nnRxE zjpEMQUixj=?Y1M-T@{V%=~+*m_UGE}?B}H`866_#R{4#`}E7l*r1I`9d8Z7dn&UhS_OQo~hT{9?0Qi&NO~;_-vm- z0nfM68SdN;06W8su635I-}h^$et;u;S*Q4bYw(6ISEYdSmd5wipJZ2+gawh_h0F$a4h#BB#hIV!EggQ?)Gl7=+$G9v^sv&;J6H@$onbq0iwOdcZ*J< z3tC=a;8gf8&giT${qU>-94SDj<9>o7(FK5u>Vq6J+FxBstnh5N>`KdA51>QazI-*= zaqr!(rIYisOI6&|YN^Mp&@wWKhnV>VD66cNk175@fHMbT+eU?dcF=KMA((4CpF@pt zfQj;DlmOEI=IPiCuKNNzS!!}j?UFm0 z-dfAITlg*Y(AtjK`()PobEmVuHTONCO?}ckz5PPsZi~>bExPIbN|U>GC(2#foqdLP zM1>)-3FE;_@-vwGxGlwI?WE1Q@wFdIZ~TpucmlywGZi{#+ zj%;T0p&^`MVIin#vO@Ks0P(-f5zr*3ck#|B6ySsdGN~(46uQ(^XjDD8ih6l|a>wrqG!R~N42+XVV?44dHQ^t!WT@$7K(;hpHTNL>YT6mSh`8WeUEJqL` zHfgI4$6G*uXVDedt1~m2s2MCqUO>2HJS}nvNmLM5Rw}1Nm~nKPY7{eJC$X;V=??Nq zJ7x-8zIb{1>8GFm2|X#eOGp{{`rT<=0ca$oa~3+N8OaE!K91g0T!;}^ulaaF8#dcj z)B1XMmj)zEnnPt~jfa3U%n3d_rDuS*;B zD6p^&E`nD9%d5kZoIim-TKyIlb;8{)XRl{^qdWf)(;69(Pbp)YTs>>dEPeFiw^eKjQjV)!t8wNUZ&O1=iJ(#M>ZfC0C9!A@0~_%O;PFnOl4IMqMFRhzP~j8=$x zS-VCrghIUezvuLfCzJgKx(YBk{7}=XH|iQT`XCG!>NFA z45K(Ludq~{cGs+IdZ{sIsm2Y2%2?BzqRv37)C)ECOY%VEIQksnHC}lZY^dt5u|4T5 z`t*r#0$Sy-{DOY4J|%%-5dyonzl0+oAf=v@V8DgyxJ00}AuaP{9G&pW#-;bsVNgwf zk6`%}gz`sMpi8uT_($Pj`|eHd^>ps6Wgm>B$Tw<|9M?vY_sWu;EBMsKpv842lmfn__WL?W(Y zjv($-K1a$km$idd*zgwJjH3j1?XT-@Z5;0Y3t;Wt z`kKvSWDezfGAu(W2hZ+9*5OtRSgNwJSh3Kq6PWr;vvH1h29%UQ#tKz|@(dxJ;7IX# zwY!~qvflyTXR{ufTrIEH%S8Aloer@dt&C;F#6&?MOzKawXrlznH)ij1mI2x56sy$_p1z=oeRz`(3*A%Q*O|LyR zKlWKZ3diOu1{H^|5cqZs;H9MVEa7Mw4D*9o6^evf?WkqDvp0>Km(FM&$i^~P3@uf0 zLdBbmE-N;vXZE7^SI=KlS?8I5E==itnAxa&|2Ebr-jmH%_#(*$cqI*;vPNeaO9r8j z@v&6$O8AEF97ycXJTAjw47t7?3N$(H@^z^In{8&c(b=}Ui~9Fdx@>FS6cXh*K;mg;+!>Ba)gf! z9T>QE-^p!?5}y-4^$hdDkjrH5HA=H%sg%SZDgg}g{6ulBJ7-wn31D%t4`Zn)hhyZ| zgL=LU-iv{HRjO=J3^!kY5+a$=ltqaxkj!Irb)uK}xu#uF9XC)Prps^&Y$JxM3FJG1&B_@N1h6@nJ-Y&2| zvhd;x7ull-6_6nBw7kN)u+dN(ye7|%!yWMg1o0NZAn>U3{R0O8r74S?I*!h~bZV;Ii?+UO?mQEoIROiG zdM=BYf&8s4hjP5dD4=Rw5>!^G-nuNP3NVb3RaV+eV|yVj3%!U74YyRraYGp3#+Jy) zT_MbX@@%Gm=M{e|vEg>(=+tI=a~}GEISCT;0si+udm`(+#IoMY>y0d{twllTy7APm zJy-AqWiV^*5U(PI-6ClF`mxeCamwq9VLJ@_K5z}G&aZpGF3D+}<>2m5>n=Miqu{%? zfJym66d0}GDq&T}jcDYFR(T*ck%p6d<%31iB=cQ=z22x_s`ZCgC!fD~^$YD6n8zWv z3wGGOXYg_N#(BkVVn7aULdkLa6>R)5J`UWI-F9_QWt=4f^kDsuywi`@(b7}I`17g$1Tc@ zE`|_d|C}*1FXX1T*OTWTgmYfP)xlUR0{LQpgg8_k6^$-chW9;aNm3-+)7r@0yzsn9 zgy+!+aO)k}4vxle$Qi&Kt7KdjHv?}?U@~{E!+EPV;^Q!ivjqN42qp*9?SyO`E!Y)Y z88qtVb;s7o0L`8&?k$@b3T5PAc_Us7Q;R&S$qkr`J`9 z+QPSLa+T-TUVb9Gr*xfDkS4&Ah1<4mPusR_+qU($ZBKLBwr$(CZB1)u_r~tqMtoWI zT2C2KS?8P@d-0o$4^8Jm2LbpyWdXrG=<{vfxO#57@kv*+|9QD9`CFF7B){+#8U#Nm zD|V1G$6JMhYu75O`s?l3?|S&vxp=`Tabq zl{mC!ldc8D@u6fP0%uCDk!j!XFv9o*U&u*7tG{xD;y9%Tl|^e`76ceC)q{$_N3Uv! z?>nX9aLr!BSj9GtxtoRs?K%Q>4npNiK?eWTs~*K=XgCR>n1s4q}od;62*5cP;nr`XA;(rHd#Oa2E%DQ zoIQZ)65kE*GrCG;Uy-O$V=p-tYef1Nmf&75G1rR+-# zc9_4(XsEIL?CXPNzb9Ycy}ikG)V{6~LFNfhdt(M$Y0WQv$up(VGSCxggNdoyR_(vX&^k`AxfO7tm!_Zkz0?{^Ae4ua$fhS*%I71@B4CR{;nX*N~1s4apsG%svsh zXf07lcdKw##fY-9YaXo~ydF26HSRX%uV;Zf#89*my(t^R^-}E{=Se6gIm4v*k zjxKysm-jn-E8!Xz84fCa_3?UpJzP8tGa9PwEw-;r7UK#%MXHrwCa2E)srA4#;OGRA zKYMKwg@22Gs;@ziDtnia;m}{Rmg8Qj>Ohu%CEDKZiY{9p$CwrMT4l1B|KZ%M6gk8VfZ2S zh>j73oU?l|$iWS9KZUo=i$5WNWE3agBm?i!TPT-cC45-$!5_IZDif<^c=FZ>?8^Q| zz`gvU|7q{|i00ooaNzW`-G{rg_whQIkpC_c<*5G*EY^yJJhOs-sKpxk&K7B_@kh#v z5A^`-U+Oe9v^X~^Mwz{;_|ha5I<6^>tV6JobkC+YopJfX1)fow@8arUMilD(Bl#8hIxkxO(M##)W9l8qFDa z)qP^jHUdw&s@R<$RzQNg%$%5xjXOxAm;uZ%16O?#Qfn`J`W|Bm6+4HFh}HIQmSZ3W+UUnv@z>w&u++{aIGhx-EGWw2Vt{j@g^AWAYc(8{%@t1~Do@BIk;tcIo0Z(|Z)HNId<*M2_yPp&9+FY@_zGeIFn#~J4~l4&PaOUWeAOZ6W;RzZ}WHz0B3 zBbMO9Gaj!qZN19ny*1p)IeuamFn4axl&&o$kh64$U zk`PV)Y=CT6+|+L!l`i;9qdyI}dPmrGmLvdf(NpAYxyYKB{=6Ufq1W(b`5(8TQLi=( z=HK}0`^x3Pp~-l}8iIMqgoJPo{o(Wn#fK2dK5;33H16V5GR96wc_HNQVLsa*<%iu) zb6?C?`U$iSlTyqR_AU?``)76`CJrdNwi+C^BeXoM2_6>|(Z%99Y~-ZSW{L9(V<-Sz zgcZDUmaHij1@^n%`pmx;nk4DjNg?#eOod%D`)QRoM9$CK6yyu48t5O-5^-U1p-Suf zJAXIaFj|hp)~$qnHpMeJ5LJHs4G1g@QecfDFfx^cyFpERr+;7-gT&56pLsm$8WX76 zp_c*_-w;gd%`qQ4JvBpvtkG>Ee-#5th)yP*iyHIcchuRjpcg4>o*VSs3*eF$N@yo4 ze!^z-+5&m9M}@MQDQgrJxq^ZoG*`j1>!~wQvL%nE#Qm3{n&d=bBlh%5QfxwZ)bHY* z@6u*YtPH0LQNx{0v*bS^B-x4ZPi$Yr%SFlIQ?YRIIbsK^ZpYhrOTSf>0=xjbo;a`U ze%;4BH@HINQJlm&AY@GWgfmJ7=JQR2)%Dep19yw2`IAX~3E9cs!*}{MS!UYP#L&}b zokpyx+1xsQ*(E0R3k`hnw4fN3kP`Pij6~lE_Y&lL6?oz(lnhehBxxyoxCR&(;-{%b z(H@aZ1P%|%_!7OO*c%j)-mU5Xg@!KI_cahAP9x)GZEOgWvf|#kM z`-64e#3D1`j_xs^;R6g;OZ)I>58`QpKF!wL-Z``kzFnAvHq1Hn4gf&6UaP%dAoBMN zlUKBKmJ3%wShx_A?FJ|F@=&nS^UND-nDgsBSuLkk^D%I-q2`}T>|#Td)gR&+b%DKr zk@)c($ZXk`--%VXnn9;4^tlu#C-q`hJsoa*M9z&8>l6k zFC!$@<}kS+wLOz9$#vDzOufErJabm@bM4DNX7N8ov<`5Og-gd{Dc00M6`RP5zp8GA zey2HD}1wMl|EuA6ED6* zE@weM#iiRIuK5`CVK6m7Y#x~!T2_2Q2sfpfiU+3D=+ijBHU+v`r6x#86iW?p@ZYH~ zg#nIawldRtcl@|&c2QjdG(654=G6z2+NRJK;wx-wjY?P@Y?RP%``v#Qa) z1)Ttu32k_M#v-|h%zf&0l{B5=OH8j#M@Kvjve@=dYt!L{It|(EUVidM-rM#p`Dfgq zC2|9b;{{ozhoyjsB;KLr1GFBGY}NoSlGOU0zL%T_9y96gKAjT}+TO1rYTp{hB-j-T z78Kw&BAwfd&A@PE!`KWc1Q**(!m9?haEuI;Llt>WL$POG z(YL~qnlI>`)~8Q(o*u}C59Bg^#>;FWarKB=fehjDVo*j-k0*Hj#lhk;y)!Z)_B9~% z?;R5r-5MMpabud|@u#f)OFgFZOa$%oyyiF(o@3JZy9FF<+U4*s-0t|G z9hnWt=UVrnz*TKv2)8$t=xWOqY+Ah&yboGC-VL63pvpCdVrXMpxl%QuB#X9%y&Oio zX6PjJ?A7zsO#RI~m_8yMNz@f3DpUZ%kcOQ&New8*Zw^blbjyN&-$UkCSF!6OAWyk-e3brOSQyN6jP-Ht3PM96hk z$QBWOmY;Csx8{F~MgHQ4Z*UasKAVcj`;#+$!Q*VLH+yS1eJ%ir7brb9mE6yfO8!mH zVvO){5ob$Yl-G8$d&@VOL&OCjb_H4e6*-DEiFHZf^S-()91Ad0LxG_ktS>x{?eg;% zRaji7EJZYJm{ChujYM|k0JU$rvF4UdxiiNVhuY{hDN41)E?-}%T5`1?j-QJJAs-0> z15gsea*)mTZi~4#P(ln+gOJAi4RYp9EhJ(p5U>g*!rLCTE%~QJi}e6pIvZ!`_b*Q` z&8Rb08L@(r_ZcC`Qyxuy87>=Oi=R-I!cq4@VmhJ!rc2V3^56##)NU$>NT8?`j*1#J zZEat(@T9-Mn-dD~xG&k;Rygn)C9>5b3{T2Xl8pUo;eEV3{PRmQCOOuPIz~PpmXJQd zLD=r%XtzMlOWBpjuNwj|8`sU$TKCt%(}WWRa${`jCL5!QCkHvEe7@izxsi-hF{0L{ zHIKdJPM5a-TgpytSd4Tx6*B=_v$n~tkSJ68X{QAc?;+wxRABt*bS&-ZcCT(b`@E|} zSeIB!Fyxpoi|xKm@1zBeQr($`2j<69XcIHCmE9T@t-3mADOCWV#$JRr$qTSmB$}@- z8#^2+X;Lwl7M2Hk7*V7?(%c(3IJeHcIM=h+C(vJAIUa3uI^V^`96kSf&_8L~$sHeA zanR+i+mH47)c)Ai&Ob~D<8V;a+1UL&|J-fgP-ypv(ph z_#HMTbB~i;3JnRcrkWWZ8J;Wmx5QDNXJk%FMxm+(qsA^Pm-$7TWI)lp&v$19`9!|@ zk-#=*XdQdAC(>UP)LvLG+VMwGV72=NhELv1+W!scJS@g?AM|iFOqe&CiA)4AHCL;4 zQ2s5~fx5;NeZ4L0>HoNlgoqM;Pbr&sN{+&7xpY<&lJQmr@owm{GR_lKs|t$| zqq>Ydq2FFLr6+u!9x+**9i?;CX+)6fwZv$Ym^kp;77wmFwEQH4A$(DN?dx0=8k*Yd zaW2O}b6pp}=lmX;8L8=?Z!V{X_~B~;KLpi=In4JYYSIwAXJAth+ANkrss;3cpWf6y zU4!(i6@V)#xHHT!Or4fyi(k|_+ZkJL*J9HH+wYBkMgc$ZeC4sbCWp7X8t0dc^ZSh2 zK6pRKu07Bbh8f=b-bEZWrnDN$d}UR+QfQlND7*yV9`;52>dPsa;k|yz*%y7K?sA~E z2esEt;y9=5i=;}J!<^XBEdXm51Vp!3OV7HhxoKveBLy-pDM-#SlyT{`W>Oy^vjm;_ z62;F)HQ3=$#6$#-S?QTt?k})qo`vI$fny1$=~gkIA}Pol)&WXXYt3 zc7bgu){>r=I4WlsV-v}twk%20U2N^Ttgm>RNk}b=hdjf0Q2fL?zhZq~iMluMi za4!@rouD@>@%RDo6YwQ)*1z~&=M(ko`KS}!IKM*Snb0O_tQpXSMf!q41B>O;i za;niw%4aB#&77h-Ak?7O!ol=X!@o^^;Q|gb%SYk-V&uePt~9$H#Tu zE`5TPOU0{ViBIw!!PL`#uHx7~9 z&mxlCX8SW=$@za^@O!ucT7DvcyCZ;e6kzN-VebwH?fM5UXWxl_CnVTs84z$5tm|t+ zK&%777&KuY2z$}# zaQ{~IdBw3v7U0Oy?wqu{&NwjJ6y8&JOUIblbUw7#ou5Nay``M~% zmZR#HSkhi~b0lnX|Hs;&=4ti^1ST7ISV9t0c%IJ52)55YabO$Mp1;>amDTG&kT4pT zjDNQ!D*y3yFmIi8`!)zx**q!#S`V;(t+)2*^zwjGyPW%H{9JZ72>B3f{{P@fXy9+* zZ02dwVC!v^OWELGsXVRMK3XrP@tIb2N-^X?()c^2G+7Mn*!gGC9aiOSJ8!cBC;~Bn z@x~Aft}VPO26O~y4ikofiK6(LUHc>wpg|gNfL}F|mQPbIW8(}7HBZ8>AxV3tFB1}4 z8lV~MftCC~<_$)Onp$)X-u5bsz*!guZjU#2IHQ;b`qX|8!l!w51)_f)N>Ii2PzSjQ z!?{L2xk%QrP%>3sr<1S94txo|b*t20H%<~C>=^)o&@f85(RWhY)ZWk+djZM_;MEfs zC?}y@vZ`Dwytu8MUZms$irZAFP~^Zt*iUCI)bP%qMEG1uOWS7UG17e^{H0b!a+f^# z4G)*1#p^MV>VZ?Zno4b_hJV^zst3wmgvKTmM~+fiIRL6$G0Yq*^E{`Ccec8xF~3eL zz>kIUIS=}|n<(bDyZ6_Uy!RX&;F?x?nUJj@?CAh`Zd)F-cI^BV(U?$oy#^b(@iw)B z0itlsYEV;Ugw8EejjPTEni?F`!OQ640A3du`sE)oxBK0RV~w|>{r-J9$|@cOY*sAR zL1-dM(l&8WU`m}dNgvh>;2s^+&j`a6Ugs7 zzH65!wRW;zk2}8FpA0{oWeDU0%_yWmRuF>u9w!_TI={=sy5m+K>5Jl9D z`xOS=`-CG-*|w)!51aF-nOn&z;zwM$i z;M`i(1!|@VcUIxhr_ef2N`ICkBR2T;e2(GJ4T*%&MXy1m#Ml?p`iS)qUnBOy{Wj+c6p28<+s zZ271kRVsv9Z7!L}#*;LLC)GVxd8F-dpgIS~UsE1K=+$T7Mg@0{x8H14*SEBX;Yv0d z)m|^yUQfO*Ty0A?61OALPCK8DU=Z6uK|8nKxS^_Rm1Z~s!rg-kA(1FJ7tGP(wQ*ge zsR;YaTGmiMq9pwNdfH}v$0U}v$F@9Jr+>9INa?nz|4O=D4?b={T+P6!#vy8dQPCo?DhQ&++qtW>Z9$dLrzd&_!8knErwDUdzPwVvp@2#IUEHOIhVGD@8jKu&mL20AO}gbRDsc2>1Bc9k73<`62W+%NdFo1HWnyD z^@zO&qzPA~(o918@iq%&y~6NIngt7@MXVu4`ZHo-A9Lr?_47TPIA24K5ahwy znxJ6lI=|wta9awD8;r71o(rwHic*PjBiQ@_f?GAe<7Yxm{I4KXdL zEL1qmCw+DDhUV7gsTj->cR79BdWJ-0W_AznWH?EYQr!*<(YnIVK3LVxeRlkMI)~@2*VSHRZB)q>?5Kw=^|4{A+QhP zl&PI*aOh3seP}3f5zFUb@2vkq>#-0c5AedX7V;+t2#;-*MQ#&9YAxIgfGO=N9?{n1zECnH`*W{J3{4 zoUVyFS6122x+o_MrpzCN!N64j|0H5ZUaDrec4c?2sWW>3C)`j>s9jXG5&)PynGO*7 z7q_fX9q=^}tv(b8v*&N51YYDXF)*t_$IDNCANX4p z;{o23;IRxr{iVTY>aL!vu21KCm`_;CuM7DgJp%zW3t@I+U9aE2l9C@y$Rb|nqH=3- zh6N;D$(Y3VBD-1OUZm30Pj_Qp?3Zp( zc@;FJycRoLeatHo?Qkq)wx9cJUyfn9e$iSdP+g~?8#Aryd)gfUYHwl+4@+Of;l#`_ z$#CbMMkU@?Y!QS7wB4Uex1`FzMtVNMdKWSGJ99s_jgcnDX-$Jd;i8XoPUzA@)2Dg7 zo%Y(hEWn-f$oH0RNqhlK)M=ge$|tR5{}V|}(tghqND7>x zy@t0xI=QtzRT2>ZR``bamMV^pUeLF3+twLpmHq*AQ;#E!f&axN(;D`hOOU&3IC!Mb ztlp$QX5(y9A#Lu(np6>LYzctLKga}y2L(==Ni|KpKJDpS5#q{% z^s0J4H?{)KN2;tP%!%=aEri=oKX{(tC{{z zZ4V32Z>az*7Uk^4n&+DL%+sm;-082XcC&Pp;`sX3M#IdcaH5*1C#3nW@m9M?9{AZ) zzZ>3?n@KFYNPq_wqweo1-xoC7{bgfH9>b2UN*VIe-C;)#=^gVBzo*j=bE5&O0d*o$ zn?uKZ7+o7X9^a~k%ikaL8BTwj8aGi4q@~w*(*a`YwiRh>f9|UJ#Lf~tdg&Ipka7YNa5B?3(Zw+>uezV_cn5w zsbvZfQG0nr{9wKyzfL}fQa{UhpPlY(pzRaao^umPN1ZERuE5GOYxMmLrKw*o91SS; zPo+#qAS>|jqK=W#DG9CtGe`_Bvi|nOD735lYIgOpqNo<^o%>HeQ z>HW1W?s_6v=Mh{D*N@2P1d$MOy^Tx|13E)vgRAjDrjy0bW1pujb7b-J`-*gUJ2`(X z0YVHHm_6fb)nYc-3%R46@@gP#7!}YbrPe`OUAZ9Dn)PTS0ztnoWH$-}2BxS0mShhA zVt}Wux(bLp4cOkzG>#A8pobl1A`Es&l$t*CX@!~Z1U9qGA8Ln$adf;u5JoHH_T{)U z-SlZY{PnROw(((#t2El(aQIcVu@g1 zAJw|Sj-`}^_!(F&vE+nze7};ea7u~Tyl=hD{-Tp})M?k6cIQ+?_eRG^0q2^IH#idY z-JRkhh(|k?-V*)D%T>QJ1EndxJN3@AHgR+}uQDL?~Fv(*fZRdo(z#wZ8O|Gn6L z`o2=j5fWk4B(6DtGu}M*$-16_m%8uElElnzvYW#uYjP|^wGNPI&cb2;lRw3$sV@OZ zmIRB2CxOI|7E+cN-t=uYo6Ms$j~b{uj8bUy=Q{nAGJWo+^Yce=C4(KsRYnrHr~ZmA zuM;H2Eh0l!2$7*oHf_)k;yDX&$YeyO5>xr)i;!QL#$5*tNpG`PS9v+Mh+5anPci#A z=9tl_n+v$%uQbJ#Rntwtj5<8bMgzKcTMjCciH?b}Y^&Z+{g<&zR7M&r6Z`~W8z!Ye zJn&T({^J|o(5N`x2 z=tz3BLqvgr_y>_sj+Q+fGQ)Ze&*{?2(JR(pq_o}#E{bWauI#-4B(*{F%Ct$1CbM;dfY)>~3TK)6%+E}hYXd7mH$j4&Sh z!*^jVSEWVVdudkL@|CJVQq~brXcB~c52(Zg68C7Ph+SJ|VBczAo_J0>LOQ)f6BDPX z&|2Ei^5|h?O`&LjL?D~wOwEBp1FgM^xY9e`W| ziSnKjTo4riY>{HtHmF$Yb3`I4lojOp_J@0C-x*>JF@gSuHU;MfFAeb`1VY!Ay!%lV z`WIiGBl22q1v9B6n$+W_&{G8V#-Yi$^yxj)mO-l5uCxXqjKkn$Sd=o@gi{1H2MfR| zmMSzaK!qhQ1x|R!u@|VgpnaO!-&<>(%tuQ~)gA>P*HEt*>S2Ha`4_G*VtuCtlAW4r3UYEalQ(QMrj=z&y#aNU zhyD~G@HpPNqf1fS&y=0D<4Qrh1!jg{i8gP%FOyBl9uuR?eyU=2sN+|iPBVYc$#5cZ zw~EZV>qhdhUV|Hu>ux{LDl_sei3QS(;2!6zbk=EHJ>r^Sf)xHyzTjJN@SsC4sAtWl8IHf2BD#>DV7SG2I@}RFR}+BRBrJx zzzH)Jdi=mGg~7WWWXrinkF!6>Ha72x?MP zJYdcp68{3q`MEX(vGEqY)7iHno!uxH9V2IRZo5FdgZqob*r zn1qG{_h+@ya$>iu4ue$G13!G{t=kf7Fcg4+uijwWh(I}s+3Jzclg{PdA@%n|_UIig zV``Bc^1(#bPqZL}4_UsI8F_sNf zr9+$QPj;P0{*%OZO3S*MiL{EGPNT56?2FkI*fi7H`OWisS(0S>k4XT2ek+K-O+@%$ z*XwOz{OgB7atO_xH@ELc#HkD5zHPidIg}T*no08v#eQ+S=2K9JESK;p+$2(c%lrDY z6-kanyWrp*z!P>U6}YJz`;s(ud_cE9xeENRX_va_oEfkA`-_dP{7C>=TBzMay|}5O zHwjxazo%g%j}0qrQKQ0+*** z{=wAblnMRezWD=Iie7{;^3(v>7C{KsLHuGlh~?~`bkw00L&p?H^Sky+-^9{)JX%hq zFsN8Yu{NfM8Y5EY@U=3eG)f3xg=7V`i=Xe)JD_~Wcd(w9GA=-<($mxZ94Oqe%8A>W``RA@cOkv~Hfj@#%7$Y~DE;N>iqkX~a&n0pKxD$u?zda83TWLrui2-Zm z?EWL4)|gCE8i4Dzw6WuSD-6GDb;TsWIt=Jb0=_j~UyiTe%sAhM+Dts2l`)v$i03Y#Yn3bI#2A z*RG>FhONE|IT7Vb-DYC1Pab8Amuf%Cd2yajD@_-jA5b~Rg_~`0qt2|4G%GcWJlXP{ zL5y-PY|PWxnqR)f;8{^en09nG7c%I15#N6c#1ep+8J!}~jG4y)6*zN_Lza9X7_sx` zAts6jH?@7#G45r9+I*Y+Jn;jHp84I^ED^+)lVZ0>1WI6TBZ3FGZSU) z@IR@Y7w76vGGehIqPwX-B=9f@sf4jWvsJWJKW6*<(RpfaC|jB%*J~k)>6f@~C`R;F z-D8zqhZ0V3LhC-_zEH$P9KnNhDEu=r2iaYQ{4+Ga=NWghKP49 zUfD$>{%*%E{5Fns>N455r15vlpRG==+JTMH@pk+#!jYL@+ zGwMf0Ub(>UJvD?zEgN>><;X@B-2jZ&jyKgs2+WBS9ar=8FgZfe=h@a%e??1TS=>n z*y;JT(En_}>Cd&$3?R>T=@fO))Bt)2LQZ`%b z_fp8iNgLP6VveBMehWhh8?5+;C^&OZFYV?ulZV<2!oh9$2}^`y$isnf@$ON^<~ zmxZl+N!FefFIpVB&gSam>OY@$VEn4>^h69^=w~7jlQ=vrz!wuVwfq>gKM-mhp!a|l zjN!bR8wj3z`{KUh@dqrQ9)J=vyK}|L7V5K2kl58q&DrM~!zx_H8ptXRxO`;_1oLI< zN)%B+F(yx;%&$Ie7l>i`qv7WK+Gwrx>nBUa2Ub|DZ(-`17Ps?7r!oIgTlv&JTItqO zs;3QkU*a{MQD>&03Wa8rt$K*xoLHiASo|qqc(xfkXUrO!<3F8dkO1eU3_xl=#IEuA zsmU}ZN_!&AK*4j)XP~>ifM7eVY4Mn|_a;No5VO?Vc+FX$r@ApUUmT%l2nxMD2UKE~ z$RAwp>M^jvT|ZviEYGRGr0e2_V<*b`BtHWjr((Qnu3`m- zQk#}|dJC*)2f_1uNC2v!!1*UG_23p$`)&F`A~2BMx|Po4mN(G2T&hQ3U&?!5$f#qV z9xb(Kal;3JVX7XzK!^=bP}dGbLs-PBC9bzK)?AU)K&r_Uj$vrL-1Gx~VUJj=$h42n zq3~c?i*B_U?*~aMQ#4~tVBsXj=M242eid?9%TcT|&dL2F2Y}KXO$M?upTzp_Uyo{L z2>VWpbv3)K&1-p)0|VyDPKYOG)}Q~eh*J*|gkqzKfZ57CuGx21@=n60Hpz~#oE^N2 zDagG3YyH5ZWEgju!=9D#rBN=4twLO z@234s6F4_pgc`ov`!vA|PY-USXVGFaJTfQ?uXnEV$TNg-ls9mXyrWqcPhpoU%XMY4 z+j^}~TW98^5}>mGRx~Q`zXM2fVx`N1ftHaKQ2{WMr$QJ9P=oG%s@5d%kRhbIP`))r z+W~3lM#ao^vk>f3RuR&@uc_pZ)AJFRhOuyVX^DQvPs`XA2uE&=*XE`kIgF*T&#mB4 znU7$m11EZQcZ3bUIeAJKAU#+^(Y2^;OJ*uRghd0l`*Wr+3{ z+sXd#t8rBJOMX8P2N0}D2#-E>+jAszNF3Ryx{BYm3wgxZF>Zz^OV~30cQ&Vn{T(f) zTY={Opl|qM3WB8O>7ZXgPaQm6*5YL?MS#Ix?2CUx%;VZ@*AF9;$9LzY$i}ll!raet zC!au3s#rDlX|55vIEYdP`kkC^ULHQLSCS6Tdjo^sHeZg28H27k3M>BZH0$FC(cDHDcqS(`LP{b3DBj(EzO_5Cr8iG zz-%as+JlB$K5{<4*BnXVg})F`TWoV8k;i`pnlEZ5o`Le0 zTc!{_NE0Wrc_~gBs$7vGLoMB9&*Q#+5?Q=oROc?Kz%vq3tdNfiIqc>5gQra8{d%#0 zk;05(go}b~!7|+lS83QEy;z}meqrCTho8U@p(#&v$Z^~e&3=J5g=Sp!UI=Jh(A*m* z1&JZ(cb~lL6~Ol*Yf)}wtS*GKZx^3pzbIe|W#jGm=mC77NGopa!gWRD!Ji|-LLE&N-y391ug|YcQ?Z`%|9d&26 zr|KskyZyrdWjP`;$6WSE>&Y z-W5^LD%$Fpzn+c&BDt6C(`E1Mu6n)r@kO!NsUCnH1>7dFL<|LYqp`V3IHEt!3^342 z-l#7IT5qB%N>vEks%L*kb8iy-pny&9!0-!8f_f22d)=V(L3x0W?*Kqz@^1Cq*8SZ$ z%{h=LPM#YB5%}x?U*DECzoT%G&(I8#>Y_U{ZIJJj@Z$zH3C}8c*4C$6H?$fa7AiQ! zx$|TaCEU^sHewB^FSD&k*Qfy6#`Ql$2+T)V@$de!w|V#7OxF${y4?KxPJfkSNz|&S zQCmluDEn@lFM|`{*AB3=z0-kPX1O*LLWR;lzTSK!5()PrHjjvx^CtJ2yo^d%u>y0+yH}2&-%3F zQz5-+3eyWee}zGZ4EcYNvg8dQ{-&8`)u;LV*b7HSl-H=o@C2-sstqhLcG4Isy-n6; zOWY52RIc?cRxiGO^t2lY0}N)f4|Z*6cjvhTA=J=j`6ZyM&e4&$up6=!b)y^4(M?fo zuWIBVbKW!;Grahd%$r%D=l9hKsTVj z59p9>&wGXR_m66ww31#avJYvA(6Ep6c;WTh=~#|k4D-VeLJ8S!{Br7-nR2MTRWY2* zm0Kvms4JC7<6Fn}=8vR4sye2@6VIa5h0L>|uE z<98?C-#w+WtACTTN^e(_Y)q8-SXqIKu>K+&vLw{!jW^b-mEXt0Pf6Ww{;T%H^E%3F zuY}fww9bF2W~63)p}cJyKLo+j7C+LSM z1BFBv6;wR0|Q!07oRGq@e8z=?=6uDMd3 zD!?Sc=?o;Lbj2BQ|8B4Ch?&-T>0|&)M2w0)Epo~L#mdFn2?_vj8zsE+lfjkl$`9Ac zy>^EbdFr!eFVz#a2!11H#_n7DH_?%i10Y-wh}fA*K>%$biPMyUDZJ>oPt70Ylqhv+ zB$+QE$*ZubiqQ4^J^NX226lQQm zXNS7fx0AUgOnmZ_7_9PiJj1sT@)QEZYW57M&A?+m-W!IVRP7_$$1#wDAFlp+^F%TX z(E^yxwOq9@oXSsrO$2jr?Rtk@}I?F8S$Rty~>u@J~9a4)DoaYaBqet!`ae zcJPjUwnfKt8$(tUC+2+(xezeP+J<5OjdOaKjlwP+&a5X+hJTY22cB?_Tzfe^Gu1y? zjK7=k!}GJFt-x}dwrXazj!#9U1hmHRMx2!P$s(NZM*kHqq2JQ=?x?07dFf3L_-AR? z8j%9_iJ*HC<|+CdSTK78}+K9F7^SrXTW0y;zHlXdZEqjcSU|#c{bz3;=2MpyILn>zN z7G>2hOHe;4KYZwu**xv!ff812Nr*YBU3QWhSFKcJUA;lq4=l+oxq5gu2i4TcBgTgZ zu1HUauVY!8=dG7AZxA>Yu3CB4G`4T$a*DK}P6Dl`u=%tx1vwEw$>iw#qE{E?i1Q)!KWxQS-ft4)r*p?wE z#HM2s6>Zmtk)05whrZXH6l0RjW`KF?ZJ|`gMHKokYX(RG5Wu4Qk$Xl}vP6H{C)|+Lo{A=#mjLH;B`bOj-y{;1aPR>HJmu0{?AhNG- z?A*o8yz@CjIFMiS!?$xonb1T;12|8-Ite6Pz~21J5`Qw-v)t!c^|eb!m@kV-X$>7& zLZ-ST#oU?$fR5?4M~Dp-lY5Wf7m$(^I&*^!>>4ud{v<|EtpP?Eg(Tw`jzBt2VeDBt zi85W`RAR9Qce0~u)bnxlk@=c>3Gu+GN9Qu#LibSv&JvDhPK_KCEasV)4GDYZ^;a9; z#jx|^X_lz{#|DY7L+o+{=o@bil5Qf1VXG4n)r9s5;2Re)Ugie8Db$2XJA2JGqp9I2 zX!acF`#Sy_e5S<7FcS1VBuzSrhvKI+z*JckBY?!IXpg3I1SY!@z!~G^0ut*v?lc`dw;LZdQl!5i98so zVUBJ`Ody~$6xkpo=+V8|{nroWQy{9*bcp!B08v1$zXX5q`|k9sO}b0$2^w|N^6Rtb zzs%97^gc&_!|3CUWV>45dkJ*4zDSCz3pBflZfA`W%zQIa3LZOc^TjgHNDx{ljGao` zQ|Y543a`<0rt~jX@p1JTmQ8( z5GvbB-2Q*5G^=BWliP1b3mR8fv1)wS!yFOv&=aJ(W)wt`!_&c+IEB^VI2ybwDhwEZ z34l2R3<(-=QLn*%vm;2x&T@)nWx8vfa^>;OCUxv4wAX-vX>>&Itd?7c?KJw|FI1<| z9f#*MkMM3x=mjU>T|(`}l8jZ9p$+UONeYD(JOzIbKVK}sN=O+VFmkp>st?N;Q;hhL z&Fd4>%qf&gL zpAP;tjKUv38GkbP*Y`ts6Z=1=1oodvKRJ#DF`NOI$KW{n<7fZhAFu~`IPo5S`s7dl z`W}D!`4IDv_&dFd6UuF(p-FpNvDR-}eP`<3!)T}xToAw4hDl)7RZ+!%X;Y)!_zMgHE= zG=)QETkcNOEH5u${3rdyZ8Y16$Z&c&ddGOVvw0R!*b4dtD1*S9B%Rj`5Dy0cbgws988uqAv|m?PfC3Y#@?){dF)O?}IHuDBp4fi72Wc zTZrIl;R+cWx+@xEdSE4s?z%YmxJNYy!I(^2*ClnLH+ClOf1`>Y)%jKML7h`h-h32pX3FhYb^+C~X0VX{{y#F%4 zjq+JZ_}894#vchfM{I;EE^48ch`Pk0k3dg`55d+r5OV_|P0aJ7GS5?UM1!aQ`C(Gz zaWah|*m^wA2XHaoN|9Ew99NX+E?$j} zgIr@%zU6q_hJO(QZ*Z9SEw6qx%?1372HbEA6&}uL=gHK^)DeVIYqgb6%=_E{m;?6X zGY2Bijv;se^?3pHuDO~qVo`rU?5)m@pz;GI#d;-M#Xe@F8X06@5g!_tqJ}hX;8(Kunck6!|vSML3WL1dH0SKk(UcZ4?`eFyWW>^OOc% zv3E42=x$rZ+RAHnuQ6@Z18f7AmTkMimI(T7-x1-b8yn)KMQUZ({d|8JV?iq38f>be z4J#QIkei6!cvURojAZvhE%F=d)U(ge6zi|0>+_YCpV*|?9e{SMb zFAD{+ZOJi&zDZRKLHvITiouW+#|B0iCzgk1fEO=DT}97VS-j9wPW?N@HWE`LA!Hn3 zg#H@Xw%c$vna>0IyeJawH@a)_>=-F=>izWRZh}Bz2P!RTajGy7i$Kj?y~hhWb?l`_ zG}ou&r=O1Dws(h(z_7&A^x4xtefHT7^My>%B8$_r=bfmG^t^w^D|((Mr)SSE+~IH- zOZrx4d5%+^^cd>-ZBrkr4AZoZ6L%rq`;!%8`g6V( zPNN09I>^F^o|IP*tx<43TTt@@DaQ*BA>Z-Jg>974A~$99)Q397TGq4Z?EL2UD3hO^ z-+Z&37g&M{H6UabMA!iak&L|yTZ@Gr4CN~@|!%Z7B=Ar@5W}z&(b!JZm|6Zw|Ltp z+HdsM!L%eZL(JG~DuZsJWYZMFm1y8JG;vETu+mzx^)_QE^T^G4L>-$4j8cfD*f-y2 zZPR<;&8B}VN!m8(xNso_-Dp0GB09*1KZjEIRr2GJ3Afwbd6buyGrJ zlw--@p+T!#w1}ryfX~h${7~9snHzUKE%V)JYYBR56pfw$5@7WE61IgP9TaY9`Rq74 zY5AG^Zht{lSA?#>2pug)w-!G8vL{m6aBxc7?B6MFwv)KdG+!#*e}tkT3$sjFI)Bq7p98~ zw0M6l^W>qi=$!jbRV}Y(9bA^4Jv+vcy)>I{4hXg_!m06ZdTt!Dm1n{Kux$Nn^dZP%}6>HflJU z=ux5z%B_e~QUeT zWd%Gsy*!JOLPOT(qtCI7CK)^)@5{iaMt4lfXxMf}Z@A}X)9^ID)RRI*r&lrHVcvg% z;IrqvXVVU|;q=*Y^m5ui)l_}pGZIW0ov?Z;9H=p8R6QY%RwYMv{*1atb=$BQLJ}?0 zYOb@rr)Y=SF;)8N%449U{Ch)A0Mvjip^%g$WaLow*ol`->O`0b0XfKs6sRyZ!9ssoRR$`9 zQY?ke=BYwUle~jj-?;CU!N^FM%KsC+%|^IDa;XX|PPN1+1*&C}tuVa`-v0LN)vM^u z+jr5oZ!f+gpp6BDTGF@JS+)03fgvqjs@1ORD8%j#)8T}zFZrLnOQ%gu5Q($s>=ML` zUz!u`Nfw+)J5BJ>v*YLt{&#=FEuH4mIQ8j5yE$ErECpnDVYD(?zh@9Lxwl4$-|q0J z!y_n{4gcFa0aSI~E(6#!as9H=M-PV)7WVvZP~?blp3lm`_vEF*gi-Vtj`$sNRY8ys z#dJan6ySisVa>4l0Y&zs2l&wu4|Gqe`UL4nhVWYSS^BctrIAH%+BARZySsF=*}lZc zx~_o?FMu~Q)4RD~x1aE4x8X59wk)y>ijTP!7a13>4{gI_TvZ9i6@bvl^G!{|BH`3_!8 z$o-D*dMZro`)~tXa1G%{iFJNI9@}3f@wu3lJ0{JlOkPNypj6H4rw7MXkGSK z8G0AI!yVc8N{=u5DlhY_PpLS^7N@R^l((xuUf<3@wl85?hTDHZkCv9tj(Ij)i21O$ zZu6p5PnTyqnF{x%L@=)I_idm~`YG7ZV6YxR@jxil}B9r|Rr&NS90g zv3YlN?QXB^Bi?_~``(~Dtd5jSe3(Bw=7Hv$&Xu_KX&M{T2H|(gjylMrdAEX`JjJBCpM;Xk4?sg2q`s3c!y!s z7#b>|umRM+^AG|z+n23lt>aZPTBTosa(V@kZ&n8L+zb?Y7|VAp?3W~nmQu#0d>+Kbt)?2Tds+LU{a`#RCs`1x|a|wb(v~` zl!YD4HA>JbhxkedAtp?c5~))_w*oPTF{L3fEC8{n0ShAFUN#SbJ^2^F9sn?8ydc*Sz5I=Z?=enArxYg1h4 z)8fFi_GiTz1z4vv_~#yReehRp1o?I7FMxmjj@T zW8BUf1s}0Z&h}POc07xVxPqiTfNV>Mx0sO2fI;C2kh+E_qZ-Qi28_-)h4>w@W)h)t zJhW^`_0Mu3qBF4hGL0EhSFX=E^@=Su_!eGKhVVP}ESluy6+JNw1H!}{64pmpU($fQ zjY zTOo10!xR*|>pN1eqt@Pp=Zk7kCSl zQVH@6c})FFkv7&EVwri*h<%EZ=eM1L(uSW}Cpv`_xNKI3m<~aD>j2Z&-j*R$dIN^t zzn`f4d{!HG2+&^Sq%Pts+kAieuy7`5(#M&3QblQQQ%xJ?WnEnfu`Pui-zMzsUOU{zz{R`Ml z$W#dTe4?T&J-?F1HYC14RmfGkC&W9q2`B{*or8yTlQA6+u^Z~0bpU^l8tZAj;9o90 ziZ)H4T%DGTJ!w2qY4l^IAQb7w1}AbIVZsALWsW6)gKTpdLWfE-rDdD z{|=1bwq%dZz&!BsqiOFjD%_zh-`$o(7BQ_(r${eqxAIAu6RH73^lPSqdNxvDiE{P6 z>oRdIGhZ;iwWwGH*Rp@ShW-h_i1_fh?JrR)PRFJ)7^u4&t0;eZ44;b|zy;c2v2{j# z>}A*<;XqTViN>Jt&`v>P>yYsLW?Z3zM^CjD*yP~d3`4H(B1r$S8@5bmuK=Zy+vOwV z7RnrLCJFUh-J1f*Ar0}4E&W@p@fiLi8m7~fJJ|Uywsks*ds^7*RNB+b-bf1)CETH{ zGaqTBC4q)&_Y!}R<#5wlx7xMk-N}k>zj;toy6v^yp6*P>I~vvV#FeD1rDDdMkh9k6 zO?`COxcLJOi#7#j#;Gfo4E`dnqAb2>F(px*Ahup&Y%Zd9!jEMRpw>l+P-~2uhO#rA zqFYyI2rH_usG?bM4cuN}OtU1q#&*W!Q;mL5R}@4}rx~r6P{s?m^ddWV7@c;Sfptu`=M5jsq5}2pow`Rd%aVz4j7KYp$#fW<;E0|I{gn(p=YUd#brf zbYd&<^J6!k7RSwHV4r^e<`QyTE|R5p^7^=r399jP%Cjz zL+Xbs<)Po;TU}m3=ExgWJ{*RR;BW5uA#9?DZ}Ln%9M?%t<;OJ=i9xz*l(y;+51q7O zdEjUpz2nMA@CAu$1_?OEm=|n)MPr3pAww)SMkZ}%gYihDJ}gr`)g?u$bWXdmrlL38 z6LNnyLT-2}`r@PQHlG{hjuw33NpGD6pFExcxjIHQ$9GuIts8r`x^B-GST|UNNK}!cvy6)8qPm?VIQHfYDex|s z)sS;iM3Ay?d1NuwM0D;QZV=n!>6)vwr6J(SH-2roUEvI$q&har;fJySE@@=IF${m> z&#`q#_)~a-94+V-h#~{~Ny9g@1r4s;__{M8xdA6b;$LmBYP?+V#zPb7<86u8J3sB7$k}q*b53D$QAWI*lxHdCO+ta3(Aq@#4S%u%Vn}PvRyWZK zY|Rb7oUu#faZwX@ODMjix{1XNdI*13Bg9fC|Be+u@4_a;hggYh!wF!)=XEo{D+Sd( zW&Z~016U%P9jyLmm)LT7PN@jLH1zYcZzcK%-lyWm7N3MYthST}GlkYJh2=w87UJR8 zV0cV{X;(@#&%f4Ka|>a92naUHG>mSZnjV#HnDt zuW3m+c~|ib9^f3;MBnIC&6NqWO2c4oEM+`OAs?QuITP_70w+9PaOg}g`0SDZfZcs< z2ziry)|VVFCV;xVlF9uxy5E0BTWzCFc_MVybD`to9=;gb1mF$dQF;zw#IrEQZ&;H~ zGC%RadRxdiXzTJ)pwwSH_lw_l8YFD zY9xk(nX5D<6e1gCrs0bj`N?44ts??po9L<`fVI<*T%1=CPl10 z6S)Ut2A0?&;qgMsdZB;tW7a+)Aq`ydsrF^OUW!Gac!}IuWg5yF#0#)wK){%9iLX-x z)KNJ8IMi2q#>wccZ4RRgTghx$prlEOTW&kPx-2LVV zz#@)dup^H_>~QKcU9MBO!#26ixp{cqd^&9)uWJwkWfR0} zA-JSqBY6-Ss_=hfPwbB{l5zAFU9MrIv}k~w(&Us%9OOhz^94rTLG+5zAQp&hl-d)P z&pbWU6Fu1ICTq=Ch57)JB)b@Op?qPBBLFNtsJ4oYfh92hje-^|fku$z103Lp@ay4L z7!kZV{MWm&x7aQjuWmPrNPmm~;)(}xY&NQmwumr56u^IL1e)oR=tAVUYMVcBZ_V3QOr`Em@@vEOA0+cB+c*3_&(2T%KT(vIAL^rwm&=o4kr(Ghj>f`{ zW(G{y)dzvO>TETIB!)G8&CC~=VAB8i6l3TZx~J=VD>E%qHyi+Ake{+EB+S8UxoZR^+n4unWsoqD4;fN#9b z($z(tmtIuWM($W&aZ-=kx8iIr4ZL6*wB0bgEBSc1c00LDFCe~gp_8$7|w(KyBRT+Ll4aqn#4+PH|yDLG%o56dX#-f<7x4>p#JH zV;FVT(hXn!Hs#9^Hl_(QjpEqPp|Z1l!F`=1?B{?@HF z%4VrD)BxTyq~5S4E;i9ms>oYKlDRG=_f~&pS5V;_HM65@wKPXY&q@6F?2ms$Swu*( z6FiBW0q&#YB=FOH@chpU1@gbnGiKKuJ9+K`L6+QvJd%bE45gc(`j4d$-ctVD8+D_K zq4fF+8lBrVzQek$1;{YCBAxc)jo#XXu*=%CyXrcHt-1y5cbHDi1LD-jZ{h;8aF~Dj z+ltJ_;SAb1bYh2cVrY*+Rx!@;;)&%baq z;|~H>WTjo|J<9YTYm}Z`*Plorp<Fz ziNPd~gd@Rgl=JP>k6_e>P`h_Ur3Sm*L*%qR`okZe;8kS5H^T32zdW{sFTD2~>2-b^ zlF=^wmoMH49|3chPu>YM0YaCA-U%-UB!$v%!|1J-y50#g40^zxh|$s)DjHJEFPHe< z34jDY{P7Q$eBTK-1uw0a;0u?y-wACWm4hW4xidz-n2uRK%qPOhI3?if2UZN8a827)4a{NqBNDd)5i|z}a9FcI^i;Qp}1Ex57b& zk3>icTbQz_re#!>27afHe@m{lO+H_!Ih5BHIAM;#w}CT3lWVn#X1@ID#Xo*{_4f4S z)eo;vPQN^R^WuLl|8e>5#q0k$rSJ>3MqR4%e|Ybi|9LlE>gE4(Lk4ayW<>eKZj^PO(1RJex$(OO= z2`Nys=h4$KRf;-$j(uIWdMhP!2C&>n3ixHhOw<2DLMUrsD9eWdDEbx*r{}Lu%O<~+F<;;JADW) zb?;6sb$-Wil*&2v2UpG_Ei((S?ux!&9?Mi)*+Ko4Wr*5YhQGpEU*b}CLLzj2vN|+E zk;a-fbRE6M`MPDa_5}dHGyiH(WNy-V8mH66^&GxFcPemMjO)Af5j^7U zN4g+>7^pE|0tN*)$IK@miY_P@h*2G}6}Aacml|j}@r& z?A@!i@&H>~ZCl%x*KwtrpLIlN8zec<{269TK;TD^cigJtobyykF9nt-!g(Mi3zC3vk*5iG1ZtR=u}m7_{&KA%qCBd z@~b?5bTG~!V*-|w3ZHX-__dQ_WBi@IpmiJ^xW@FR4-gkTg@Ev!!4z>ohi!t{=1s1( zQG2r}0r&HwQ<$r~)GoepKc@Vx-9BL{Olw|gpm~Zkf~frj>QF}col*V;`h;{4kiQ)~ zN`GTcHgFeO%FmCS6JdYe1HiyRln>OP@p;?U{u&0g9&yNKwfQ@L>1jJTTz7*4+mf<; zY$-tkqdSF=&~AykqT3kzYUmX3I$Jy`POMrQfVH6jO* zWaMCx+RV&m-id`6j4RWQjz^XzmC>w7AFz60#yVp7i2<;=0Yju8Q71=x_}_t~u&i*C zwiCqC5X)<(e#ixXDExyjVcZs9ro?O+7a2ot0RV|j@^UhX#u4nkP${ZBp)OFXX6^$y zfk-D~9U}52lBF`kfLbMJVX$cR+SxV??e@I>)|Szu@P*#9o_+8ySc!S_?X9#`Q|amH z%bKjRqzKj8@kYW_YpWzywF@2V3Ro05@!w@yC{}hT9?O+~obN!Vh$)8?oRWZn#r3Q3 z!=;3)N=I!%RdqZyVG0K$;vYo-HI38cwNf02K}%Ydf+@Dti;O&pV)VZm>URY$oiMCSjqkYxeSq^vJZ?_1 z#2N-*m$-I+JAXe1qf?65kK=SU61yWB59eu4d7gApah*pe139HpaPb!&B1BpG6Fl%@ zCAj?GVc(d6x$fg|lg;vaY>OdqUcu6|&cEwuq%FI#+77gN0%&_A4hlU@e!-RX7a{MM zysWkbGMX-)WLm7lD~C)v5#U=DI3Jg6>z2LZ{@1)g(qF@3!Rn{@hVW{~bc z>P7oFO!iHx!mm{fL1G!C0be5YmQ%OW{^({jSx8$OZ;P4Wf^bMt$!ES?@Z?|M=UOI%wZ9Sla?lywYe;D$*PJ5q}L!!H$PE10w-le%qZbzox2 z78DeJkBsK9&#|I5qe?7RKNNm7H^vH(}y$VP9>0lJA!6&LuzNIIn%s< zlhR`Sa)3Vj01-fS7~vkk0r&cTA(Vq&@32p`4j=FXOF9;Q495ZN16v4Ys8On*2N{RB zlDs25^oBoBQQ+X>^3aKfX5=y|lo@4k=j$Xys~C_>q8XVLMmjfTPJnpkS^61SNF;2D zYF7+{;60uigpQ#=0jyMaF2|v7*b$L`p?^JHOxkKU*3e%0TpKCH-L$@?&t`%YQh$u* z(zL;bwN3Nry{1=p2-BZYht^46Vrn47RT#$e-SPJnhi@8gDq!25cL$UVvHk(5 z*q_m-2dnxBHnAd$utF(t-n>xbdqB1BVVI3HOE}DO% zW)Ttzufo@06tR;cE@j^WBAkMM?KiPypZM`YQv9i*-_E6zci%dfofX=p!g=@2V_mTc z*0dLl309q`t`C~i#;_bDP=kLzmzUCsShr{4qYT3EvTMucBh=ajfQ?ChuGVm6>`sRFaa`NI!8wY$K zC#^`+I3Gs3m<-cwdURKR%;KYLGKRMg{oLVO;H|fOMfY4D+uLwk+EXpuH`+xydFzIV zlevo@I!LDpT;XIVGb=3=jn%}#YsDqEY*}u(U-t8$Ctbyh!9^M+{p7*IY1$gO*PC znW_0vSq+I3z-6NeWVD{7#SW&E#``AAuX+7{ePl1zI1$oRtd~ zCA8EPrzw=3Eq#2{YX-t*?&W?khS+w@S~9M1SA4aKO@ zx{!0esr(!L5QB&f)(|=mAP`AY1iPkk_k?nWN0%~J?TM=0hlI@EDSEeR93)N|Gc(d| zRBTV@NK(mvG~lLrO;Ab2bG4Z3L$B>|6&IK)1UCUtEq6K^Xt>3aY+jMhlxBY;**7n?1L2yM@DS0g-9k1D%aTX z*LI7nM>0{eG(&BCwIk{E(rAHIMQ0)p=!jfgK77@GhyVZmVXMupTH~Q+dGnc-DQ+nD zm0$Z%QjMBb(GKonEq9ckYHAZ4l(d4M?O?x(Cgdn2;`8kpQt7% zVe_0q7u+GD;e>eI3s5;RG>QdQ*}`noqR$1-E$_re9L7fAYBTSviqzatV6X?<&cJ4{ z_dQg9LCrMMibYCNdc}0Kq;-mZ!J$KAD47~_ThI9JwqYnjL3NE@XOYVLj$~mtxKwM+Q^@VYRC}Knmo!a-Cp<*b0i_n zv-BYfInE_N!t;d%=Op);5Reupjg;(W3CGRI$7VG~+VS zG;!wU0txVT=46(xHXdN+CHy8|^6O;B?s4&lje2&WPk~X9#nB@y*8-Xg4tJ>MItk^{ zHUI%FPWkThny+wPS0mR&=WXe|(|%3H4zn^SwRB>Y^`v`>e5KZmN3fim2Q0IprcKj- zQaZK0Ij*@_!0i=6>d+(t7Ag=@rZx}w6{64m0I%BGVRPSboX(ECr^Dbw zLLY0+Fc%zoLeV2zV>m$A(5kTPMP8T$VZ)DE!`gS*|Gte)lgbYwvUM&g`B`Am(oii7 z079{tvw#tTWk~#Cv|VW#3S-D9(VL`y4Z1)%5T7m~stjY{q5R%O9F{PA5`9C7>3VA5 zk5b0f0h$pQFk9nwOn}m7&L}z?W^KlsWqv5ril$In%l1aO2a$-5O z8~mP?raqTNt#~b;VilG{z^1bz#`dJ7(phr=)N)LtcF>#oM(wo@JcDKtDY#jG%=Kx- zM@MVGh>pZwk$+1qVIW}$HO%4#QAb*a14GR@6++A1*eYR5(#OT6tY?LeOqsdHogm5y zZFHE|v5`4>1cYtD<=8yLB)4gm(_98taHp!dghK@|p$Nu^$YRWeS?OtJeLEFpeJ0~5i9mH@6CMyqJ@<2I+Zwm1pz zo%wR8d1M5pSzA#M@)ZC(n2~eX!9le_91}o=TiR{*V*#DuJgF`sK@DaYY#Y9~%(qQd zy_F!TzyX)%13ZP43nB2#M@01lvFr`JNgi#!t=Cke3z*yzyu^LGONhRIxwBA!PMKUP zzcx?Z+IdDb|JD0$=k4K-a}IOl*FlSHSe1D>ilhAQU0Pte=9%&KxM1FjvSHO!qs<%b zjatQg_cquyg<n~xkSQvsGKeZ%93^RiXv$n>PSkE-E$HK;c+@J+I&d+n zDRB+ZijxvRvi9@fTM0XVajw{Tmd+JG{sz}qAJOwjKF6F>d9h@oQ(LLbfGCh!G#o8) zc+vnJ->s8$MQb(HP%O02!E3WJz+B{C*D;L9!XC>EW+!^X+|XG zN{v{yo_!L68-{TXbd5V+1&O3`cF>?zp{*5*No*1gc{BX?ydJ%{eM=8k!uHoOa9cWJ+yM{$lvG~*3 z0g;k_r&C;pUUq?X8gBCPnR$aub{AHx|xfsZNjFr|*G^bT@Gi@!v zaPy8~O&mO8zZkDC0&t%c>6FQS@{{tDrvHP2v2~c#0PH~h4 z>0=VO^}6{ybBq?5yHo)MJix`0nBm}mkxtTJMnwcw5}X_#OMV`m!PvEWj*zUTk@zG{ z!l7CO!bJJTIjX+R@4J?_d1>Kc7B`jdZZ5x=qdI zafc(yDPUR%B<@nKaNHqrZQ;||F3lAPnhA+N? zki);cxAGm=5SZ+zuN@R&v9D|fvh57;ed&L;~g;e}Eme1PQY#K7iJtdjx^ zOJq(T8bot%i8zvOl9q{)L4Ux1W0iy`Bfm2xYw{JUCp8m9eFK{bqyFCdw)8s`lA8}e zrG`9W<0m#5+#>d}>uUX(-?f9#-!b64y!$QuyFLv`Ic(zdUW}~Np&-P0X3L&NRRObg z{Hlx0Q8pJJ1Q*aV^VQ7w<(1lF( z*2bOwy0b8&Xi@LvvB8{wH}YX^LdgFb3bOqVg)BOw4fN*-(6FNQsSP@79x^;xRn(Sd zHxjR<5fZ75@VS{7jfN2Md>&(N8s}=(s3Hw z*b*Fw@qyq$G@c;}<*2w`KwJcYH^`##9TtJ-bS11x&h4`o2D7<;FvJeCn>;2yNh!y~ z*n$-o2+o0(Gd@W789zBqe#W_uQE5xpw-I*1~>#;DPcveuyHu^)|^^+(wakiL->eoY+6?J!>h}FaC3f% z893MHHLhc{WV|pl`+*W`&&od(b-#F+@;~IfzZW) zr)d2x+3XEt2)vJw;0*dH!8@HAyonJF z!v#oN;=FaP++M>Pv}oV;7hj&@8o#PPsU6f?iA=mSwF_>I00qlTwly_NrHZZ@rnjyF zY+#B)qB#>lXcOlXlqk6=XqMrVu)K@TIKTyT$Gi~0yhqJ=8!73P5(aY@P49GG90qS| z69B+}2GEM@PuS2e8DJUV=|xHK-AVuC`1ttvdl#I9!)2YS4xKP+9PtC~(EW{^YGXpE zZ%|8Vo!Wct5C^v$aI|;>)wIstn6z6F60BmVg3H#|D_P$rp2~i0Q6C`u7x0?;6+)_I zF~A|4sqCI)_$VQS!6?C~E3$fmJ(tn^HeKL<_O)ocDB9jX?O3RG{q;60W1ZhRyxBrU zTJUCveIdIO9)>cGvz7*aUcN`zkt8&-if4_VX%QB15aw$q+kc3KPzsJLV;&bHk`W~e z%kCwq9kLVe?C$i&dxfKHDIx@qu%ZYgpkBeh{vH)~*CqMemd3{Sd)(+o_nV?Sy>j_~ ztyv|pmCUeFAIHasg1|a$Lc&1|4J?1VclX;;Ik9`J_1j;61|oCsWw`PUX~9C1$13E! z(ty6G&dOEN-+s8hF-~D1XvTGm^5C}j2CA0muy^Z!a`q1?XWaPJYwQ$0GC}-s%$i=2 ztoaIl3I!3}(p#4u92rA6RzEx4E5Ap7tJVf41<%0D{lwtv+$^TmTz>xoUjMHBbBjxx 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 S`Sxe?KmQL?g{K4n%3c87m{}YE delta 594865 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
    5mhr8=CJVW^W*f)`Du{`G{W-C44wF>krvlQ z0}b$+m|cS2TojE-V)66&Yd_7HYzn{*CHOFi6oK_-bS*LTL4QVIF?7YhlAO9+PXV~J zv@?{OoyQhXOhzVt0k?RCt@EGAnoM0W+GEaOf7##PZvf_-`o5~i9L@MT7Z;NJxy-Jb zM>-sG9XNm@35z5Ce)0aDn9A&my$Qd0+jU&UE2 zSu-?;O^xpNiMm05gFo_nbO%?Ilb&~Xopvf4=$GVqls|Y3eAwKZQEG6mK%u+<{|0B>&@lqEdi} zj05$#3-_4@7Gii6MqZZ_tW00J#xAA=XvTckFF*`9Y4gr77XPqY`|D-}@Cm*OoNV~x zFpGBnpH5;Rteq`~a}vg*1RQMMN1$j&e|ifG-wQEsC={USVqF1OADbKiBmx-$iZh&3 zmFf;k&&yw)^H1PYc>e39w-jb;a6l$B#BeOoQFs5~e_e7@C(f|I)xWem)QqIy)?c3U zfX{!utZHj-hbnP!c45*l#kjR6yvsxKxHARe%&c<+*Exa@mm>%i_$Laj#E9H7VwKJq>!g36xn4*GY>)$p z?zu)8fN$3sfFvD`*BO9!EGJ4%mBvy6onb15eGfdZmu>M<@Ob%tE_=%*G|#zYK9VvJ zsdFVE7qd#egGu+>8_W z&oeXVM;H@6{;laBPNo(hrfThNikG2CZq+J}S&1Ng%#8{Mp69YdFzy8#e@AJgylJ?* z1`93+VUw@rLG(%={ z8OVXda00*1!gnKRy6N&Ie<9t&PS~28*wu_Y-ISrs(QZgMrsGG+#kpeEND+H8j_c;< zrGU*%rHaq+HcZpx2Eij2TKK6sou#z@7`L}D`KZCnrAy-uw}ZDFKjvgUuMr+=SgSRx)xDnBg=$OFYIUTxyw&SK?K)7qm(Je;8-HyJ)b@G}JbK?tpmxrP zTgPeFaoUGJqI(Toc;9`TcG=lohiTVg+I5(A9j5)B!nD1;-u^mF`xUZd9i?4IY47*I z?(IJAC@sb676fTYkhCv0>!!9aDC?c>(*iE81Gg8FonKC-_*7er>lU$kagfl^rWedG zA_fl#hFUms(tjYH%b#;^6}Jby7ZqXL@@!fiy|t_NC1Kl-^YQtjYGu``Fi>#@LH*P! zR^?c37>iF{1iz90DV*~=AsNlPo%o%FHZ+FxT9K@Bu(!W9TL-x3?sY(XySzcZWZ?GJ03hUOVCOZ->;YS_}}}M<-RmrB*Gs7CPtM&e;8?e z|2P=O`+K!g`LUv4tYvf?5=!@v*D`tuWv(Ul6Oz=&2ZwEz)K!_$=8l%{bIsgi~FY|?t6QOC+!yZ%UtY9lusVe!45f`=&qu9 z)EeJ-TQPV;Qv8N~!Gwfq5^#i^GVv{e4`$dPm;?DLHBqE#64Z!in%;d$<%1W8yUV3= zX)di0#>IVHjkmqEEbaBXi{E}a{o(8h8w=GMRu<^VJnRsK9sd6WhRb4o({6cHKSK>9m8!PK&naHCpz;)nbP38cnuX#`0E6!%R~~pOkN-+C@JKh+D1x8^f-2NCxeQYn_H zK}V<*8lt_rcq4)|yn#@`CV1n-NPkIaShUp=!m1C=yeNELcOVU~Ub@k(3gZQG^fxDx`Gam90k)aVS zo-3`i2xhUIghTVW*gz0svs9Rh6M+@T166 z>dZ^IHrMHG*sN7a@@!dvFHFpkGqEjTr7=CI&=r@zk%w5+5ErL+iqr}bc|eQ7YHw3=QZ9nz2;^l?y8GQ3{F zdHnGTGj{=iOB?;#MV;oF{U8R38ARKv=(| zo!`d0qv^kv$9_cA9cF(Y)HG>K)349YKb*Zf{do5JrT8m7OBE8+R1FC}`eWk6FvUvP zL5_eyQj9}D^PMIg4)e-b7|#fSg3DOEiNnl!)(J={N@9klho@PpkHgHsR8jf>;Kmh3 zgDdCggR(QJvT%4oN@@pBS%>K0k{S550KsvXM-s#VeQiq)Lw$cB+U)ur9swHh5fMI_ zrF97lt3{)kb??~08^xpT-6f`NFF(R`h~pRa@o2XNcSwh3%*R8Cu%YKNyIM`N4K*1< zGKyxdbWG25rY1s;sS`uWr5V#Sya^*UM%Pn_Nc%uQ1b`kTw>7e6kBf_$S8bGDh*Cy8!mT zsMB~tq7BFBxIS`k>F4fF(cgH;$8(6n$*Q2aE)D=nafD#knTs;yQ#Ky4O@+Z#KF_1* zoEl-+9u=tU1S;UZB&XO>;3YvylRj;`3}g^4%di@7nlpd;AvWkx@lYX5IBPr@|FBS- zfEs2%aq&4u+1wWI)Qw7u?~36P-lmJ=qZ*Gfk6feJARjia9O71{SqM0hHS-8ZrC~!I zKhF$?C`{_j=v|VX)4z*zqggE(K}LY2HuKR)!Rq;{=~w_vZ`n)(2_}Fszn+bn3!BDB<$W(_30$lsdO=ES7!Kcjj!ZG2jAvCjbg=~Pinb@&FZxp8%`7uij zJ;I(?DxqBpa*Q?kL`ts!quOWE6peyg$n_OqRg(+?p~G=_aoM<|Y@`8mkKx%bgtAlNE> z(fe0#OeY(p81oTWR|YEx;DA;tZ6egQ+pJ&ySJc-Xl^cbZsKwmsy55a3iY_?<`T~n+pgmKV?r|gVqqVH+M*yFy7-K&3J_x zi@4-dh{d~=t1G_NxQj=+9c8Z#0IK6V^+mjUOkRlTqLiC&9qMo|-8SUnF42`C%%gv* z%6j3%3n@zlmw_`BkWVhoH1hQ-+Xt&1RNMfydGS`>9bKQ-t$52R{VK_lc$Ju*Pi+ex zE)v)|-tmee%n_L4F69dB*+*Dhbh1|;QdqdEcSv&!hJQpPm!#QklCGKsQ+%xC`sCjp zZ^_!petn3bv~YJwPlbUW1r4PMn52IyXih%n2@z&$LUua1IRLRKcF9v(Xz)ZqUNseg zP2|+%7<*MG?Vy>1dVjcEs5>MVGv?!=m*4YbFw2@V8@|8DW&S_D_y{AACkOSlX=aV? zj!<~P9uJwMgWy~EInqJ1TI_TX6e;e53=%C6Y(>0QOE4qaPke{<c@y7Xq?8N3I9JlJR2TY(HAzLB1ga%|iKBXNEPel7=IhYnJ)(Ra(oya! z_mbaML6LYvks$fnqo~I{IjVQGE?9)GBsv`M5z!n`Mbg~i%1^v6;o4l-%a4*ny{Iox za7%TEn`x8M{MOE*Sp<|t9Ew;^ohp}(=3-!LzhuK zJg&F7^QgF|xI>VIz;Agllw3ZNjymV2R)>QB0ZU!u)tC zd^PQWzhRU^8MU}ol!pR2ht%3OjIo2PEuY2I7>#XPF*^?&6%#cXK=OYNy$zc7Zd3vN zmOpcOsVWO;?-QB;`pzxmeF6L)9qjjN0DhOxtrdX3wIunB=z)*vR1H^4ilxjE$jM{9 zixb|!^TlP^Z^LoQy*R11zboE&U7E90#+shQ!8n!57@172h49kCI1fm7I!0S8t_3F%B;`&!;0hNjj5N|8hn8K<0cSEHB*dc#+hA`kE(zWF&-!8bN z{EC`^&rZIvUeG%^wCDp3^n$|7TCWvM)$p0oBv&qwu{k-W!Tq$8)(wup?qp)!Tv!^5b;X-g6+UJk=gL7phEgymIVpOEh)=5 z-aBb$qq;e6J1-fq!mKTVfhN<;V#RxlVgasLx$w!9^L>dlpo!d@FxcPQuMq~N3AIob z;0&MH+RT5|8r4BPByW&-{_=U1(TOs{YhUMt1Ym|@(eXn2f}?@0;1~OQ_58xEw*eVE?=AALuiIG?~gVE^A|6@J}ec#M)?;b;R4!Fz+DP z$&J7l#g0HL=yiL$U4i3#fZAvs-lz{s2Jaz~1mJ(s3W0{-jLs9S!vP_pWQjPVVAA|c zZEs+FdywXn)2zHWB2bx1CkXR>mE4-5ai|iX@?8*YgD9KJ z?@WBQ#}Ez#WrJnzX_Ch+;dJ{)4LO}hF83A^Xw#udnM$h<3zHgRPs&Ko2RVH#I*%+D z-|T;p<=Z*91Hk!!ucu45X_zsM-G*9;O&qawAhy~;bBFas5O%filGX-E5-Ax!3Sukq z#>OoA%}DtC6se#?etcra3^xJ5FBV&cS*S-Th%!?ei>Qs*na|sqXTJ_L^Js+nK=nV= zC@v;407oN#Q#5l_+!X{2v|v0Z14<(<9}R!|vWIw61^x-+tyH|)N}Go7UFEeM?~od( z8FZJxLP35Ipx$tX9AG}DX_8uh3PGl21bkqkIt(BLXfo$ocw=;h^ z49>r|r|n>nM@J19WSK*Jmr_~hgL-S$6Uw%?OPVCvR#WNR-{^0M&6;N`Y+yEaQAugSwJ8 zP!=0b!bqkOrp1}z203Kr-GpfpV|stcjZ8yC$+Ex_TKuogPp2P#dw2TwYztqnK2K#F zSU9yZ?Rvv?MeVWq+7I=P*_oNw^ogCfXcWd_HfxJt zyD+C_?rr}O+Xify#K3*R*q{PNu(IM7;T54Crhx5c($9yGy~;j>CeH7|Z0~=|2fp9i zJFfA8FP>KmUE%&jpFwt0n63azU>@*v%`3nd!2Fpx3NXs_M71G-YHz>S0JXv{$sJ-z zC4st75kg3Q9dnsKtBZNe2Llh$qSVjgyqYr_`wRl*p<$Mc9E2Wn8N$bac?5aHQ8q41 zY06aG)b5F^?C&1gkbD(aSulUGc4mGSCi`qy442k;ZcfW>=&&E&vWhuL{3ax!69y_J zr+{hE2bIAcw7Rp~aLCZL2nd$ukrHw`jev6@ri#ep@b_Gm-;V$Vfsm6V9*apHW#KeJ ze}(NwL;zz+07WP@27hMSTsjX)oMT;-qf-lhYCbKG2jD5Mb^;8^KU055ah=G|2$Abv zQTRmg<-~IAyfj|FLu%GRqM28c7rO=g8xBl^meqw|^j&C$w2oiTxJ%4$o^vx$4MZ7Q zq8oZMs;f8ji~cA@N-I-_db z$0r9hynfNFTBtv|X+D4B?w}vjTxUPz;7)AL@1yCJ>7;umv;C5dGns$8*Rw~VNJ!$CBGd$F z$GxY&`*R8aNsxFUNRzT1XIx0MX>eo_sT=CAAa~b z4=PU)995+_E}u676F3Xf&0hZ)BlH6$DSIao@)d6w(+uwQ!JWMnC(rVj@yn%%4I2nI z(*^c|JdQVLv*3S$I7a9#ETWmf2p*3;$W~F9zxo6xv`K&yAv*aoxnx>kuXKPEmQ2GG z9uDUxBKe5Gp7mLDZ+_+rB_hIbrQvB>&1ABB#v(!xyH3V5MON^aF^eyrmegMa^pY8} ztP60pijkM4KWIv@ef|z<5)Bfagob0>2a;(Wp3UQ$-^SP`S9M|A-v3ESSB*Xqg*Hs zp@)k;ton@5{;n)_^A?Ls;3_q+lzxeb#K*ZhUOiMmsZCrH?A_rvKGQTmk!u{cSRhJX zkf%%wMkRlKl&i%NV9_YqhX>7Oh;{*0r7RygF>s&+YAdgqpgp!GGfB@}WX8a#=Iuv2LDo zJL9t=R`s*;6{+VIW$-6%(XXzx+^Fe^fU+~tepi24Du==r&tX1_qo!950+*PJd-6da zUMi?t4U1IFUscm)MN0f*FHS3`z}od8?Z%~|X+35T*KP$gz!&OE$7L`cHh4T7?TJvsA(ba5f*{IOTpa zwPkR#46YvqpL^*L7(g18r{%|LUko$)2|9n+>b5XAwMhp$>{L>{8NqJK!LHz^5c%QH z4`0XVpZoZ0di>A*5&Gx;*BRwM;uL<3(fef~GlcOBC#B;)TG)qG`2%+&TcVA~h2(9HQGyYJt%4S}BLD?;rFMPEGH`@ILQAwM(mkokX6 ze|!1i`=7r9qZB(KeE$x4loCH=r@QRP9!j~C3y0g$k7RY7x&}xW!xHS4nQoc2io>Sl z?6}n8N3)DhU$$FDk1f8agTN~b@c+Qm1tHgOqY%d_KMs62soe{fA*CUS6Fd)LYrsIl z`qj0vNp{!dkwQ$@qAvqbde;E?pMHP31hQE8s}x-CmKSH2_I2%CTLjWF%D*b&TO0N$ z8JF5R=xI_3rXN4!S3`F?x5Z(%*VG+H)&aJ^ZUk&!XUr;DwfwbRKy>beRm#3z{0cB=5R8_v^;-#U~RQp z#i3c7#VRccSXfCGvy1L>NFwg$Bb<`&NS5CN%P2-)M3rBxYd0t2OSkeUvvh7L0{4fs zV1eid?vz&+KoayNOQJ8OhiIv{JchOF;BTByQtzjkAMpoRGT#l=op8=pKJzOqDiV(TF-@^2{3H3}JnT`G zDL3LpH}z*z-u-e3g;TPW@PMLk@pwKSp)X*1e^z||lH2S>StyL3i6*gvJaLKYwunQE zBJYm-Xx@Y*V&neZIPW@tn}sr4fET0pACMOW;FrqA=tG1(3jV37xZ;1nZ?k@Z?Go_< zV5AR^UX2gN2jjypEG$7@HgJ-VUf-cCj=%{MxJC+M&m3YHARiDfB{05~4bN^5L=hW0 zD!>eAzzMTJOa7S;Y>YX=F_FsmqKI;yBJ+?-aD;`KVaZT)6kcO~&vyzvjGuw2#bco} z!Z9B6iy+vej09qdqilc0d_hr+Z}U}9tR%MPak13?xz7$x{<(k7mdM{f{*))pLm}k} zlGo3l|8t)e^G3uAr6}hE+)p-~Az>EI-P^tR4so0UcVf1$;5ssE+}}U`G)DhLGDe#( zQEpizXys8BHlpyv&5IE{SPa*QF=6q}=LpWH!~!eqlDy+@(iDF$SE(ofD)Zof6Xq)I z(a;C4*#&}ijQ+U~DX*agwxYc^x zO){#<4pq4bbRZmjAVD7D;S)}l5AO?OYFLx>^ND{gG000<9ONj<(TW90X4s)EIlndx zpydTD#t}}Q@h5r+nuQ{!>=HEcl2b$axAeOvxk=xbwcP_gdU0Tpo*EkWs2phwt^L!= zv`iX9K)_8;FApmOafe6Rb7Y?+38pI&2h6m|nlWy0NPHw-g)slk*F0B-`FG=5AI#(b zh)#c&O{<4br!($xa%Gt?22+M>lh;daa7VeIov?e$htCcV4j#usafs9|25Y?mEv#@* z0kkj<$Su8uV4Y!l_ZF_ee@%a7i2Mj{$k?0LsM_0d7tciqs%QCImBJv%l^{RC%nIj4 z4N)uXEnV9~ASZ`rS5U_$J}v;WwfRr;CG~&a7BkfRoVBzz{_^wXn`%}Nt8bb2C$Jhw zN5wHpA%=gOn~~>Xy2z$upDZPB{bw|s)91HhK|$-j6Aw7kBETavxe6JJRZ=c7rjavu znZgHAZ6}DnWnAr&T6}WTX|?1R!68lqpDqL{21YpEThv7%V>YS z{#lQEDZ%l`hlD@?mKG6yBL4c#2lm!{d3T7PpFxz~GK?CY&A^~^gVA5hs`woz^lg~d z4wztZvHTudhF_r;IhRxupe!5+>XW}4qxUf=m?89%h0m7>MbLllCjkk+;PjRx*S!7t zQLBg(50o|?L@ro*Qze|qcgCcMyzD`k6i#5jft*NW{YLXp*n{q@7tJSB^4i&+_blxD zDaqnD^zRfW%^X<@nhm>!9m-a0{NWPZWtTYhSZsir_dohsm-YSvKz|hp`NhfV(;6$j zxgG~Ya8O#Si~kWFUN`H5PzdYPetC4g5B@R-tRMTcFrMRNm4xio%Ka$#zyE>%@!{9o zACCXm<@Edi`uYD|`v3XiEDmm#bopPueEK{6{q`m}i_fC@#s1zO|F-+r;@`^iue~{b z4lD9sbeK904h~L^kAIQo`{9eDm&YfsUZ8(_@$%&0@bKj1;28be!QsJ+mj~$I4%RUM z89bKrZwCiGbn@T;8ZG|2A^*S&i8(#_>HhiNjhCQ_H$s!?2u=JEngk;>!6P)8jnHI1 zLX*V^P5w1Plj{+hL?bj=j?jdR&}212lix;Yl8n%Vj?g3>p?^s>LX(>jn%s`ib}L$B^SC*IbK4JmyqKnCzz}CSbTL_0oeC@EjY%LtJ#c;@0!y#J^hip9@vITK?bauY?D+_Wt z=J6puaDO}7-M9EF^A{PR{mBGVf$$^rKU{|4FpK{9?tD)WjvZN#=MVDB&8l}`)%16wC=<2hTiM51xcomU5 zaFWsFDiiAo9$u1IUsaJ-U)>~56Y$napxYp^>b8JFr1YQNTNExr7G6*#G!T8}*O$V0 z{(mMnf%6-YykOnhFlPBaWQTg)bGFRYlH4*>Ze8k>wQaUW`qFu&^zhTHBYTE6W7c7; zT4r%2uhIRSrENyUMvgAf4G9BuP{rQ&F$*UCHu5Odlqe_blWJc-Bq0HH_9uLUBc;83 zJ-=|yqo@BdBDa^!8fGrDq-k5HW)#fC)_;~66Ke@S!~wIlTt=afH5n`E3evDEL^>3y z1gUH!&?hQiA%?29EEa6G4oKXG_dhd|dRoAe()C~lV_f2e8T6`j_30zQC%jxmUaA`> zDOF9;)7QTU=j1r$ci45AY9wzXFI>9PHPFfj}5BA-#+NotHP*tSh@xk@thKQ(M|Gr$27{@7yTN%~ntWeZa^_=}D zxcBzfivxCL+JdT8LK~58pxNy@JxA9z_ANVB$T!?O%=~B!;+cWeDtrAL&Sfs|AgvWS zOyU4r+i%h|38z_#ON27WL^|>oq<=Q~M_;s^*7FwzfxAwkA0-nY%gObLqhX%vtvny_ zN;A6(kxF3TARH6G zgkaQ_D(QL+LFB4q)%!U8HM!)sh|7HM$$y+)zFCD!4;*T7a`)kS{$>@@pKJd?FaZHamuLn9djjW$m*oZn zumOCxmInhh0s@%Gm(2+S$r}4yhw&mo9gEz#>McBSBJRB!)0FJRX=XO1m#_*06#@mU zm&XbNX#pUYF$)7$0brMi3j-w`W;BK#50B$vty z156j<=n}(wx+IZsN&c+S&sHQN^ShjYJ(`y-3)RNvBdf|l<-3wi^Js0ESCgn|cIq!QibVChy7#gO z|07HnzpgN!T4{LIGj8Vc(N1 z4vf0JE>&apiSzYcp6SXqAWgDS?$njwko|2!C>4^Cu{RbXSNrhyc;T0z4Fe;8k6svM z39c{hdWuG`W9JOYrjS1yZ9+oNSIt5q!D9Y=pW>y?{0ZN+mP{_&)s3_D6jibCDrPSB zr;1;<^oPi!Y3P3+5&s$_d*KyPudj(xE&BH?!S6zPZ75HdtS{upFj6iCYKt=yYR)lM ziyvuIsWvLL$S@9Y(paR0N~eNMrV}tuW@23M@du) z_=_*iv3Y%2$<#vm$lZG zmSC__0Ncu+ny=d^0N4nV4a#oRqU7s zO;c5+`1y zsYp%JvdA}4=+P=)WS?{q&HI&B+V!iJ=p*(5c$S&|g_lte0~aYfTghEb(^!!soYbsZ z-?F zpK-b%m&*?W9s|Y8RhR4!12lho&%eg<8AJ8EDO>eGTKZ_p@JY7+mEWu`5X{zzQ=CxE zE^i>TJ4pPX>4bs6UXXS;OcXjRFOJjNs;(M)HR+m7hJ6iJuY9(h>(|zc<$zyHX(&3! zKU0DAbiKcug01pbbEhf~sF)KC1(@1q%c)jpXuTt}=_r4{crZuz*?yca z$>N5SeTky+ke_AL7THAEeE472nzZSv0VE;WO4w`jSy0czY*Ytz(z-4fVGlboyJ-Srf$e{5houQw357No9$2156O zYb@MOr}N(eWs09F$!~w=TGJbfk>BgJ6W9xq?{g?;Voj8)#0j1yIYZE$OBo3498Fh{ zfk0K+R~{ITz^xx7!^$C4J;`j2$aj=DZ{pnKNMoeX6KaId6eqD4nab0rn=jvK3(=+O zw0UYOKut4(q^StU@u(kx)qNw?RQn-WHNTRin`j=J)qIL&B+-BHNQkDVWs#Kxt#G6o z%j~vh5~w+(kJ=1z8tOAi2^wR;&1X+Gm$AQfWIrZksa(*IKWkK^8TRjddCrPY8p)VU zE0zH=#paz`wa8RHTeo}oyK+veO*ZZbz1h^sU}`k4HQCm<1jXgrx?IJ-8nXN>-u_iT zTCJ|!#aeHB!E;NjTF4cVEU?@YEtUZ6&HXmo(kBh_fBVG~15wV(R zK5uR~Wwsv-FTo32e;iy-(w{0@&XVmXraE^q!|`bosSb)j#KM80KwYx#Jk@xL>T-5! zJu$Txz~m7_ekIL(%-V3c+RzEI!o_iw)rQeXs=2KT9_Q~@_0yH=cXhjwLl_XWETzS7`dGJ8H z6}gdABbG!>mSiJ|)tFqpj8spt8I@fvY@%AAl?WEX0YL zRZf3vG$Q>P|L`?T-;w}gs%S>TjozV}4dHGE%Qv81fr}Z3_&+1{Gzq$lBWhGlJ!G2%ba5q|= zGjHWh!zfHEkyhldY8X0v_lba8u@rbN|J1D3|5&l;Xp`Oa!TjPzgD#kp84yyad)51z zwG@pzF3$Lkc%9FWE>(XZYLb{WiKat6@nVWm_O?(dMgE=Q#8i-)<}@lwITj*Q7lnVo zu65Is(rf~Kb+y(KG*LL%9TYk62K!)@WwmH!ATY>`#fg|nYE%f+n@*I(+9zac3GQMI zvq?CJHjK^;3IBobR2LFms^Pq>A_dit%PNURzGx^yn`{6lZ7-B0HFJdVs?N@(kJ_dC zSL_8cmX+Te0-WjCnvKdlaoUp9L>qtO*A<~nHjKJ1e?6svKQi|neK{5~;}P&X;%Bgt z6;D!4vgIOk)oxV%e!k~}u8ID3`TqUnA^Y_30Gy$K6%e&>2MB^DrzTN*9 z4a0Ggrs4i~=X=keqdAVjxd8`gdWZbr`jm>2*l(6S;jHM}efEjv`}3do(4T)%Eud=^ z-~vqjB%ET3(gj9-C5_CG7YE48!)l^i5e+q6cq#IHAFonG5|m&T>;`C;-W~E6a5a&Y zN7zmt?;+NZ|3ewCLLnJnpVG0n3dcp+37&_bghR#So5QiK(R=96&-Z-rm_ra8*V;e) zHN|m2^Klx#S%sXvp#RxJ2qAwqM)2>?=p%;H6pB1nY7%2`b69$DI0L7#8A;IoeOtai z7M107ep-YS`Cg2s7-bX(C?zP2qcFxO=fOo2C<%v$;qQEa*hfM5oc)(V`~9NYZ&w0z{^yVH#Grq{zXYdQ5=$T8 z-*`N3nvwBeKL5w4o=FOIY|G0~j<@H#vW!2@+0Q@f^T})u80Pc-^M>AhcrQl0HmDSA z;cT(l|lgPM3k^ypk%PJV5 zFc=~IT+(cXD`fr5Dyx4?ny2p!6P0hgvd=Jh(kA@d<*&btE8XJ@=3BWFoFBrjiEc31 zeps)@Ipz5ySh;!Qbc^?o0#O=y+C?MVJKvi?d~OwH&i9(KUQN9Jh6RFVzs0Z7K5Uz& zEc+uQY=*DV{=xWQe6SDw67chp4L6@%Zx!aAl7JT15Pzp1#>#&%!DR-aZ*0iRw!B8) z=qrULh2;6o;WvE3puMlrH?}Ii8SVYyguDmdnsfS z8|*er7bHu$1`MHd!%n)dvGp~?HurMmZ-eO{x>l2W;_Kknyb;!ev*!8>fVF>4Ru9N(EZ+@M#WPE28Uo_L zfSBhN01~m?jg#VJPh@PIcRp<4(-gnj{i|BzLix8b=ckaFoFAn`XTpd#-m9dY2h4XMZt!y9MI zDS+Xu91V&nJEr3213)Co9q;XZT440{ho2Dsx=MH~6Uv00ywS^yrfA{aVB{gVh><}l zkijQ3MN=G+TUO%I`x-8@B}y1UD5{zyRY^DqIxv zCV;j+PwyJo)6HVH7IZg~iXMmJnN?*HFm(Sr&xa&B>Pf5n> zbtQlIAo1lq@4|^Sp6^Y9F7ltqel-bNiGlgfd0=TUZ$`6FD9!GWvZ1J^m58Vwc{KK7 z04UZReK!-9D%ru!hLz!;71`&Q@Q2GA)P1s34(LKi@HCMmX1eUNYD2s_#R-* zk4bPBz+U4~iBnUYfxE{e6PK#o0K5fq_X>a6ZLs>Wf%KN6^SwCO!{PA`h`Y?`Q$paL z7H$ui>jJg{WoKPbmc#3;6}&zMTy+H0bs(t)Lf7GLKa}5rgV%jSM;{W1x7hREJ_zn? zZSCIo4YRj1Tz8t=jmG7nR&W<&w)o-OiO%;Xb0=)p`{K{-;QWBz_zjKF!1I6}`SyQG zS^%_7(e2AGzqtjip!UJ_-tG0yZytmD@vAke!8;%QUZ?oU0dJp+xi0|L>cuu?>5(i1M}1J+xOU82KV>gFP=|WJE%AHVB3Ab@|o#u9?T0E64Vdno#Llt=I(hd_h9apo{e#$JKuks{Hu%EJI{YL`By8`cb;!Oc;2{;n+@Rd6nDaM z-iF<6f!%F^-EDy$ZwoYS?QVAl9cJsSMNt8 z59|((dYJwvdaGf$CExEYhnC`joaKCP65aFGLn$UiU2i`;N>QQxU5Ez}86L~ch^A3( zdq3jwiUzye68Gnfk3|aD!T)_``l;Qe7+_iVbhpA4;%nHx?0VOt1odU>I~R`&&0E~S zSTBA*Esv5ZPWy2vfv0#L0Q7$w+P`xrVe@j26L^+?NT_d`!JXm1!|5W{zRqFG-$?AVzZX-h2Ty^sr zc|0;_2cMDkNuZC`W5jJxJ3EX#YT)0wi_|8npQH0fg8#e2qWjPNlXVptX1Vw6DAGn8 zkaC>wO@6z#n}`q#e(UZf^5{f^E=fp@NuC24({(U z%}>uYq~|5wn`4L*q*s5jJn8NhB0xOp;1%+C(7TmS$olYF0qVi9;gyLB1qZ}ea}1v?RY@%j{mKuX$MhlCUN6os?TNG6|OYi z`(}dky-Df}TU9^(v>Cbvbk1+J3k?wF=7N7e7*kZNwrnj}f@P0YkiG!^j=?W?mS{*9bu6jH2AtPc+j@0h52&E{DNMIpciir5>7vI10v^ zHUiY%jlc~N-{52f4GD0BSwnsytOze1p&-KyD^tpR{ib(lO45ZWA1_IKiTQgHmr(C4 zi{Nj+sEvCr@*XlW_&oLe>yga9!Nv`W`565*Z%&v(`=C`cD_9s~9EEHLE0CdPx}F zvGx}eFNQ$spH;$IQHZXpj(ts>(k!3>#VAvwp1#ba_PGg!)ExcDNX9wXa)HQkhBiTm723qBgYa$#UN=X;aPBIu|Yt|pmIz|kz}o&|p!ylAAk4f17q|LD(l)l%u`7P}4LQ8;A>C7neKtFFC_Sl~bJW zO>QkbzM#9B-0IkRxiAOe zDjV-0dROvR**RWCUJm$90B@X*O=Rnx7g!61UUGZPhOtsRfniQ(01*2t^3L=dm^*L^qjE{a#j zecNU6=2_WjuHAL5b>ZH!JYM;DzBl>ZiHmcI{C7JiA5bK()}i6(U4-&V<_c#oC2WLa znk6`Qipp>1;6RQ;Mws^yLqJ*AmWbd^4@4nli1bL}R5d0RkoU-955REX(3>@8ar zAx*)q6+%efFbyFD^ZVjAlj8ZV43I}(?;-RI{esh5l3c$=Zx9XRIouZEmqy+(x zL1+pabIi!arIgp`4P)PT=rezbvL${SdEt@*9~Jj4a3G=-%k7_MUgE_mE)@^1M8v!e zd9&~Mg$^&e_3ogS73>klV}L(U5n3Q8cEB{L4a)t@vUP)_nN-=9C?Hagn{Tldqb&E8Z*pY4{a8?5O^)=}9m{1p2yB1J6-c)jDy!-g&)s;_8xS zQu}(oH+kX4-MMb^qJhH?r<~L)(Q*0?>PankmE+@RcF8Xug9ARk%`bHE)@KyMt>76+ zmV8?ntvnhU7T!nvU7s0(LJm*$qTYA_0u6bCf6=U>|1&&ch*>i8p6;3GOuYZhK z9?DgR1p62qjVdk3A2MMdrnp)HT;@jaXVo(KvvaIsw7^~f50Yf*0`v~Qcya`|{D_^1 z;IC=op=*36TEX65;TPh44<417$0PyOi`~nH8D@GIipVWafWm(Uhn0HST-OJ_4vosh z3I{#DP=3t~FV$4(h?ovlp-(VmuJ3m{dv&4r!|o$pPKZD3lbznUCt z;Z#}B{Q|1P4l2P_H`)ext(IHFf2rYZy}%0Mej?X6{wQFn2yfz{6uz^bkf{I-4(^tIY-ZpJtnRXZesf_)WYhH~rvw?_lzt!fB6BXWZ zp|F$ly~#@pI>@9~lb1SRs4UchF`-gd0SEP=yblt{W$8eGA*~2%1utjH`Ux&D0luT_ z7+ypK<%fr@dR-}_z!4Ek%J=+5`S9c|o-PQv7R5<*zyp7dQ8tGs7h{c9*9CDjs*K#w z_2bQEt1m6##zk0^NCyR*r>CcM#+s+3oZM%nwFVkV6_LK2?@dmcVTP+8Cl-`hhvFeu zRmYe3>h>}iqS z!!%eADs6vCKi`|YYGW!aLrTALG8qmOQQCR`nGJ}|!K6*tt_>t@H7D+H{$X&Qzx31r z=7)Yf(6OQ03-V6yshRQ(0`aCP+97<)349s=-@^jE7re_4`+9z+F7xcj}1k zLp<8&y68sr)WZcxZ|YU$HA zLz{nk-o(vJ`TBxex9Qn(V|A;^+d!xtW^uYht&uZbSQ*#(-sH>zwWe%WlQSLE8W(@> zQ0unm3aquwju~sqN(}aKQ?Vu`x&doh-03Vy;F=yoTrJR!5uDMYSr|o3&5cEnj&X^U zOYFrI?L$%&l?Y1r$A~qD-@RawJ-mqNuke3#k?+CFJY3TjkNk*xc2kVly}y+3Ru_#< z7x+%!$`;sb7$CE@`#{KRXu%fT^U!y^g%&Y5?3(6g+b@E&n7Pf?Z+lyqowQpG;u=!n zF8hI-a$5!5!-EFpc8!2*s#T}k_6WCzQjI3-EW!m!#Mu%jEV3-y^8A84hbn3ZUbufi z&p=kvYT@>JVdc#uAm*hBH>oi82|T(8Pb#u^@&K(#Eb0fl_%{?)`i+((!2Gd2W^zsv zl2C-du5c3K*vA11vLt_E5#M-G#)r$)X#wIn3{CIQ-`_J&FuEYO&ldnYqRk^Feh~Cq z7W&uG9g5g{ga{t@W8;xvkHQMcZTNp-B5U02y+2XeFTZ|5-nS$a3(-e)KZXBgs(Jx}lr@x>tld!>*h3HH+% zQ8bXwgTWn4RR~I&B+n*zadib~EZroan;Brad`nBS>!mVbV{bBX>t<=>!s6*@0(RccJ*V)=c zi0W}6wg4xyKCairt+9Eudboc+NYDCpaI5~^zwX_jcWd5DWQBsiSi}NGds#}T??p|@ z5hH@*+ndAjUyC9>kl;;GKn-RLRD(i|Lo2t$3(C;@rp<21))Vr$OwY~(s@>#mAP5by zHr>I<#Fs8?Tnj+S7E;KN?P_wUjV)wa{C$Iy%Z4l9$uccQh{`KakjZ~gSOuMO6Ri=F zT%M43>ZB$RorUtDA!<9~)LA;;krVV5zs`M@wp>$cJBLpPta@3d_XaH~1fGQg!0Wg@ zc!{{($1MPCfIxZfd$9?~8sg}+2QxLa9(=9^{pLj$ms)tVpPXa60~;&4ZpdTRtqZJJ zZQF8(1p3-&7y+UI@P>a6^iB`5O~WRd-de7y7Ung^2QEsU01V$2m4^{sO%Ap3c=+-g zl8N&gO0!r#Fzp#L%UWTx$syK&#fUA zt&Q2&;=7XXh2Urc54+{wA*@(LvuQyx^?+vz|C1$7lhCK-<8FVh@NjfLlicT{HG#;{ z&M2oJ|BjO6=cC@?=V)h`Yp?GZCh+NKJNI6p_ttbiAKCSs&qn}yC+)SI&qr62!;=;| z&gY{6!SSfGnT}791B4#6H`Lj*&&qSty;<^(`my9aJhE-QEw3}{;F;G4a65Zmmw9|z z7QJ2;YcE#4CcKyED+3xoZ9?L|k*RFqQ zuW~RLtJl9Js+j0)({>kReV~vs&^v|7J`Ed}K`a9me{!ge!;&w?UfH^`)C=Y<4UnEq zv#g4pPh`_EW7Dg3IqRh@c&|pekZV~R58e)?LF%mIhUx2oUpwAgF8Vjk#^!S4P7ACx zSC)?Ar7ysp&ziZjIBGw$aOnPz*0sB!&Z+H(=2mX4h|jG=XGf`7m6+EfEpLyc>>$td zEg|oue`EX5Zy+yjvx?k#Zz&CPN%+VX#DPh{N7{f5!%4su>9>RATbFt*60fVUs~2?F zC**F8fa@rG3?bO=gxba#*i0tcdO@{frjig_3b03qcBaaO*P}xNV;xX%RfN`#0;^6~ zeT$PcoUv!QF2i{o#`F9Uw4B+j5^}?$wV);TJQrRZ(j}}6GKE;|=@ZmyYmF^iY{n<5d$v*2APJZ#082Iqfm_KkC&#U#r z{C@iB5(3+-NSEy`0~>#`_bDHo8rtMey6YIEN}KXXKVt1vM<*dmw zjQr`s&c8sOu|*d!X1tmlX=4nScR{Z*kNf5;EqJzB(u+rxS`2?N2aLtKiBBf&wNc*c z0pxV&JJxnSJlJi?QIM_sota8sT6Me0+JRroseDQR*wcFL0SM*uC>sp`;)^bTDAfKJ ztw6DVV?evj*$j?$`@y{cQnfKe8BKBWDamO1eHI517RboIKND}Oi09pK!aDzd$6#4V zArJCme*w{GzfFG#sp+Mj;^{cZ_Qh9P^ac3Lzi=Ky|4kHe8-Wi|aM`sg z%3pPZ#=$2DA)6A-&@lr`fM;G7rDKHt&flh65JckWj+ary3Vs%U;Ts%D#T8@DI>G8P z)F3@q$E-M_wW6`bV|${;qK5I_-upBkA+mz*vfE@HrNj@}05kJ}hgM#ahJF@#2_!NN ze^f#Rf7UK7pZp^+MmJs*26_18>dN2%;ibY>Fh-Z$X29YhvnDRHC=FK;mYbsK`#Hj% zzhLVVUKQfOlfg=V;#TdOK*S|xEl)_4Kja6akKwgKAM+e+y7HF=(?#VGp*&DCE0mjs z5)9TDl0cZ|aCTQl38pK;qdQMo2i%P$;`v8)4C0*y8jqd<3maMRgFv_y{w@^rlK{THSL}TN zu)@PG92gw{;mcM)DCfSK9KCb{Lpj&O0AkHV(m0L%1EXRh`3Zx<8x));Vt=zYWLBw7 zrz0c@!nk~YjS%wH-;HHu4F_YoCTxk*FzajME1N*n3j}FLdgnoGn}gCylN=TQ4%d_2M85yi}H*{o)%Bd?<7BF)DJ1(?NEy5+Itv7KDSD zqDAn!CiVh&%Of{V-G)(wR-u2*MrjI6SdcLH)s#IB$?>CTMGNo{8cVfjIvgny*I=b` zXyP`1N&CvsJ8=Xh*8uRNpPHR|&}!l~6`OipmMu|BsS(^1 z>OqlCzt5_mr=5;A2&l6oRZF&jVQ<=uwyP%Prb6&IfN6`AAMNP3V*+lc_*f(#z_Lhm3T3-|C0V{|xv zH9{+X$RhkY(UjLsD}n3Dj5~LRF-@@-SdlZqpazRB)BrN?*nntQss8DMp6F;3{}5z< z{lHmuh_@WIY!k475Y=Tpxr0x>|1V^2aK1NrVTF^<#A)JrppzJ+$wJ_0CwhZZCXsO*H#y}$X=4&xb-S^8^KTy+mA z3M#Dr=5Ty?_P?6>cC8h4AF*1)2j}B|wFKNi2gQjNkP~z5agr1(=D3jVk0?! zx5d?l%jcZoqRJ_Nqg!KLhTCw6euEUMZPO{eH@6DunS`-IDK zw0D|L(_CyIR(4%n?ig8ehKnkv0Bp3~SuY5$CNH$t)61nf2qu=r7kF41EjKJIvgmP8 z_4X}LaNL3$Yjl}v73<^5+o8);y6e1m`qpKtgTCduO!Jg%GJo!WxXwE8X-Sugp=(Arx5)VVoruj%*G~7 z!ug!>?>In9OsO}2$2^oKzJaB{BUS?W7>PcJgN}qEx*%B;pqRkIjqdVbmT9;I!<*bc z5eal2-ryL0#2zIOlXS+^IsSAEgl?tKJe0w9itd_k4p)qR#(g*;Vd;p5YM1XF9KPH8DBSQm%g5_Ki- zs?+}HOHI*#4fT%W#!u>*iLNWFCHIw;lKgMr!lzAKSSTZ>Mo!$nBBERNRgP>|K^(ZU z8c+okf{#pbfHRMhO=TeebA5sP*s>7$tleZ*l7%ty*dYpgd%(f;R90BOPF}WTaHCUM z*S174DLUME_qL$y)8Hfx`0hBMaXL2fvUleN*5WdMcgZ0xYAgd-y7jVlL3uTKp}(A6 zuFyfOOH%pewd=~Dx!IMTI<5U<&cM!kLP=n;{zu?&gJvt13NDt?zEs*hlZ!OJ1?l_tMK+h zyw0D0WvBU$VXb4yV|Ww{n0@i&Rq-Gg^O?$@<#OQtMRhf{Up8ZKj$c%@CE|IhKs9W@ zg0N3MUyk-pHgB4X4P^0M7neI@FFC_Sl~Vvaw_Ry22(Ko`+RM!4(j0_|m&F(SyE0mC zth>mf=h~`3UL?^r>{ug-SL;|GTiy;iywY8N=grf%6kZ+lEf>O@r(}~EbjNkpfl*5W zc;y=~>?0S3EyV95E7KlM`mR=?GVgY>cO_eui9=X9#=CDxa*Y!nXD*DTg)&AzfMuK| zuu$Q`)h3I>-!hCsct|#!h0+7Vp1;88+i;A>@Cm1W@SO_|kU){hq0ZsCJ_)u)4ktl> zvy?=Fex+|1-ksoW8T?IT>8%!03kD85{-W6Yz^-kVeu3s{a;&}Y%hug6%o$29d9oM^ zM^;P%tZ?95f`*3NE=W{9xB&5hfP#um!FcZ!WAG`QgI{2hKR&+nm=~oRpVf)lc{|p^ zZ?{Ci7Cm*@DZPu;`6zF@L~Wac4duLl?blR04lGO0;!ohj#|@lV$jrwkZakp4oR?nV z$}NRtk)y($KL9y%*8WVQY>CmgA3lG_1!kI(1YAf8*2Ik0P&f`)q~;iT!7_|PnkHUK zxPv?7jJ=4=Nk+@S&SUg5VGi*#@)|ADbVXl3e|}v`;30V)5T8C5PiNBSqVDH^tDcx+sF%-9EmcDlW)Ma@wY7Jv(SE@ zQ817xaRS}sOur>eu=*OXg12dZ?SR3m-BQ$GeQ&#iS*9WJgU`qgMB2>P6F`#tF2?Sd z!a2`{nJWRhoU}j}mg#D8eBuHze7Ua$XLwacuqkGs8{)9+&9I}M_!`j3(HqlPi3{GW z$7p4&`srJ-j9u@v)BCn_nI~q;4PWi1?Wv$o59{)tC?pxrjOl=# z>}}@i?8wy4B4;eZicrnq)ESo?An9SyXgh(Z%U&NEes;*yVxFD==-h7&c83}Z%H#lZ z+5%t%ww$_P%lcr&jwts76BS4Jo169Et0KNOUw&T77;2Km5CO2Nzf~5kYHyWvyA*E z0z->M)Pn7kAm{QV0H$uc1pI*nSCeDy?O#}M!?0`;NF17vfg?jEL7o3X3)i$??l_?8QDy3-FcC<;@SnLxTy0E;NFLJ z?wylfO15;MFlb^m&eYTo9CHK99=6i=ZUl(%hrp~m73Pcy0=E8mOI>H zV+|l;SB8EkYBx^IW;5~5>#Y+ruZrUGS77Q#ZcJT>=0^>TeNYj-Qi+biw-(vuj1@-z z5wD`qXY2hfiPHou(+Nb?PcX&&K`>l z-fR2bv~{(a`UDL9jO>K}HuJTC2-5drbVn0C=eaO*B|sM2{b6mUtI134g<}139|UFe zRTWrcoB=n)(PnSPol@1Po{;LnhIU08jTT~V&cmS2c4#KXu6Nq&eQPV`iP>_!rQNhW z75wR8UEULaha~;Rm=1V!+!l|7&U5UHNyBMB=IZR&)J`KZ7E!|}&Q$+1BdN!O`+M_w zg6Cj3{EdA~Fin$?0To3U9>MbAC}3480r}H!jY9={2ldmEuLwu6$J^u}dYdiN9`#j9&KD zZAbJil}ls2<>Gk5Ol&Nt?XtGoa$HH|E7>89tzTPnaz%fN69qj7RBPaG@tWEGw%C{IeQviA z`?ohKbFlSxC#M0Z8o$BPU85D-JS1I)vz@e@Es-9N| z5^ON}sc;Dp!f-|1tw3flSSt!_75i_o_XcA4J5Jv`8Jo-EJFTzQOkL&XIU7G}X5)f? zA6fYK;EY?#u{*J9g-8Do2P+cB>170lH0dU@hiEnx)*5Iw7K9?~W(a402TL&QdpR#3 zqaVRegy!K5j*F8CU~<6x?tnKgvnUPW(4ktb;DIA?#K0qUM&1-hbR_n3?f~>J!onY= z1U6HU@e0r^i=y1LR5a8AEkQ_qa)XmQ801P@Y6w$p=U^CPZqL()no4(@m_dcO54f?6 z{Fb9m^So>z?%a2=xnoa%m2+IE+ywB)b{D!rd^I`I-hr;J*j_QnvNH-OQif9xMrBb@ zcu1bt(Wz378J`%CS1>A9Cvv8bDA3U^oL{3~sFgne0&IuEp>(;`=Il%PXqbf^A~?*^ zrlZ0=7GFnnkn|JfJD|j|D@q7m<+u?k`qx+*c8(q~>?%w<)KD~kn;#=`d&&8KAT~SS zpX?L6lQ2(6wt}Cth}_aK`h}#Jt2Z9|1ZNscFTjXX6{pu>JSABiFm_OQIo*co0?}|8 zMqYxvG)=;32Fn0|Xuu`) z*jyT0!Oglbc#S4gt91R0emk_7YJc7LU|;%+efYOreQ}t7oQ-DrU6))J)-S0n)sFxH zCr%I`l$8@Z4D_$5*!PGA4(wV=M@Ud#g-Ak@gz4Q+_y$LBD?KDh(L{ugs! z$BC{WTvJ$&Iv*~UV0_g6jPVfwa+~wUwF0w$q5!{-=Lx*VqkDlmi?E0j;zjI?Q5+`v zB#yCo|1%{h!JfaUMHk`xNgN@L8n}z-e@lfXQQ0e96Pa{NTGw~)VntFhRH(`=yUW68Z zgojhdsc(@cVw~QR1B#S{E?3xp=kL&c3Hc{h!uYyaRnV%CJ`3>7%cArdOa6kq zI3_9IKMLOrSln{~d~vn8bV0Hx5Xc2=6p%}lJx2dn;21V_7|$bI@2B9y3*fQ96r?7A zvrbA-nq+u{VtiY4FVDq&c1Q;9K75Gi3j5qghdtH-LE9+}=ParglrGxDsoSD|9BZ;3 z>UeL~i+8Nf?E*d4Wk>eJXa|EoKKMHfbeNjW1;UQYtu-Wa?s1_o6adHLW^iP*SCd!A z7KG&Mb$FQM_0+Ml7|449CM(B?nx);es) zC#J6O^Iv$*4qhB7~%WH7MT!DNbFHLTC`Djc75n9-&sIM~(aH6iQ)LOVNinK_HHr z;>@O-*G}H>-+l;H^*#oL4`%X_+Uuxb{~Iyi(a0+Jj(N&jL~N= z3WL|^@a$-Ocyc;_J{-S9Btb_92ZyhN>FMj&hm}7)&+}eSr_Hd+vjyJ3Xx2x=vzJt$Ue$&r+1yq$NflxJwj z*lD9J=4z8sqnCBq0X<}Xb75pf=X;aW0~ZvL@?1?$53EQc(XJ0oYA0TX;qM1kOpnmN zegE!b5hKxmLx~s9aa|Kc8B?GbDc8RQ2hH`LgYm)hqhm>PIePv2`N{EjW6rF3p}97i zl3eM;=xvnI6esULuxn4bg4)ui%12e|PYuuVlrTtc9stdxhHZ)NqYk*^Tjo-Zfxt|j zjGYGLJXITrX8kQfcO=trnhOI90u-}_)lhR>O-{9caWquQ!4XW}MFoE82mD^>CDmiX zE|Xp)!`prFM57}~oqZ@Rsn)=!uP5opyv42_URSEm$(CzNEoN-95vHg0*a>M=tx2B< zh;!tII91K*r~!4>sXNs-m=1mV)SqhgRZ!?-7N_A7^BY*D3RPUV6{v(0lyFLR97Pgw za>g%z=Q90=pW0Q*leDD(^Dqopa0s56Ez)#FUq63dy{8-ypFa0V?Bi9+ zeuzPNE{2ZZUVd(o3`l_Ca9M6>O%|xk+i((qrXf!s^X1+)aaNhO7kt-^_?9Dj<9uu& zj^A&Mxnp*PPh2Rh1Mt}v&O)ZWnw)B5T2z*5zgVo>3*&MlQjKvZ^zG zW@Str^gK;3G}@g~=UTb?c4%|;9=F+fy}4eRMt{fUo9AZ3Ieqsv*Nx*#{+9L6!1<3I zIY0NdJUwpW{sTB$nl_6T1sa?z9g#rMxqi3_`K4P7KPXph&@3TK1Rj7;E}~hn%6y!F zz>ikos~L(1xu`e8>7Cdz9t77D=Tr=TS!gyb7%IQxHAd)7{?r#M)XON;;x8bW5zbo# z{5iq7`{9RQFF!H0g}|D6z9IpA{_oIM*z*7Td7jG#Rx5tT;pT9h_qqmCH0t;&0z12s2ZkX13{?U(sBo#f-789m;``~E$~B5cQrZH27D-g)?}}s zqFM6=oX7*EhY_AzL6AISHD)>q-i0*DR*>?27RF=bB!Y3{uu?}a#$fy|H!$n&Zl@(6R; zD@XL{-)h#p&1@)Sx1zZtkzz*^j@KVagarbLlYaK_B0L8%XV-1#3CUJ}V8>#x1l4^k z->@id1Q)&l9u$?uVanYIp!n}0{5KSk$d!t(7F0{7o)5z&Wvbzr+=s!iOVf-k(TJoT zH!%f?v=3;~jrmURX`Yb{M4|gEGIz9*ImJbtcL1u`f?Y_YSCdn1mdwOsK|MF!SP||O6ems%~BMT!Xq1n=@_B+94boJF0YC| z+<|N!k*U~#bmjS&JDPbx08#mXq4KLoFkUyIhc5XkPdfw=9WVn)-otg`iKz4GD?u9k zci;0O$3Xa!&%u`KJdQK8*+6s8wbu!Da=vn5U^oCmXKo-Qa$HS+PR|;!C|}e=LsDLk z4wv@G!SZ-__-JykdgAtz1SQu{M^ISI54QcczENeYl*{U;@ z76$EsPEmHpC(e_xp@7tNeYJz9>JdrxY~<`k16UP@B4;m5m^J8Wi1rwy=kpKK!H2_% zN4ujA`x(c7+7CCj?o^|t33xtQH9^ZMrb>j8%op|+h;@FMn3zO4v1K%Ic z~!{H#iP|Nb-!?go0%lKVtzE100mhi<|!Q zK*j+UPqoFfaGoW6JFws-7`Qq~=r}h=RgVgUkxAqiQA;R)bk2{waLMkiuT~Lz6OLlU zUOj^lD8f|5_iZrV+bd$CKt##a!b9oZ3XABEzhz;9DZ;Tgjq>P>@9tu68TubZkKU9o z%gwNVmu3k@b1${pkwnh%%^|Ds#aJ518YD?6pAX+K>H*Qo*084!RhqGG;xL*ly#SbX zBDNgOT&HORfvwLK=ni)}9&=&hJ^+HYYw?;aSCcdCwRjC_&(LVyMg>k9M%@6Jd6@-J z@}jG7DHUl#Op^-Z^QgsL@k685)KVW9N47(M?J}fO8rd1(?x{ThjWO@l!sib<*yG#k#T^0of8SEeBxcQ{DJ~41n86=tHMz$sP;dZA~yW>nwEPD8p-&#`)Ue zU;Ej7A{f~Js=Xf;YE;lBGQh;MmY7&mO3z$zah=+!al2aau}^)~RDRXzLsl|TfT^E^ zQ|`?!UMzsFdcKb-dt*DVn%1768!B-at~0y<`ot>LfUas{sOA)F$A=7~)E z<;tn=;|M2SN|OBGktx7*h5c|A`iwK+Bn>egafTIwQhm!+;=G+9Jf5~W!(iwPJ0M(qtbvaaL>_yjd!D8g)Y-D(nNJSw%w1%d9pUqsi)_a*uvdM%X2Qw z{OEjda(G}1DxuAF1(~#dK|1Q8alg8;N}nOqEZhg-D}|b2-EtxtE@^j&(Rq5-(;pma zw!|CMH14f7`tVAuIyF1!X)$q|4nIAv%#JXm(NK-)42}+6;i#&V9v&QjHbT-m)lqfh z>7l7l1ym{63{js16P2GLUnL~Sd|Xpe3+wEo)41|J*dQ^dd2m?F8?t54SRemZOsJlD z4G>vO(+(zEPU5CR!O*jG3Y#Uh0c0zfX|~w_^jtzD})vsQxBuM+3O8T z^TM0q)T;TF?D_tf*Q5%6%5;wg`?gRu)XhUD&a!4zu`*>lEbK6$PX!MLSh@Ga#U_y);e2X$G4gTIPEz&kx}=c8q@T{6&6dD+LCF7L8DX=Ux&- zaB@s$rjCrzGNUPfKU8HwDu2s(6f}N@Tb-hUpL=r+3IS>3zHd8E;o9u99h3or6!uPS0?htPR#J`dW$Yb%-j@xiIr1rYjsf=n9owpdTFD^n(iZ zx^x16zOfWNK$(R;WPes@^-@3*k|a#;cx078FomVJVzJa`30VSK3nG4DoNvyQaLmn< z!Z^iqoS+*o%7lE$e&);?#M~P%3WJ=|f>`Cv1NO?V+{F6rflBiSLn%vxw%~4n+}%c( zYMHnXM6wP2w!8T^PRu6y^xt!}weZ%j@Qw?Am7g$_u|?skPy@PXV{uj2Y_F(d+Z?4+ zeSJjrNFtSG2+UO}$c!SU6P7B9SdUmN{nA|_Q)+(*AlQ99~bHoX{OiAL+F?t`TIGMqF8{fXYeE%J~AyKw040ZutMdS_# zh*WN7jpfzrr75@Av;X*IgpZ6e^I^dZ^ma{=J*2t$F5sm{ICU&xMXI4t3S;>cqZJ?} zYyOgCaXOX;D#r(I+l-%;k7C(?l@A+#d)6y2ss8>U4Mh#Zp{S-6Tkz~*KCq1s(B*`^ zK&5W1xBZ<%>r8Co3x^$-R*P2+3$Acc~4HO29j9u&jcjXPncm{POWadB_Z) zCJHdURhSp5M>6AEwRH~Ol3nYbtj+r}u<~PQ%@(n4r}sl;;-OghPR((dl}%=UO~Qk>A4@lxIz#R=7RuA0IWej!Qe0h1Cm!I7HAMA7~G-8=nX{?_O%=@phMwJ@UtS`Ov(d$(u5yXcze7DCDnK#^0oW<#ZIhv)T_Y zM!(+1IQdvSXvs=gk&rn!@iQ}@BnhS~!XIag%h7a}1fV`u24JmN6Z%74TY>w~Q3o~* zWc_138|59!8|Pp%@xAquYK7^H3tY%Nf#LX>9mjzV5d6%5;A|xhh~2Dw8MX64>WbHp zUx(BdwM@b_+KLtHRkEUgwl%Wktx?DF&N}X+VN|hV#CI&(Iv<n{;}aG6bL^rg?qz$NgDbYTzN@<$%;f|eupTY!)1ms zQn@bk--pE+1~>u9U-*g>t`x>;2&x6#Q}_S_L{l86pV@I16<+NkYM=~NkE0@+?10p8ueGQk{k}vPe@OO;7IlR)B ziXF`2SK%#~$+yvsD{S(hGO0~Q#W7ey3JJ-GKm_~o>fmxL5}p41d}Rcn=( zOkM*Zf18DV$nNIE0ZNk)Q$)!!m%Etp!&L;W4ZJFe)|us+1kzfyTOpU$H$k)PP|MN3 zlv(+{D5P2JeEuhu%(TJRavY7pb9>4?cxo)tOp0Q=)a){KYdIdSN+0AI(s2^6Ky^WG+8xotoSf_g|Ah>0Eq-h#D z@ff*)^#S5e+3Y%>PX!nUSh)8D$O=chaN~RoC{No0rCb7l<*74R$~hkbFbyiLZDRWd z&Yh~;Qq`T}^nRM|_fWt(e=y$C(yi5V+2D879$4OfLESb*J3MbUflo)r?P-zTTf^m? z>Y|aEG1xw9uivuFfY@g()LWKmD6qEe$0p^rm^DX;W_3Ms)z&f|?KIoR0D4=m*LLSC zQvS68;7+OSIGImNr|ogk_M*`?f}%tQz<6}fO`pxd@#vtXI{Q!nf9b5u4h58^OLd~? zpToI$Ubv#nE{o6NP6OzlUh3uHMHxd+i`x!jRGZPWD7Ul$7}}%115u}1n|0W|;hPJl zu=4(Bd0WCXA&y?`rtCf9X^WYAQn;$jW~*x!t>$%eZ(R(!d|ThiFmksG7aquP^|1NI zhABV5>Y?QVhbiA6f2i7G*Vb=&*yhvxVy*LX?mXy$PTiS?+vz^qge+^2D(S>LAQ21dvw$Scn3eA zZMmVF0Jzm@?fpPl4da{9lq~bN=@}afRdu%j3Km9_E=U#ye}E^jY-stkBQP$C6LwIG z-lrmJ>(76`{Ph2`_pZ%tzw`HZ{bM*1SMKAVS(|7IKp!Q#KOYD!g`>}^l_C$XF2%)j?jDR5vuWD zM>MgB!z}u*fAS+8pR{N`$&XG1DWqt%KxIk=?69X~ZmJ)(vQJRg!TwCs_zv8ymCSsr zhpUoy&v2$c*V=vWe%YR~vNn2Vs|9nP;GM0Erv1K=? z4YS{sJUx?X>~pT;>jC?;Rc_EB`#hNZ?T4-C5OqTpeCYnX!=X#9Zr}g>l!N!#t#6-m z({4S0HyiAJ(;=*R2zJseAxADn!&}GC$ZmIW=n8xt_CgeulGczYfB6BtcHAY3`}vT6 zsWtL>e~P^{A+QBGG#*P`2k6$}d^eA_XtLX7Zm8BXoOjzl`|FGA#znDG=KE9>dy3>1 zQ;FXNl7SDGUpC5LQ8jdo{Gu1JVmy4#17kbZ3j$O2vGfGL=zb2>m#Fyh#b65JTj&DC z90ea#)H${gMeGF0ASr~S1LTAHV4Wo?qH{kme>EN~r~ILWy5rDJ&SDXRg_DNzQ78pp zzI}I;4^E-?#}Q2w45B5Gc&= z3dzA|#wPbac~x|7Xr2D#Ri5wc*l~~W(?tHPrB?{4tCCAZ-hIhoQ>zxq~w4r$sqtjl*UIjgX0Rv#(5;^Hnxiy#4$Gw~7g_ew_$ zlXCri^D*hat{Qmpz2U$S<0BGnfFB5kj-zX^b^zTBW zzoPpkGSB$yZ){|FoFN47h*c1f`>%Ioz{y{KLm%~sCI5M}cA_^A2fzOp>r0v8f18Ix z+6~+@Ng^R*bV_7IMa0;0q@RFNHHXMS2OmLC`m1 z4NSqBp$z_A#FuKj!g?&4J3jRAewC8jeGaL!KA8VO0Qc z{T-_?$EIVAVY<`Yn^u+G(cI%pG6H*%BTP0!v;XeJ=JUPq(l3uex`8z3e@^zj;Zwmh z^`-A_)F&TR>Y) zG&Z5N^`xQ`25F4EJjN41e}d`Mjw>Y~_mxD@2B;YQ6iQ+`d|JwqO+yGHZ(tk1T1`C4 zkllL1(RIK&45pxd)Q}F$+*SW-I zlub4QeqG>aTi`R~f8mLK=wsIfNn(hSZv~?e?LCv@4tfskZrIruKMa z_IGpkb_c{Myn(Khf+<`CFj$ze-DhQyleq&356+4qKS?bi?cN9XrTglyNS$}onSqcIRj2ozi>N;Vh8QO z<82Zrf+u8z>yRN?z4-;KZN@(DIDv;8PMPB*Hh{H=67UH$k%N$DXq0={0@{A!QG)r_ zQxj8>xNHcxl{)bPq-v81xB)Q;T!7n=I@bH_N}PMReKd@vQ^?JE+vVco>MEtVlCU3!?7d+5?&eG~lp-N41riA;EI6Cmv?y|{*f6F+oG zvp2X}o^@DUi+q`XJ9wk4tJ3)S)>q?pkPOw^ZIE7l!-MN}mLgnX8;qqJvTaN`Jyf9C z?(0ybe+1Uk&|ct0Aq>*`IWHN~-d@zR>jb0>5ooH23T!e{T%kc|V1ybQnBc4mb!? zRvZ14oKHK6;CdP*q|${GBT3F?F$u4BD7E#`__wvhmE?9&7^Bz#4xVS%V~U-1>=t49N}}z{lJq62K>AgaQGEVh6Dhn|70&wyC6>qDk#`$KSvZfAR!PM*Ay)+=Re?I;?L1e;rA% z!qYelQ^x?3sL*Vo8^XAoMK6Sj8KM(9h?dib0#-L59-teW2n(8n*;h(nw?z*jW>`a2 zvZBhfc9@RPxSmNhO6!y0xS2q!GAO%atO}%|0pv8kg$5M9L^!qt-@zkpRvacgrDNAc z_7bMnTm-kb<|kPiuF)vvG2>XAf6ORlLlx=Ra~9wt^L;`lI6YCai=+j|xKm9d9;DMJ zk-ALEdMfRt8F*{xz|w-W{NO6?$EM(hNu+2LHZ;t(dg`0tW{S}E_F(h87$nJMes2+S zL|Z~;SIcY(S-RXFTREJNaUE-of0wts2;;P2C}-4`TZY&Odv0MTS&tZfe?PpNx=XOG zUv8~{vg2lz54uU0t9({QXn_Wt)r3IBWc!t4Vi?9SeK-TRz$dP3vKTLa{b~}ML0h6G zS2~GCY0s6;(u_jQcJOxV*KFAd4dONC@7f@BJ{UZBM2I$W9(4T8WI)WLg9^1F?1(g_ z26H8*5T@D)n!uwpjJ|BCqrqAZcXnXd}Y0gSOBSH|erNr_}Ks zb1R+$vufG#u$#K}My|G6fL5OgMT~9=`8SCWjlzYdI35D&T^O$}LLa&h^?Rl%K(oXZ zkvQ%~`6Lo2X2v;@7NXr=ii%im|M3tV6Kw@@>8U@UnHHcWj3XO*e=d4xOo%%^xBQN8 z5EoRSb~6rI3~!1WU4h*mlN4hE*e0lo7BJm@BjYScA@;~+ zKp<5Bwy%_8>7Y32EZ71~3FYA}h?l?-BRbF=+$AfPh>yDjUgk>yB&Ix%kR6_E5K@`3 zT-E`!+icJe+Rlol)ofEduzK4e2{`nol{_3Z5ys*+vddR#G0hBZQEw!Ol-R` zo5r?n+ivWnVcVVW-}_*ntvOrkWY%+E@Acg4AyPuWl%>;@I}S{Jw06T%j-0|fm||nK z14VF`SrTRwR|)cXM0Lw8Q=CmDu2yYp>0Dee>-=-)`G;9X1cdnKtvXv>+t+ThNxLA> z%=#r|3LkV$ItkkbUD|+S&HMl<#`@72sV`m;EntVm*lZG51aAI5M2~sYL#0XbW(?&B z!y^X>5wD=`O%wj{Q;G7kN)vD1T2?kIQp^&HBqO9*V8LbluQgU)rexxXiKLpjBdvC3 z_lZFdN8TWy@ovI`Gi(w#ZO9p4YfUC*5}RU;hCENPQ;2*k0Pw-f>=pQ3TnZVI!k+m} zS~+Y!#WR3C1pMRk@+=A8^FdlA(2lE~e)u;n4AZz#PEx14vlE(83sftedlG*fZ8GjQ zC~hG`7P{_Fx#eWMwLAhe$?Yt`d8$}5Qwbz`%{u1+mBJjo#yUznW+57<_AWF3z<@+I z%7S&Fp0w6bpncqrFQ#ox84};&7K#7VSfgzB_wdD0gOxBV4BX)odXqA!&$EVNSNt$H z{+>6{I-=B{6PA*T#w$DRN36#0!tyBoDr@?YO2@Ae52<~KHfBfhP+Mh=%mO^0vwiUl zNu2&EHw0I{X!kquPZka0<;d-du)PXlGHC<`xm(Io>1)Zmk(5S8LfHzq?^3e;eeRIbr|);6ydEg5*~`Y6JQMgHZVs-(?Z?`K6-? znO~Le7=?X2ulM=&X2rhhg)sP;YlVvj)Z1YA?0v2;e$@vd5M1a(gOU99ewf6L(ygTY z#Ql>ONl40P2d6XbNK}zUWoTjSP-eE_VBNcm1qr^mcvdQe+SHq5-9^7aKt110rI1iJ5?+4O2QVfOAO}SH;I3! zA{`(>j=Ml~BN^Uj5jRTr4Z?60$FAnBBKbQR?bbP~wJH4~Om{Vn8!#4mKMbpD0|r|v_uj{CsH<9!WE^Vl)rQ`t zVO+~27-2*ZAAfg$XLX1Ubw)D<1P~6uB7>nVPJz`>yIA?7Z{HF4eWqOktMV&USgXzn zvM4Gyx&$u4Uen2(`W(|MtWZ#Kyd2vIYgit!$qbybUyIG-Eq6ezkge~>Zii^r5T1u6 z-=i{=&@8{!_fL}#>Hme3T%J&ae~TI$DQI_>;r2+51!lL z%B;mnk7AaXAlXXM!lsgrDhr*`l7e2VVoA7&oHfZ=8EN(WbB^?iSaA}045lkTd7N~3 zZp>+D7pb|s>4nduZ zqqPZ~pl|s#Pz*q$?FY9y3DjSf@WBPrp4PU8BkC?AwuSA*v$CzyEoG#uz^z75NDG)a zLx&+qyR(xPV%%uew}>Z`oLaFZE?t#?Z1jFyH(u;~%F#SAF_^BMsdIWNK zXQ!ErLprjxaAAf)uXLwg1*h_Gp*V`IGOVrQA?N+-z~{UAgR*$+Egt1lp?2OeK59lR~W(YkFB`P`{SYm!-`rNTT1Cy|D*Q7zq{|n=3xA@nR+O z_VY{F3<=6+1$9L1%dis3Hn4)6_oER!=$-O>w>28)=qQlOEen>K7PL3CM8=P(lah)H zK2Q>}!Fdc2v}UBRTZOy;W+rDodlVMK48aWa8$*%Yi1Z{fwl5$f+zH%cQo*aBTREdX zWTcoTec&}b#phW&o-jQ9VhQWUBpo?SuS#EIj{&LENFb3HIWhl@vr>iKO4u5)w1-V1 z7Xn70HWyaHSb)**xLg}xfYWHniKG|IrilQ9Jue}Yz%4tO@+M*`@(wh7viYN!>x`1f zn^&r+pLt`_J@1x{F23?(s>|}z7WBR{Gp&?$Dh&?Qw3L6q&MB{4#mP{X=q?Pgf+fl2 znUZsC`HP}d(PfBHC*n$UGDyLx1ek}?WY~f1;vNO2vtWE&A}qyLQHk%!zauRH->j%# z-@l|^z84BFO-TI9^H!{$O0QGZSZC?~nu{|_lcc{iEV72JK?-~RUA`hfASKGu~H^^?j z11@S_$d7BqEZ7!x@tsIcj^g&1jk30efnFG1dxnd_xH7EmE0}k9>^Qk@QQtQrPrt13Tgz$#(%t_?KvL;q{29=e>3CBgo=RdYAI=i^Z_XzfS?x&j1v>*U# zpS&e$Wa=9CLK6TJaKV7#;9Lqhux?lT$LH+oM`$IpF$0ybReI5qxsI~j_q!q-Xd@&f zssBI{BUlDOSFS-j2uZLH-D?Si8>1mU`Rk?F4sNkH^`#*5lFkl??@Hs4(6Y4_-IkY1 z^pLQfoFtIQ!f6-a(o?+`f4(R1BEPe4b1h3{njeAKLR>sKyB|m9&nU74mmU*ryFj7) zqHS&A>dSKXU2 zp}K;B!3sJr`24pI<#BSmk3o_wI)TUM2SO(hGOeTyIf8Bsc+Zjrrb}!JXOQmYaNl0- z1IY8wnJX#D2n6=|k)RL2Z6RwMDzZe*b=EGbv_hN>ibnJ zil%-=TTgxMT{U8n8c3i$T*kN1>bfpkyMtT&CtF3mEeP3X;vX$q0d;CuVFxlujN4Ww zNq(E${WS)D8hm>M-#=3zFuwbFFc%YZ9Hnle%BUTAaEnJZZ^YADN=vv9L+W-Uit}5! zNLrayrDx#O0#YMT_+o@L&NQ!ktTL-=IckhwTM{sJ8iX&ncJc-bDnlvG=`4vLfIDsZ zGiOjJoG=j2yOO%VcPt>j8U}N~79)aB%T#ETu5lTg2FCF@6(gq?ET|e7)qE5602md1 zPTk_EiaX>wBWOyAU1x4xq6gK*s65a`$8iOFyO8q@`SzJSHWVI^&{RcM278Y`Se;?l zM;W;Z8l#y5tm(wEqSppIZ1p|XX?CDJk0D{t^@ciU7g$hT4$MXAZRoFFoIk_3>p z(_Wh2zyPsDk`p8rGI)vDG_R3H(&%rhzoTu&VnzUjhK$T2!+fHuGgzl1Bzo`SXOI z;<4`zHU2BZ>0+WLbzv;g`4M4u)ioW26N(Nc*jkOWzSbhsl+>3+)4*C5S#8Oq5XtL$ zpsmiIwZyMptX%l=+z!w1YvhEeS+dG$ux4tWLJe%0ONyNnwBqpUPGN;Sh!_7c-&wM) z5PkuWnosPKYDQvU;ODB<5W_N1f)ViUxA@~|Iy(JTHqq0Bp!7IQ2u7j@BvzFsF4u` zchl>O>p$*{o?41tn0X+T7%=F8Xd`A1{+^XL_3s7HMx<;!joF6P#>`cEh$UY?>qBla z0I9Iv_pPEy(w@aGfDMp^NQjgTC{gxnh5Oj5qC#))!G_pwF1g@Y3~Nx}F4TmA5u zxr+w) zxyuACb>$(HQepdG`kXA$WxBtGwNe;DjUFzV5(>yi@lVVTx6j8o+LpDY%~jDPPoc1FT0qItJ?~jUC-si>)W36?ebfxaSkW{vHLZV%b*RlG zz%I}3i+CYkyCAxP9G>7E5!}qk%OdfG^mU#eUPpw0{{df?7QEq4W;-IuLULBJADA2J z4PSj0>}1-}!h0&tNys?H8y*C5&AjxDpF=85>olm9syD)xuhgMS&^p*EL~ZcUpCUC9 zTLj-=dTm&tq<#(soOD`)WiXm!#Ck0g7)v1>JjdT9)1g7Re6r`qPd(J&h0tX}E0go3 zmV2oq%2AraOuJ;HUvmn zbwA&!hcqKPYA4Wx-9{lI{ zHNwKrX6-;UL!;yc*QJd&wPVjMUa<*dqZFHPq`Ya0A!^a(O)vU`PcCJl6YWhs(*HIy zCmegibRG?$wkRVw5FYj)*rg<;*J?%a~dwh1Nz06W*|?|zQoW$|6dRJPN7t=M>Q2B zVKgMkt#Pm)qU9L6CJ5$?{SiR3)ah6cRp>qZAsVSgz|3m82Zip2CkmlcF8m<-4bCx0 ziI@9aP&^ULpSF@TuHtR9u&I$AVLROGQ7d-(Em+VQ9DbJUbJPO5lz-K#($MY2tiW6~ zIYrds6>;hC(_Xs3uK?I!Q%~|zT&8j)*OyXnT-HTpAbxjEs%s*jN|ZseS1K1~}wKG(rr(F#HcOIgA=$D%IW7 zTMKm?#%Nfu2Gq|Asg1{^Lh15(>{x5XXI=(Z|qbC%9Ch$VXiL{DdIfWbJiIWvK5F+ zf@%5m_?hTfFjd_*9cii5Q}l{=l7i&^A`H6`-Cqkvo=$4b>@EH3SB0O1_$H}{0;MzO z)88OY`-ilcyJRfD0`91Aps(S)@H_9ff(*T;f?d@0loR>ZURI-=CNQ?|m&dnTvZDzV zX0wQAik&7_8U}&lTsGAAw}D(X1W70dU9e6414_pOH{ikQL+9ppN3Z@=LO za9kTTncmmhC{@Rjnftq0ssJh4q4gPzL10m5;8u<3bh<*Vd+i^5Q|>fns6TpNbxE!E zt*cs7{VElhI)G6evDQ~pdVx)r*vO>39Cvb7L2ehq^L&{(GP6>A1bg)x;$w{5Yv5(j zSLDd><3WkjPup5gxcwgK_rcDcDJFD7+#E{_YmQo9rty3f)-B-i6|?FTUQU9j*c8!* zxpmvLmiuWQ2d;mL&zovQ?chxHpMp2@Fh!rsuTO$9Osw!LEu=gfWMVu`0 zR`5&KCRWidYP&{JTzDvj$M@~TYcMKRUa)5;ynWsMj?|8yUFT!cwS)dN<37)2m%RxC zvF}P@KUiqV^J*cOe!T&>WoWb9^s_QiV>XJBcId~ ze#YsG_JQ-T&$rFo6IY7!zyH{o5It-gPwgfdEin|!9u88?a6j36bOfr7|GeflJ>DtA=KfDpYWB^Wj$nDmb2U9H zHE9(H>ya^C5U#eW9A0R*(TIC0kk}B#iSLdw%E=`}bEH!G29Qi7eu|&;Ooif)=%m6G zbJvp6$NIOadE^BzD6?;t6YQ}?^Hes$s^a?NlvS`_>x;|=IbS>qC5mwC*Far+$+|DJ6yk(gE%Q};@>uy9D_$&H6--t{o+ zmldCU{t%u%e`kLRpOa-=F7d1-8RKmga~KR-POG~fc>rUjo1_e!1o+#X;bif;6&;zn zTra=D#lIBe!31amvg*GaBBq(mA+glLAI><{c=RDLiU}j%Lk=|#VZY6jegs;~D@B`X zi9YYqqOEf368=TWvOwx1b&_X_LZ)@+oLE_<*lDKjx_1dz>J-I4!=hEEIr3~Ut~&eo z0lQ_kitV=m-|Gha_X3{m-R=H28?uY8SQgUXOP7%m0#^D*&@wyw_s=ys*d*<5*!c&K zXiG?TZNJl}({wY51orZEmfJ}O3%nG1Eb-g^33M)x&W5}*DdGMHb)I5yrIb?MdAVK8 z05Ek&pz)pLNZR|VU%1>xt2r++08Vh|Yr^p`6f}VLH7EA(9&AL2Tqc zL6u)E)fTTt3DH29wPu7<($g886TE|TG(reU>#&g+3Sc7DW9yFqDpHMjFlY zQLgT?6)%P{8?1q`1M83AS2OUFMU7N4`Y)A*1oGXHxy*EKrTLWm*EN4lMK!wVWL9a? zQ@W=lVaQ0tu5S%n*tjy*`p^3!9?IndKb!_m44NQK6Gy=4|D{s>Ya2W(YM6afk!ogu=8W~OQnZ9pn}E_1rk*gkuzzORbcDa;I%*OC1htj&iqJ`q0U zRa|#JDwyn3PxPXkrC-YGO*x<1mBGT`9M0U;bdlv`jf8l14X#Gg){U2^bpFZ74LgZ> ze3^)C{`inDWy719r{-NS{oC6UGScq(ia~6hSiDQJ(DiPu&P36$Q~UOJIX_Nk&J`+O z+1HQ@3xXPcA(*v4vCgU8r!Vdtx(5 zQr``&2o=<)Bv(kR%)qCfrZDSMI&sM+(*FZ5_D80?DRJJ?<$lFWC^Aah!HhICxEqp%ES9&{| zlxENHhQ<=0?(wCTY=bGS_PNEzTmyNIxyS#Wp=(E!2aH$gRP5mt^9fHkZTwpoJMbG3 z&YoIqHyxS-NRsxu?zud+4dW6WA!jZeS_)g&b-RCF6n5`eC~RBU8R)arX+;}7gB4o- za%lwV_$SbCcy*6BelVu*n%Zq+G3Kla*ynn#>1H%QoIb(X?V`3=q9pZoxpF*h8(q+C z@MW%U+HpA68o*Z#8Y3;}98rFWvbiiVR>?k7N92WG3$2niuA^{<{pw-LO-@>$h95&j zxY~mJ>FD$c0nQDdp-TL9T!rdxz~<9Qd|Ykg9}Lp7X6SH=-M@~I=%Fj~N))FAA&Yk7 zv@4O_bz~BGY!3dy3WViCTpDIc^^}82D^Ujfh;~^-grNfJ-?I`QG;4S~NR28a*@=R1 zEzz!21ARpY!|tM}-_atyiR)|3nVX4;E{v~QkAA%a5y_5g^5Pdc!&h~5!TD^7c$rCi zQ)kIW+Y6;w5i$sa=DkvnZ}@i-nivA#>7y^+OowT6@w8XuCog zFrqF2g?D}`%VObpqph!g^$V?fB(#X7*WvNas1y!@+xGge2_`7ygA^VgF>?Yl3qTQl zpRNDMU-;dJzrjT>Ze0|Zi3w^Q^#DL{%zmP-XL~h{w$! z5x_NhAVKk7pS+NGX*BYGDUsQ%m@c&kO9|9SpDODh0Cz?@9cO!my$~rj52ujA;{aB8 zD_C~TBHynIoHe}W0{1^11PVn}S#Jo7FgmJEb8lq)BUP%i@QjpdyDojVhy7nkVfv9V z&w;Z|375wbr|)xrBbsgQ;6^)sF!J^dj{0fOZ%QnAz^+-avmS|Cp>wMYPG`BNCUA@n zGQ?m6CB!FUEi;B0DOk#HGH& zR>tUQr*vguei?{r-9+6^bh z3w(HfbGOkNveJOxD!%*~i&CSv!%Jzh=h@4J|10Lm7nl-uS{G7-gZa(aO*mw{8-I^In7pqwrV+BHcBW`BSBAfbjUILd|aj#i{Vot zy1IfmG=V1CN+^XT6RJ!gafo_fBS=h7Zpld5b@)w=4zKnf$l>k+DKh=f5HplRu#M1+^8QB8IRt8K}%rKcez&i(GNE9153@OORqozUuVGv6W zp#qI^zE?yWbnYu0W>zUep;9Xm3X4@>0dSOWgj}JVbWyQovq^0a(G1L2h2+zfuJs-0 zWSGpnCK>Q#)GeYgr3E!GndzB z_iZIFtv`y=G7m$18?AKs#IbK2cAWvCn8@DZr(_B@!q?i9K0oyxrgCy$NIRG?vPCYT z=&=c|N))N0$U}2l!+aVEPX=}3m%*CabTt%2>@?3?2un!gUPp)sVpt04hI#*!)JE!V zZIHFGl^oSKqdE)B&RVnhE1Vm&Z?B3N1su$i9|vSIXq6@5FC?x&#Kl-_()x?0*{Bo> z2#)EB?m4BCtnyp8ctiGLc=x+_oANYLhO&+p@q}=|Fh!z~0Tb%uD34w+yY+1)0%VaB zF9HVPG($>`&b}f+m`gOMMj3~${9e1%Lso3u-~kFfhZyUHVq4)=MqWGJ&j*pz0o7^OZ%rS${9bw)MPCK1dolk&6 zg$$S{2S8Xap>5|YVb&Y1hPZvxiS4VdWh>*XSqK`#74T$R{!^ zb4=OFJ@KF>j%RX@C{m|J?rIKGcg zG_;5yJza%C?L;J6vE4hPmo|SVW`m%OpY-ZCw?DP|?l+CPY8OGC&8eYD2-B(`cGYsq zTaCXpldBz7f)uXGh=%Z6>=Bkb;t#>qRy-~ zo*bHJH{% zq-rU~IDrkEkqxeCRVJ7YM)c`5m4ll|!gXrsnJm+u!sOCwt_QqeLnQFo%l-09nn#x$ z6EQ|*xqRe~fhe%;fC^BQS1}cz#fhvVBtZMl+Mw#bJm*jrDH+fgwM`?XpKc#1qw_^K z7|az(+WSqY6yYq*#M?sKkTCt`a}BCu>7x;8!9!u3srX^y6o=VA-v1Qfk@aj00ry9d zF8c6nfx2=pd_&dn2~?gWBdBD^2-8_w$!1b^j2I2j-5rp2o_ZO+tJA5z9Gw> z>I(|DGvI=pk-K7!njWCWeEF1Sbcpemz@=5y+Kya~^4m1G>^LV?zgSqHeM&o(^k~9T zYF)lZYlUp=t`#48k&fWIctH;{oz&~!hIjSJc}FC_R=lVysSV%HV1=lf&!aCD2EO4> zyI((68cXIMFB%)oP#qn0`xRUxDniJlTgBl2r@>T*Wl5oZ_=|!~@aZ1ZlOr_rmo7P^ z{CkdZty_bS23NUk(wPXMNVcG#3W5=0YkI2>CZUo9Bl>%C$p_83N~TB{52K{f<*(C^ zieSS3M^2NYJmyXk?Bdjwp}@1DZ;D|rE7`@mwYf_M2XFa((5*~K?2}{r8}0cupNTd^ z&D9#W=wi0>n9%7diwKL41&_YkIW)3lPI4-p8&;=O$xjcFkLtTYurVG$5h;Z@@-|Q= zdC70nW9xj`ilg7jrbq-qUMox+Q>uei9LH0e8M1J<;TB4&%e63~2Rwz=!0eCiALimB z($s}H<9h(=noCztAu>Ig5f#f}Ctg?yc} zCeTB0bk)Jk!PxSA&wlo5Lt2V1{x)ftWvy5Uuc=`>lXo5Zo4Ilgk}1i{lak+Np5tsj zj!EM;B$pE&(H*Fs5ImcjZMGUIBCeB5pSMD3|=&HNNwB^Tr8aDUZO38d8hrir<95HvHVIrxX7iE0-}5`6ud9JI$U@!owfN9la=CQ z1R>=bBDRi#N$OKH8;AUPL=~PEDdC)LbG9& zEcK8qP1Lx9gTb$vwuCzNQH|&^cwY;>Sgc0ehksQyJi1CL6r>(+I1+jQnw$8hYKbMc zlH~m1`k^qe!FM7U@4KB+YSJ*vR9t%0t-{d93vS$|BIJGdnKKlUv#XIr%PmWM2pm|G zF}(6(8G0PZe9Q5SIOq`m2_JvMl93ef9}RKjTp-=mL$f;zm|jZW%dS+B&RY_IJ+^fw`f`gh)&_k9C=S_E{COlFb)!Cu?Pp;~Aw zV;$l{mRG89N}ogi|6El%X-P6p+t$q*h&K(~J%$PhY0%ekzeKiJlKyY$sBJ6Z8?y1BNghuJ zx_7)b+8s2Jy+Sslz%|${k-}sqgC~sD@bEKBHYzW4HJm?Oqt^cQ!!?6RO3-`XrQ)jt zQH@7E2uAlwQSiKg?D5u7qsPQ=x!KjO`vpEWVKhpSuI?xa_d-4XjW7 zO~gusJTGjVWWFL|Qe+f@F$k^?xbOz8QbEJ}13SRA??aufL1SaX*gBvQL z-KcEC$D1Idi^Mw;Nj9KXI)|SUc@-fdBX!TAKv)d1b54}VOM$vMHO3%u&*8ciP=ty{ z3pYW*h`eou9@?kt{qwj8^+T%ipM1RW3-if8uYid4L+Y6?* zPbfV|4KE}=2jTB&5ets-6L_Gw`MGy)M;K|3LZDHHp7oSH5HJOZnB`y9^#br*3aky_W2Nw}gMZiAeL> z%Kg~y@2lwBJ32QF&o>V-ll`yOZ-Zd+kAT|{^{WW*$1xZ!pMNF<{O|c6+D@Rad_+Rt z#_#8lvR2`l^M5K=^+;{aOf9m)C`f9*#)zWe)3jWNGruLe91%VeeU>7yhEvkw#s>;Y z&D*-9mdTe<+3FfdDRXc^9w;&qX_iXs~A0G{Kk};|1jp_S*E^x2!zl;7G__D?R zz1@__$^PClFv{kM)xUt}gkFTFzhM=Wrgva;#~!%ePbAyZuKag!Gej@=+vl%2ep}M! z0AYGflMt-d=oiV#vEhV2);jsd0mS;yo4m0(wcjabK%-zA{<;P>(j-m1hkEnisey?p z{>nM|wFC$wPQT|#c-JGS-Cuf@80bAM*%erBJHiNfaMxHv7vgo8Dfb?_kgm9$H#s@7 z1I=u~IU($a?pW(JE>0;t&MNw9Ce}V3%rUh3*OGMO0+xKG-4Bd3-AI%rL-fiPe-xy> z>p6Vq=TN|KMB+VmbV0$3aon^Jyd!1fMaN+B-fyFA{B*ph)ub zk=vG$JzFXaY^IC%!i$on-mD`&l(>+2!h_F_em}7GIuj(icPw_^4z|9kJM3y|AWt&7 za6hb+gRBqDEegfrbsqcpd6eUq?1qmm1{wp*E)d+DG4U3@c*HMOZpxfdoAWlg$0R#6 zzuGWMV-u6T!NAwu=s>;e1C%tZT07Yk1;<60Cq{#$?$e;=n9~?I0Ud^C!_CEK+RQH> z5Ix{K#B61xGlf%4Kjenwkf~4A_Mrf;%~G}ak1Zhx`XYYlD}%Ok#w91i+cWH^7K#JH z51=Ky2PRlI5B{j~!8cx20-{Lrz9lD>Y6WItNE98T&3js@ihbIwdU`c>XM=!0sTmC= zUZF39cX%=As5uzTEEy&_@u9|A-jd}-U%;PDm!u;N4dxGZ&W_12xP4h|`#$0s{dZqX z2}&rgDHMYR)R>u8#Ld)yGE}51Nn<+uo-$G8SV?DFS=;slUoMA4uCpq&mCt$@5BiMe1gZH50LdRTNf3*dlki#{QpCaW%A%YN7Gj>=jpxv zl=O@p@t-sI+Gl!1+;>gKEfCI?Xsc%m3t7&ZF{lA0&`VT)1($2Pgp zHjZDmlnLZb{-N~8O9g7ivWtE>t%2x^kR%$C9$X0Qw^3fO5xyi21mWGlz8DW!(|r73 z<5vi^5caPdhM5i0LEqi9aVS|9;$LiN z^$gcN$_Nx5j3IYEndZS86!Gog~woegv3je}GSF&k?3!v$<`y)7J4!g*3VHKaR)k}sEDxFB5m*JqBIRP)HomD#d z?XDVPEEJr_6^sbli&|-N{iUaHC9)Uvu1~5t-txBK1C1|6Cpr=XP^m>#WDv&wt+CE^ zPb*mvFcDXsdTHg!x5lhwfUEwL7-I#U<%5;!uesE?T#t_2X;5ZH4mTJ|&nY>E1znp> z*=nKYiP(jL2!fBHI9l)a-LpIhSzFY#@q$|s*#WEnMg>e9R3=mp@h!|R@;792)ewuo zVoVRu&O)%J)5|Let)KMGmK_$QZ?B+_Yx<$8T0>dE0&BhAqg!`hd@w(A_XbH@;*L?O z@1T*Pdu>7bQ&g{y&CqN0apY>fZ_+%A8JebPfASG7GJGp;~UCVyT#8a-6C#EEH;)L)_e$YE zc*04|{9)2m%}{Q^F^Uzj`XrOBassDGv=xJ6&e*PG570ig|6wYL>`6xb>(y z9>BzZ85w%5bRd06hD*lSKchHA7n1-0i&=|SMpoAiHywHg-GIh?IJ2{)fvf#ik?K6%h=NZXN&xkK?WrqXzl9rf{R`1&D0xwH{g zOX$>SWti*@jY#KAk`N>@{PwVl)Mw3jPM$Ul(P>nwQuWhN8YUU%;?H58=SUF@v~D0o zvc63cQvR+iaM*_;*^A+47^TzjNSeEu+*6cl^>6Z@_|k6m>$Xv-MX)3VcykLMO))h> zW^|@K&G#!BV=TW{$|!*%T8v%tmuDw%d zh>V0Mc@E zAW?kfuVt})L_cP(eS7Gh2m1A*rmLV%7?H0IJy_E6S`Iu=XL@ zp5#f31`U4{-$j;7&GG_M!5I0fC$xIo)hem}X0#B%@qD!z-A=X#b`{HH=PckFq~zl-Q#+oltZlNv^&qPDzY6o||2Q z4oaePgyif`jZz8ZsWE}E76Bp^KFoBU*+l(rf%=!sfknLDkRa=IC3)rm%w$X(VTeVb z;tOg%U^3?=?HwLm6D|5Dr+SQoyHYrp^0!$1?JdV>X-VbpKD9^bFoI3nXi6n{3tj#~;E{U%s|?sq&j_50@=$-ul3h&a@*CFurSQUGH7sjk3FT;dnQsSG}gLhLzUql6pMwk9r7*$m~y?hsWcurC5E=JvEOp~Q_G0|(}Ij&?GR z&;qAL0n; zd5-tvUYHT|&|Z?7I`H-h;vTLa&8ClBGMzb!l1OO|rS%8RNzGb)T`z9*`X}|@@0<$l zVaX0a-}n@|xBoNxjBrQPmLjY`N>+=rI@b&if+1Z!#9?Aq2iPPnOV>gcEGgWn5#$3<6g>M3?w z)@}h#;_{@5^zW)GJv?jh_%=SsB=pt};+b6-4wqiq!ywKhFqffJ0y}9(;BL@TL=8}s z&tFwR3_;ZRPYX+eOTg|BX2~L%;mqIKZsc_z>Y`RUbG!#Rtd+R}grk34Aj+ z4^2RJ81_R&X)pZsC-Pfp)hySvO6iX}HZHU8Xe&KHu7hN5@b^|im>2>8;x_K5`WDnz zso*USe<|@NUED;!1l8SmYM6JWp}|Xzdi2lZq!}Jmr){}Sm`9!bsXzZ2J0^}7SAxO7 z*b&_qCMN(zH}WCwKJvw5s}Y2`q=}w$>L;BQoc#9dD{@dG(Fv=OAuNO`$0TZCl(81j z_PwxkqWm@xY;L?Dhm7vg3jf=Orc0cEwJ(E89*=QyLfSA*DAX1&CH7(LHA_XR2dT{M zQfl(8t*biFXse0E)zk`A72`w-VX|($IZ>&HZ*aR~wH>D*sZYk5Hn<3!XX2@C_M1h; zdW2t$IL29iEk>X`CYL6K>tLf;_FGa6_9&w*%NUY8xGi4@riboH-u2t*lI#g~=pNOu zfAP_0NTo)iJslcPc$B4^!?e-Bx)4XvTELK@`bQ>1Bmk5~rIdusV{jepUW^0;Sp`^4 z3Q?x8H~vBbVkhA55W$Vs?CGkHc{7ccxZKIZ`s?zk`R!v2w71F9<0m9_12Az`Q@3Ot z`>=e#ST38y=_|aG^ACEO`Faj?L9E}kx7W%cEueT}$l7w8?z)db8LKRa<-8_GMsQE= zKOf424gl@+vY>3V$u$%9t}{DnAeSu4fhyexVbh8=8x}pa3U_npvh2af^rrb$Mq<%9&IBXuYhLk}l1=E^Ph+CSDM~k?d5Tuwz!(9!I z(+ZtWR0?|fo$~#vV~VgE$prBB5KMjjg!|e8d>W!)X|iaB5xKBfriNt|QB3e` z0v;lA^Le9lY9E32Y@EQ>-)`RNn!^t7HrGhF74%^TTydvTv;J?#;=4$Hl9@|C&7zkp zd^%=s6w&vQf*_;MkSf;;h2EYW*{W3kY*)jwJ31zki53Fut(MtllO!!*h$j%*8J@T9EnLwhd>L`eiWQyUFx?`_Ku?6Fw>RO(V!Gp*gZifkhXqoW;eHV@U|;105ye~2JyB41GB)RY@4w!a-$ zZ&k?2BJFN}1s7`Z96COFKDg~je5{_AQPEkz^B^l^9|1U3R}Y}rr@N)#`+9)@i&aC< zGGx&!!p>ig-{72liRL+AdoEx29%e{u8nu+L@vClcULkii^_cOwq3hZN+EnLvu%1{D zGhYdQw=WOt5I|&cBSQu9p(A|O&NTpf3w{-zJh$)Rg2Pd5pP*h266~m`=KI_y_^o}C zM4cY%z#>bMP8cZlSDHPPwkcY?#~%V_7Evt~M|aOO>cqL&=CnqfH-lNudbDz##48DW zv(biOBVl(UvSJs}*;!B?9@(pS@bg#c1SLT`q#W&pL@PkQmALHkH%p(4dafcYfM5IJ zoMkYyn(VDS@id|D4(zI?LMe6Q7KpE20TtR?}k?Co7QE(xIj4= zX3UI(H9Ngb_}j|WI%NbL>j7O<-~8^_Mu3Br^bsBC|8R8W;ZU~U|J5c5Ns?@pBq>5= zotd|YwpFkm*L}`& z?sMPISw5fXGd+vnq(mhYuXyQ|l!qNR)pll{X197!+AjdqyBGdGlyPt{h1EYHc%{^Q zAA0uFedK?WjjHq?brl28zD2e(%C|VyqBz8 z-48vBCSS(tm84Bvhg}bqC^J6sGstW2{7C*MR|{0WS~aWH=oVh0v5L^VmQ`9_@A>4D$GhSUt@h|5 zWeRJY`bDdT`^fLUGUF>GH|QE_Saa1h`g_l(v%H7C`lOTmIXT)vW$Y;-P>s|ewl?=p zJpUz%rKJ4%OAKY2)5|~4*Nfwrh|s|68eYZYh0hO&)UtRkAq^VQpW9}1Dd3Y29mJDw zT}g6?))ar(rILFjZSa<>vh-DH-!&T`?s@i?aSqVQD2>$VoH@?VK#MGIM=7>x_~xfM z{g?8bSHX&i{5Rju8-7de)PjNE?^V;St>sH?HV?W)7IlaxL~&O+WEEmRbc(akM+gh0m?pMpHn;&ZNnVie_zr% zdhfzgchGy|8YS5D?UUby2fy3tN(&qI27Qn{y|vgdAAQ2J7PEIoA3PfbKI z(B{;`1jD<_>=lhUG3QTbtbbqNjR7F3BlkznA_+|vYo>II`YGn_+G=Mag;Kou05efaZYU9QF{@n#E8AVsAvNcImH|Z zI{hu?i~WY)4^OkJ9z*QOn%^Ky7cYtez^MToAHh#zJnkF6tLGGnz?aa zl+Uh<2t^LQ?oH*X9+J2)BGqi0`bVt&Mm;e2^?D~KKHjJFMHEj23a)#!x%AuUA&t?M z0*3;2kT13V(OYK~*N&@qpBI?dR?BT&*jbBpy>UwcBw&!}@uGL`;tA%XTeD-R*W<)@ zMT_-t<9iLRD%0!MUNmr;W8BNCcG06T3y#x&NqwQZGMtX!CYAv#vI=FBZv69dUG6rC4{90;=mBTMr-d72_9Y)3*p zDG6fB4JQR110-7Rsvg&`#is$okaE}&O}!c~z8J*1E{ zkSh$Hk47CT_t!*XA6!cdnbslK+}zs_-7VID<3OaS270z%S*tmQBB-$Ll7nk?*_XOUu!7}R4<5)8FLVAqtUyN@p+N- zxI6Qi<2IjY2w*j&BjE)U7B-p@NI@XCS;;zZ86!7SRz#N42=H``(6ba$dM~`7+EIa1 zp0d9fSh5{b_)*@X14`EmO?c0&+$L5>p$*Ep`Fqfq1x@l0RXuI3yr(0U1nJp1%19j} zg43&0HZ8hgJ*cReeZK}KlyGg!a$H@hCDZ%7@i(BkVSkOzPArtS*FuJc0oTCz&YnGL zC~K?SUTfd*V%)6b+MFlt20`d0Fva@A0HaAhl7w4woZ6J#8$X*Q2@v)Xf{h%B`~LG5 ziy9utL3vrBZ)`tnLvXToSLvKwE{Y7cCqRCaVu_7B0P5oeOnGNZDrlA7G=ea`gE+wd z{cDzr`ng@abB1+sov55=b_?ZK3_u(NxM1WCrJ&ev{`VE{!k}wed}JkUkuqD$m5&f{ zz|Fno9rD+9-wJc(BsC7gmimw^ANbKwD^fap*zRgV>gK;!sZS&e1GLBszB3D+Bl$0C zZ&#!B9m`L1(;a8Ol|*?i<~$a-YJ)MWep#V!?(Ny3NA zw)=$%x9MA(2@VOV#Y9G!uO2fxsZ0JU>=Cj9CSIhx`9dDOc}v_lGocgktZ2QU0b1b3o#->12v)MBv1tO?fTtXxxPdn2D z?}Y?J_5_wSedExytIC~C#U}C8E6(-uTl$B5@1vOS(ux=I2u~m9(H=HYD>Jtu12+3t z)jPIYo9YK3HUU%k7r-MAsBwDE_>w37`3n~4zXog%`5k%68)2@)5rZ@)a^=wqtBNHOP8T0! ze!T1;K~JD3%BMi@F-1$MF@(ZQ0&Y1FbQ!j~ObEC%XbwyP2+Ky!zXC+J1k=Z_%}IT>?;-UabztZs9j-Mo zHs5X9Y)f9bB{Lj&Z-FWt*XjPRp^m%!dRF^R6bK=>pw{}Le^L{FkGO7*@L32rn|*OR z3$AXR6u|g^tV-9P_g#*0{}ZFPr4r9atoZPp0nCUls)Y)vN!H8Xn)RPdV$h_Q=%`TH zKj>X&X6AwY78=^aVhlC~80t*xW!H1m)*iOZl>=Xp!q|2Z4^4`Z!Nl9k-rE8V%t?@Q z$Orxp^6%U!JLTUu#T5+#{^~IEYd{Zx*_{XHaTnk3*6pdHlaGfa_6|!gg%R&T1KojB ztTvsR34$zIH%a?3!hoYneIgB2!d+x!UnLJQANx0T=v4MSFAj+|&3Nrk+*hTZrFw;; z#D?}3siH*EU261@l<_&Pt8D=98Q1fLC-?2%mgB{HUCy2?WJ(47#MBzB{uOOj+gYXO zHht|xQC%M!Y-Gp9canywVRHGFrT{CcaFmv${j);a5C;RN;A6Vz9yFTDo}B^#T0_Iw zA8cuT=hn`9?Xao5rmByQ&5u;C2|K2;99ieM9XDQpYngQUjZS8^Bw@Ux6!9vnGAn2}1)EB}v87Lx1Sk7#fI@r6LTcuq zNaB`fl7GS|H>0FhzMo)*0+4R1DSQj<(p@b7&|im?Eht8D<6G+eWp z8t=}bSfdlBFNQ8evH3c-qS*VPW7HfpskT$*3c#ttmy>Dh5bl217}X(|0?Ad$&JO(n zzlr$D*>2hmU7pv%zf3o>;p{H*JBE>|Rjk_jMJJ6jndS zYBF$)YTU4h<5Z49G7~pjtqBHue#DX}<|mA`FJ2n!*6lLpi!F4S34J_VZP>dH&IEQE zA7dXClp>%#od@*xZ>JwwY1_#3&z%6fB3&GaRDCk7Q6*Ec%oxSYzS$X;P||7VkkA{b zij3QDA!&KaRav7!nL{cAzlIP73)aBjJSZ#KMA9axk5#ziu}LK%5(_Pw`e60_W*ylBZV}2*mi?E2n|A(uGru>It~~2oj2%y#e^WsK!>zN zX_a=3WP~JkFTn#FXUo3_=cb>YQ2JuakG*k^(>L&?&%jYW?Z`OB7C_f1yDMcZq`*n@ z>fadSve3n9mxR5k_CVtZ?Y6U>Qh#}C%WW2hK&oD&6$XE4kiGES*>h65_;|ALM|CRK z={Z_1@L_~)f^58PC;?QEwlL|@fy%#`^Gz$q@U7a9^%M$kQxqg*CEVnT90fF{obMeN zzb%1b!3))mlx#V`?$Yz{`%a&J**|A76+59b@?~l;m#vHL`jGU%Ten28o(z6PS*X@` z*ZQnu&*R8GJH3U*@lqbJ;$ZrfbH=>qcnwOQsfvx0|5BYD z$Vt@fVOj~$Ll;CEPk{`$K=eveI3wF@#wGVU}3IWzINpoI>0pI1aWvRd*HHl)* zyLFzcn{gpEYD0$fH|&uas|PwCJZlJ(Gpl_ihc16i`(sBxZL zoa5eRz~cWP{*QD^)gWaD)v{!TJiu+Dng(UihJee@*si%0F(Y-<_HS5P)faMwBWv}$ z?0Oo|iGsVI_%cik0r{cpw72Y2m+P@G%lsCfQV0i$`rFHGCqD%1Yg|PeLTX{_3!Kr6^fTbrFj(EAi$H2AG!%jVlZSchk=R z#SfSnN7)LYZCXQ~IS^wD7aDy6Q2fonqg~%#X4wu3#3nBZ!h0&1&=pc23YPs7 z0t!!MDpe9q$(sKAfhf|+t#j#0bG~_bhK%($^Z!Qt>IBoB+h76z9iQ z+~aLs2y<|-J43FISee&XxTDx1o&=r)?fJBh9nPK;c|rAK>0-`m8L$M{S z_S*uSLs^zh&;(b-;%{BLMnzdPD{#WAQ_cLwW-y0=CZ%t40r%Pn+$l}=1oabj=^~=A z4I7E7_BmO|z-M4sWQA!!JG(k!=^;>nqj`q5`wBzS&+U1nnn%K(U8TWXC}FhQ1R24y)28O=7Tt$mXLK5ae8;JWefX03y|V-6oeMhPdI;P8leT!w2Y z+F68@T{jxvxGGbkVKBf}4euPxlFiE!(x+~E%M&B`iP6KE-e7}7#86GZ5mFptLGusg zUBZgpIWS-WHs})H{Q)w-6X+qD1_R9(AqJ5Na?nL&cUCOa1xZa3pOW2=1gVyjBG&0Z2OtveF=EFD7Z)n;307C)ui6?M>|J)O@=Yk7)E7O2Q^x z{7gg!Z)k4rJ3!+rII3oJ{vlpHSe*|V21Ex>DYvEm4UrT1k*ZQeeXl9q%*{_DNXf5I ztWb^>CH3)~A!wp&;Fc8K@OKzx3-N@&e-y<(cPY7TyF&UNlhgeBz<#*R8j9F;U3Lej zlGMnTL|}qAY_<~2vb>#n_6LA9cWIo5`Y0dR%_e6Pv^iJgILyh82N-pV03p9e@90c8 z*3Yw?O6`Gu`>u9#`PM(B3qLF|Ap-8U3?-LNbR6~4fl9D(?d!(h36${LpP5P>2B%RZ z-5?Y{E+{;N72vYD7~t}OPCqw%Yuh_8@Bth+{Yt)X)l>$a%!a{_oPWGx`lHZrUFr>a zHHETze^Z?Hu8K!`!Q2zLFoaNY6zfE9H6GtD;5Y{AG!IKmZz$!WmQJ`6D$}-}A8=o$ zp<`3BY4zY9>@?wi^hxjO#%Oif5YIjM2J?EeY{v>{!7R2(HoRGE$Y8LkIhCB09VmSQ z>caRz3_^P+%r>T8&ug6Ck^FfJ+YB}c4kz8nk|kE%@OS!NRR@?0uAA4R)iO?L8ie;~ z4uQx{&Bm8_A6FB*WO2${s7gnQ^f_$Fq%wqB?Wi<8gz&QfJm|fr(C@R>Fe#TIX3HQi z0~18S<)ADDhR>*(i?B8&?cvr8k#n$=^WM;U8fni97PT9zu1HX(yyPdmhw*w%D`#&{ z)A_@=(R={m{nF$pL+OyjAmtKaM}rVUJzv)GG{FLG0KRCWJ=!y8n+$`8ZwuPj7}x~S z?7jBdCgWjZ`vq3&4PC>wts%I%+Jo3$i+rG5$Rpw@i`h*o=Wz8>=S&+FLpyU{aN^4Lv_ z#+AHTmB%aay9Q~L3TZdvJWCcBh_E2ce^4d-C=1ck+8=ByV_jX$tkM2bMJpDiC;Bu- z(Dd^f*B9^HT!X$!Dqr(%j0&CJdD77P_$cbbs>3{W;SA$idBk|ujBfhl-C)#-HVV-G z{KrDEeseaXNV>oy(C~)I?13>Gx_}aF_F;}hs?Qts}i?JM}p%a3Cm;WJ*cnbt- z-H}qnj|$6dx{eI44ZN}k!m&3-v41MraWK(v5qyW`TtKLV<9nubB`Fc$KQZ62LyV=j`0SJz#T*gF(3~(ZCr^Zc07jp z(q=q-wbkE}iN`eCYO*EL%S86{>aOF|b(*jse?lnZx7iMg#;c_rNR3F~P?W;2KMYL79(5WGbK)2JPm1#RKz}Gyus@tVN^y$R_}Re+ZzGuJ7dSZ z`FffIT0a*&=0U0l-cVZz{yy8yyP*_Q?Y5r1Gs`(ypW}1R@2eta-sChit(m}S4l%g9 zyre6-*|^rPeS+03#%~-R?VXX}E;ONKA@@oNA78 z&$^(k_)%Hw0K!y>esa;>RX^y@_O5!gbiPz6=h4rPg)N4hQbC7@lH4D+rw0Y4fMF}> zm9moAJixibz{9Ia%hkUlSBlltxPu&=Zcvs+2RYh3gXPgb3R#X)#g7{o*wmAK=pRS_ z9eXlFP^%dp{sXGH+E_|PUhIFy=*7@Ko<+62Sgf^JPbe&ZLPOHF?jU-K{jnZ!5~$5L zfvD(@wK88Wya}%x>+z1NZN#a4-bT_4`IOCp_XTGc*V>^SMP<-qQrx_8!em*^p?;ii zqA12P(L>DmPH|gm~ z$rN7HfDsH6Y@4>n#utl&({5{-TVzT7@1sxBYQ3Q@R&z=SPJf8scL-hmuPT8a|XIqHN|;SUjz#A1Vwo;-SnJ6cju6%hx}wL^O_3-g(dgb!7R7cT8v zyjMrF{mP8H0~LBO@j}zP@6G1cH&9`YCK*>XwGm}7F?ldt<~Ol}&BpuOA?jLV8_k>p zP=5kOC!IrjV2d7Jn8u*VETDJ)y|Hm{jb`~xET={j(ynD>lNn$&&;Q@^02C+gxoPWi z(;x6N`URM8XVd#Yb$2$B(Xtj&G(BLNQ8N}9T$e0BW*EQJomQa5G+o+@>xisLo*uZA z(d81MLoc#T6SyG`*;V|NCqPyJ6@Iu=9o*%wfE5h7QynoAkGPLF1bV$aqNcq(8b!T4 z6jvlS>99R`qSRMdywl{Z9c%jxbof{!@2`k+Cfb6{Iw9H+45#2TJFuM0p;jle^>M3x z6PR-94zh*ns>P1mgGaD96He$soE!Sd99*{aQm3o$jZn0cRNw>bDKu3?)2DH3t&lZp zyhC3r)S@#x_5isD>~}cc7%-(|ZSpR*BX!qjzgC{muM(gAP$L+ZnaYSvVqO_kH!6ev zn9>tPez&s}MeNGgHI>y=L2J za6^M@a7256OC=6q?*?4{;U7P%y(gBlX2)oWrUviIVqN>O@8l;XN3!dIpyi>Hj;9{;G=wDL^4GZn zz4Krb)LIQoqARO@SkIB9kT`|-?FkF&g8e0+Rv(S6y?>*2Fw(roum0Y#Ft+^?MVc)CxyPtzr)4Kv%5cR>~%6f!dQ=;L- z2l^kWvHup_L#Cl~*ad)0<4q&Lf(Mx2n*Bz9UK?+AW_4?^H}O8ZOS+RN7z^fWa-Z`l z_>mtZMICG4YpH2*;B`Tghx=q5f~td;h2+4sw}Y3b7Z81l6B(8H0zZ_Ih>c`S(UyVNJ zh8-3k`|f)Q`>d`QeuEbG4a)oLUQ|fb?V%ZL)HH=C8hC~%x;;a4_{NGUB3~GM)9D-0 zY{~h1Aj>5A`DVWdL6f536YR$g--&vobiwUM%OISlU+u8w8_sf!7Cij?yRBQdR*FX4 z9&X`zNJ&dT!;S7S8mEl4ZcD7gvfnPgz|{F=^joSNBi5)LYS#48mSy2+l zU_AJk6^ENLCUU9?W1{Un#$QyEnf;4 z)Ww@krdPbZUJ7lWKbyt^&0Hx2QTr7cppw%$5hSB*)AQ^_hU5}0!*StMQ^&;$h#m72!#3`Wo|BF*>MPe%Z`hXE_^Y z9d=_<=xKMeZ=>{4TADw)HO<@#NK;k}6U;-C!__;t^(E3KKQuCj$A5&XV{6!{U|a)a zKOIiOMPP)`ZxV`;5{B!%rk<9lSfSG;M2&9^ix%w{F3@Q_%?Z>sbuqTcFwV6!biDYK z_M1tgl<9V#@UxOtVDo!uCEdJ9Z=bhi6JCKa~NKX^I{u2;Qer!aymF34=W3ViLQ|US`Mn;TDN6{ z;nQ!`JPM+jOD`2S;fqltc#@&;UZILh&V9$VFwRnLP^)TOR^cJJhIiUbmm6y_Gvh(L zAvPZzIPp5>2PX;mEjapkKaL;z{d&RA3WMm zR5cs>BAjzKDi5svS?-sM;-q<@QH|Y|Hc)wQ`7H@9n{Dq}m%3g?XRc3l*PyTFu^Jvl zYOk9|%Qb3oYPKS}hoX(&hm1bg+41|R*gxID@o88QdC&<|T*nLxZk~#xwlxF}%6~vE z7WefW$`~yOIJ~u?hkz1(`n2gi|LozN9?6A3EyuDo%3Zmi-k8*eHNC!QGJETa5#n%` zAm8Qt=2vFN=|fJom9B=Wr-U?xn#18iheHQ4=#$zw!C^JrvzP7bHx*VMME{F!cJ>QzmzQ^Wg@}5yrAuI_cU*XRB`dP52C{9{E-v7gpYSE{PuzQ%NvAO$^}Y@BNK^! z-@=(eL##(5e)i=;`l|~+u(LQPr-=&+E5^vatoi4y*EH=JKt;|K&0ZNMKO|VV7vJLV$8U8!ot3`xQtw;U-`hcp zIoP_8v6CTE6|q2umQP*Pxl}WIvm1*$=bwh$v=g9m+pWvFzQYSVtpSFAHVRkxy9SE? z@ubPTC-9EbTyMS^V5YsBj>1;_S&twliisWX(MiCbX6|dV6u;5UQ4hz!`uotQ|2@{( z?kh5IeiEVpchGTBI}|kfCHl6#;#u`y;20F$t@ZdNd>RHofzwG+m5Pr1^3hh)5$oRV z%=k21pVi&JRT}KH_R={7tomHo53g4TeUW;oEXU8tQ9-dl^w9HNs-EVgSz)1#80p)M zt@WL$0O$KHR=;vG9tlR?&|q94+Z#}^=n9l&JK=Ec4iD>zS_kFESFR|(;u;sY(iAy_d*69tqW1qkEc;vX9e$~(_9e6ZUW>)sg%3fK}vtPLQ zZsEmqn5pkO$~@QKJmXjUsc4FfZ@T@tRCGI+WH_b|)MmOTDvv2A^qg{f`uc%kVT8h= z0$lUWnRgMs%5B=aPTEb@4pKir6T+TXZ`wz~k43+{vSc#9n7^p=u)+75aAw`7s200X z4@l3D+@{a9k;1>oV;}6$0hp!m?2&l=viv`4&WjFRF`jxo#jT>rI2&V{hCvV8f_6r& zKW;YZ7f`~<%-h)=rhCPYgxDdhs@I8KgpWdMPa-8XwjvIJ-ilSIZv?oBh{3yOzTDYW zKIZ5d%UL;-2>jsbB}#OeZaL=uEBF}&;Zx(|A|^v)e%^zu=nMFNqFhHkcwQ8n^Vvre zG0li&^UQ6bl|TP!b~nbNk7pZ>O+{=3)G^{z0IE_q%5nA0O9$7Qu+(qxzHan!++blj zXm%b`o<46)<^X6}k~+t8J!ItHFMQ`zF4U6>};b zi0#S4MpfVNQ$2BczV$lk;VBwaFy15s2X+7W+Bl3+X%`WS~2-Pb1FMC--y{AnNd;!ec zq;biuRhs|SS&%7O3<^X1`n-^h_yJON>DAL_?RhZn2g0_C$S z&VB8#L4U&@9_}07@Yj*u$@L9(y@gNHC{#1`k=EGK9`fDnXT^3az(gTyyIvTNnQb0~ zdG5?pgvH4#(A&vX6R^09;Eq>+IL*^`n2+@8Kd?$C@C(;p15NQJ{YQX-?9#oK9-+nU z!@Qrv45?RWDbJU_fa!*dv!75jfW&yM5wcyp6>!V8Y|d`i3g2EuTyx$Dl)%z`_GOZ{ z)|+_f;`z>jG4!fU&W9b&A@{7>velXr%dLs3b)j;C*nqtC%Wrt$Sa3a7TA@w!Nt9R) zmwq>84&CMV*+qUIT$M4xpJrfB#qy2q?tQiEbLdq~%(KtT!-NpsTJ``ECM){$f3J{X zbP=~|&z@6m1@r^TnT&Oj@bQn~o;HpA)E-<|5A#Ew0@NHd-mcI>*ovqB;K}Q zzwkxX%jA$x=v0`)5*x4$htJN-R|8j#O*`GfNU{ ztg>Qt+boAS+zj5!4Q}2Jih7UZ3 z4;(@*XLV*g5X|YsUfV&s{m>L*%|FYWXNbLi4nLJTnp@ZO`WxWnb!w{@ZI23 z5t-E&$}64VWG4Z1P#?)kyRYFic<!P2AOZG}L>nuX4YEAue|fK3HP((AQ)NGDx7LD!dj`xl?& z+1`{2^qlZw#PZb_@u^N+y~V%2|2!9(oC)p)aASInyqY{7`v6t0*K4JOO!f7 zV;=k@&=G|wSL{1**ID4>CC0y8@2dr2>yw@zw$n!U7|b^o(`S%rrf>_V48Z zG{e6Wq*$M?mD?FPXl}x)c2^pHMqJBbM>=NaI~vY{7gq`97W*27RN>f#%SY^F#VJS6& z-w)T6guSu5`GofY>Tb@|r)7LfL*vg8yM#leYiN1bDXQYQ!B^^i9Y}|AT{C_k$F%%O zr>@ppj!^TO!;NL_C2NfihLT#2J=oOztM-_rczH%y+JSeRMQIIkr~dO%3LXhe6P(S% zT8zS40yoo=fFQOM)`5`zwJK~c=3Qe_HZ*@&JaYhGw{hbUx5^+o%*7- z9u4%Rhu}*8*EDN$0qr$uFh!`xCs<;#o~%7wZ&3#b*B^4f@}4UW7-XqEu8&ue{uKbX zU{Q0W>XT1-G0a{8BZPPc}BLcW+BVRb(ZQ^ zJK~WQ{EFp3`fyUUSrzjbE;>0>KcC^XugMqn-{#TNFxw^aTz%ZWCB{1ojqu5HT)N{w zFR=NtB~WVjqQ_YvPP41{QiWM*lVoRQkDtz^PCvOQ@%q!ygjoEn6k1E_~Ply6O#BXtVKMeTfw}jTA2)ehtjdVY#u?*c` zuZJCRJYFF>uCGfj_4YOjn*9rn?%jsAmHK49t}i($QSqL9cVQ`N3iss-MmS1pl$RIY z4DzrzZP{k)UJvGl(KjOeA7|Z8i3zKqcW!9lIJWpy!(SsKw3lQ0g6+l{)EJzd1?u%W z<^JRSe1I(}ojr@o&|WgUM0IyftD1DRbU*V}DwNKd^e*uf3axm(0qQ@!)rfU!YPqpy z%DA)Y@(cAUz%=Kla@7VKpOe_+l5Y9bz=|6D!yP-d&_@YYZl$Y zGO2A{PnLikw#oE(Ep^J+VoXD1A@y?Kw2zXE2L%1pjt}bRxStIvE1?#-aA%___e=me1ZoQ<1fl8-Zzn z72Nb*>7HfuQQYm6t{d*ugkpmL>@q5BG!grx9f9=jwNzh5%1}W{iep>d;pT+YpD4xa z64qhn=3bV4_T8`JP6wGBR=T~7m)m@Gzyr9*E04*tMkC%fdQ5d0+s}HP^y3L%$Tc3o zYI|t#(_Qz8#BBz2$mS?gAXrpmE(i$wsc6yvy-NL`sNWy^Lk+#M1o%T@OItVkKY>)W zYpl|%<+skV7Q};A_?lmbGMtKZql?cT>$&RZ-gZyM#Vl$3RY#HDk^oCVf_OH&^Df-9 zM2?3!(0=!kSqaBCF(xM)G~uzrC!pfafX>o&tGp-IjvaNIJsq?mv3;~kh&V1s1|C73dFi7XW?XAZ z7XDX4V0lpbAdH5tkS~8o*Jzu({Fl5Spy`4m{d#q=$K^$ylo>i2YsfqfRd${whS#Ny{`mPPlA+CtKp0qZLN` z)xH_*O4b`Q-Heq4|CLBn&d7$tkdFJtG-1x+^`5a5?ui>%7AE*W%^rC9z&+4CM?G)m zX^>D1G)2?kQy{T!1OHdsPk#TdTUgOcO|=pKD?JbKO@?=@VMx^D82U%$&hDRvs(we3 zk^LK2_*I@g@}dMja9}dtD$GaBf#9NLQ&E4nR!lyY+etf52o;7ce}~`5j(t)`y@y># z)&GD&+1pKmWo&47*^nOzycs)|a_bzZn64|W(eDP>fgQ1n$ zYg*`u#9d1zEKBr+t%Sl5$v1ReILg9r2Otm;>3*l3T+Y^;eHYS zkmKu{@D_R%OQXcv_Np7!=NlT_VfWe0?K%5}-c%@KeEaz~cfb3%TZ)rR;5BNS)VjbE zUbE+i>0TFBc0&Q8)8DV8Tjux-@AT4>Y9_}t*y1+HMe3SbIru6sdD@zk94|0lzGJ6wp>u47AxaSLPw$b zl9>CI@mF)!HgaRzZp^q2#WzAXm+1AbFD8tS!4!We|Judu>9?4&o4>WQIz~*SPc_OQ z2I@aPRw}Ut0)8zl^}@b?#ED0(H)0z?|3WEk$m>$X#gl_RFY9=_(0{}~XoT>pIHecL zdc|pFl8Kq}-MbN^?I+)~nIE2haoskjK?DD(U+bpfz>kQJ@ig!YqXLckMPY<~$Tzx; z%oJ4KqWp5F-XI`f-f&}gy|YvIVTk*Gu}2vc71gJg4yK@9!s~*&co`VkPvz3jp$|J> z-ChdJdLR{DoVQbA*ADKc=VoeBVv?RMd9U?oCX}BE2%dWJ7gO658l@{_F8RSo^1~Vb z^k3>grKGurPj1{|k-1?L-G3L%@$)n)dSMuEP`OYO6YSR04*fW-ZXwIHWGc7@$d?EH z2Fkt$0N|t@qWaQm+3(okuewM1M ziOBGq)={-#-p-#{+MXawJZX4sUB(G|*l=0-bs--+FJ^PlYs-KB3-4jSa|Frho$f;= z*ZI`K+^N?m2^uRqt>Fc?_5z-+BD-9d-{`VG1L?d4&~Ty-wZAzmIOlawaaPs1639T> z{uIn{Fethf+fdnSy{-zHc6Q_7J|z=>mG=5hL|>F%u;%9r2+O|Xjv{89W}lOlWp>^BGKV*7fPV^)UC zeFLi|;v2hkSMVlBdiKe&jepk;$NI@CUFr9|$lD62KcimgkUQtz<$!&ItiSIgFry}4 z@Vx=S8|JfkZO}&b%fjZ~8_@}DhH8NZ0C#h2Y3rGA;BJG|`G(PWOGnfy4fTiYtC-|@ zss`I+7jeA4S=lWoTu2dpDCnJ|vK=vSt9@+{OWEkWtU}*%2!(}<7u5}m*A45q+a5ob zsK1YlR)z;~%@}v~8%>T!U6`+zb2_0;4LzSVw?>uj5~zzW2Klt?FtvZ}5>^09Bg2*E zGs4B;GoL)|&HQ*msrTIkpJ$ycT)f$ljZ53QT?97K)cB~dSaB1`>)A1wm#_75sj0gV z-+um&2*eDhSYIP%H!WUIzGvSoeMySyl zLwuuHM%eqZ>st%~id2(CXG=w4b^Nq-n#q!G<&y3n_tepjMml?vc9>oU_|Z1)nEht9 z1ADhx&ML-DotckEo=m^i(fS0E7lzq^UAY}%1u-JY;IwRqBPWxdck<%y2`nqlJV=-L zm&DtWvrXTNfL88uvsfcjt3jhL_D*a3iej}mb6f-)P6VZI;@6$MZkWh0mUWOMbXXRS z^E39(6EO*sEsh{-@@W*XG{@_wM!MuOhu=GDX>8EcSlR2JlC{`(Ll1YjEWABhJ4D^5 zjSMwi5>VZ-dytaf2jh?$ZT+^w=$HH2(EE*&d%VFI-@yHB|0(7&v&8*J;dwELU_KL{ zz#MbJU$_^EhiTn96Uz+@_!H_l7oSvY)hvg4V|ApK(kh6tS-cQ^q9y%C>$`4QP@{3$@Kk z#xVilXVnhNS+>;GgwAa<^sn8`wZ#Ruu_)}0@a}J5zVmk(G#s4^$s!m1Q?otshp~aAp&~*(ZOobsqzbQ2TF2CPH3NozF|W z-1+s-x%hE@wky~|jQ_{|OH|t#vES-n7E0>qLIX=Vz{s~Be4TPx>U&-`X=#yH$Nzc$ z$Z$#Il z-cUlJ++UqsTU6HQ?$@7hvA)?a1F^QUKbG3)<8#zmOwamc#QP}?VCYI={afz_!I%)Zjl+bqDFLR`0s2w8p0uY2){V#9)59c zx)wp-f;h21DnWOP0$}Z2=ro$IbBWu7B31)^g%v0yJESW=2;~@oP$7RFB)s-j>+ofB zz+SoKlKb`~R!EfC&{J2s*O%?}4mTUL=X!GSci1~_h+%nlpm!`4bzF#E)zAQdz-zg` z)uFzwOX4u9q{U908CvHE5m(r+z*x$ZKeol)=fI1;&REvJyoW z4Om(zcSXv_pXmL=*`ivKfRarL)BD9m=B{G1$>i_=&WMz}++Unv?%e97;AV`~%h%9Z zT50a%W7l821BrQwIF%*uMz*IQ)fT)a-`1N+972@gaBu7{erg&gMJqc7KB-7A7uw?p zJ$m6a!O699!o4NJP)fG;B8+nv=%$uOrjOSjxBpcE2(QaKT|AQmNci#)hdsRUVFl?D zAAIvT@51cG9;qmxO3UVKH)gWxEel-Whk}QwU6+>5UGkA%InguZdgb;}`}2339R&hq zVIngin*@GphaKN5VV;GWS2*uG#0P7AF&;5`VLVK`*TzS%7w)vdoZLi~zz(xB3Mkzr zE2?#%zKw5%Ty9JNFs1{4vsGBb(vJ+qvSjB_WR;G?C;71a8?r>*J4YMh{FNCnW%ums zlva-Mc76Kw&zXmFJ)dtmtm0GC*?x3|U+Sv%M0mizgHV9BUN3VkEyI0$2)?+L|B6d} zr)y=TY$EdkVU{}F{dxFVh^!-4zkrIw8}z^+LjiItjan+_B1rPzm;TjT=@%St%54dk z_MvOJ($D&j&yp0*#0|1{SIew)QwXMh7Y+sAl8wllG)$IPz z&!)g#dG=98WZ$v7 zC&^rimZN7mg8qk;B1i0#9=tT-3J}Jnt_MyprnfzZV@7E2=1wR4*^KZ+XvE8COjq9A z8<5rkA!H^JOpHfIns@iG^CY3QMzKwt=H6UYIk4_oARRXD{#lI|b5R{T!o~P1)`gp~ zwtv_q9@OLuNswaHk-GX<4;<;ioU*5P0$En5{T-VQq4M{!6FE^6Bi9__lE?ebQFiug z%t-G)g|da|4V6_)@_Kdj9%E5MPoN}05=&DKK6`ca0cT>Jd2fs&0Mju80@2Q1 zZmAt;KcTCEf}yNr=iT@|5EOh7vwY{-R65tLQjgOiw%lU-87bJ&nY@{(+w^~k zM@PPDF>OC!Qx^&L*7f^#9VT+}0)Exp`fjCDBGAv2s{M-|rX`h29yTi;-5JK$YupW1 zEpm6cbW2x1AP6X(bj>%wj_r`#qa*I|E40N$72LaUu|r}_jrm%swk5hTbQ^7+%r9$8 z)!>k!O70D|?3r^4b7&h4_v*Hx_XKh6|$qILhk)#tb=rUbYTgKb$}=_(2& z28k;)Nt{Tg+vtN$)169}bWkCF9z6#T*Xe1pxV})$&1sz@v3NlKFhdgov6Wm|N?Fnz z-Z7G**=T0*Gd%;DZijicKFn_ZW`;buv6j0$?ayY>@7{9j}6?o?TryW)p-kHrgJ7h63xQQ|AYQT&jTC+>r^r>nuC zY`-S68$Y{`{a1kADcJs6tp?Ky^Pk!b&hgG-&o4D;vKz2DCqZSr>&`gR=o%s9G1?zu zDXksZ*kT$>akoqoT-X?#YT%u3?)AFs=sdbpN_`HVpH6c#^EJp<@btkU-6`w!UG5Tn zxZi*c+~w}d&LR42Dn=UdEqpIOHjPO?I+ZPSq58U&_99;)8<=}%c=%jS% zxgHz*FbnpD}E9Cq=uh|$$UM2A}KD&e&`=RaMY8vJsZ<}oK2Z&VbZ@Sw0_anPQfcnmgNZ=w-(Sr;i{3yEiyt|V z{jdJ}^Q|97(t#_o9q}5fzw;WWZ1mq_G*?-77v4S`iFmeulE5D4Oq`VllWdVDTqCHr zFHN7i!K>*ncU64?1ve%AqGYz2Nr%I7Z&o><^}4N{ZXcf`OWoKuX|+9Om99#-7g{l~ zKz!d(_ZE5p;$sqhrv1H?wXrm8Fhd}~D4XR6m@-pYEszZp`Id@+x;MLX_vSI{wk8)p z&E8#_BP_K3r=By|?Dde_s3ZU7t7fO(ob!4fofydV&0blQr8gAf2;Mj}Ph{faG*(@? z9qqm!r|{bCocx%K@-u_r@ORe#z7FwA0mLSwYsM>MbPe7B&69-Xz9Z{OxNb%4#3b8) zq+TEVKIq<&Debd@jL4#)VCdJXFX`naq}`C!-nnWB`RoLbr1~KO-sdHIrLZGs;=dwg zXL&-#c1w%?6(DskJv?-z?F}aSWt^vu@%_==rn9WOo=?KQQ z)buQtvTP^VDgf}WwpbwC3p()-y6XEb6=2HpQtSZz8hYnfY^xIcxvN*%h34t!~o#$&_Wq|&+9Og5CREo}ALi{~Rkd~erK zI3EX2YO47iA5ULhqtca?IRF7tXeTp?|EXy1s_(WjmfH!H`L7Rfn?IhtShiSh zxe!}WpQL6cAlJJs`)gOSiv2dD#Pz;VgFixC*L0oc7}+x1v8D5vBTSQS0&Q$BtE~4bow{x>y z_oZ6-rnRj^gdij30tzVVbNX*4w^&>^%?yuakK^N;_42$K~9pbn1d$C}?3iF#!N#P!R<~ca3)5Lk6B4 z%ax+dj}ho*_K&~$w3A;+s6N4OyRI!uuWl6Dd-miz&usXY?l63dZ*&nK*0o83Ur3*3 z6z<>-7Rx~$zKB<)3cgS_>zE?cS>l;Ba{4M=NH+fBh2T+i12G{=pi7zY^ArnMIUyr@ zyf8gk_qW1805BMVzwJ&o&WU}nvK7KG&X%?_X`t0AFvbGs>a(Hq&EqqyR{Y-Ys|3E| z^;bWz;f{mlNK?t*a*z^(uSS>81hN=bJ{}}BmC1vTt}=vj&G-jQP|9URuit6_{Vj~} z%Avmg)(=`}c;~dqW*JxR^uFU@&IzJTz3Yct-jRDczp3 z#O2-cDsButTP8VeOkz~A{Kx4Gkgu$t8~dAMI?@~qSS3R=G9qkxNM+M)#@@m2#LjbF zmNwdp%nsshBI7Labr$h5-+}zf#e{Z!h4As)YMI6;Iv&Dc6(Q0)=J)FtS}I?rZ8Qej z`t_&-^M1R-A`({Eqvq64XE&|B%q|!S0x=~K0>4suJcouq`u`)2sbOcJ?X-L&%5_TQU+O;MBe78s);1&N|;bzpz(O zo9}7(tCfN6VD-NH)spV;>fuV6FuK5yjE`y!0BzkqOvnJ)nbAJ9vG(+G8dvMeD5!iN zDJplzIwn%_N$rQdQb80;l@jMiIaQ*b`ci9iBj{zX;9kZbq6B+k$xfpo_dXL3@r7Y2 zni3CpkNG>ey5J77JHH{kKV4NqpYprYh6pC%ui{jzB)dLnnXElN==&7ntnsSW-h=cL zI2S!TUup7+(X?UCA+MaFbyn^goggGZK<4ln3NuE3+dA>cE*~&!8e@R5@A^6+jUk(j zY1d>WIwA$KNT5nSOIoD$wlO}rk>VGypuf73gh`C&{wL~2Ob}Jbm-&ngQW~>SZRAz6 zzb(^I>bxd@5Ge6Zi3P`eR=UjIRAUI-IIIp9H?|*5$&y;PbM|o)mbxLMNP4D;pCVI6tHu%_nbY19XuouQTPOY^A5YihxUZ+|rJA0E6rYvA=4 zn2@wwX$W9fc3{0AwU(7Q?Kw4|X?(WF%4VL%u<~&_{lMT3BO=w4Dt=yWPp{ z{mY4q-;UTTz(OwhLvCAJ?n*WD3U%IYwr7dq=acJ;9%y>rm^$_^KsDd_L@7?ET;T^1 zeOvOyDTIDe5#2Ha+sS68q&JH>k@{AS1$z(d^c^O(uD7p$aa0^jCdL#U8%4*bY#(1O z7*gduX?8qg*1E?K4q@;&MK=IH^0{}CZXyapK(3ZAi>b)Rr^=QE&HSm(Ju0_-%Q83* z>J11is2ZakN+C@OU&z!Q9|+gf^`)uw+E~+gJDZNposYV%2Y?J+;FT`$+|}nWwG#aL zRL#>b)ag@>(XCwX2TKr4&4EpySl6-b6yEB_CT}vtsT+ur^5cq-MkoQ?V9=77d9Y_>M90fd|M_k2S zU{h{a(7GHvcEC*l^LiiBDV4kAm-F3%%+Gp)6pL*F;=w zMenWbSmHeHUr$QBnL;OaxCwz1KRKL)Hi3fI=8QCuk1lR*wxv?1)mJs2x z<~p3{Dv5&v8Z%Ei3fwuWYTIz?^`7*x5+=&Uvo>=pXgs@PpYY%KYqI@7j{^m5sW%cV z9BT-A`zc4CjdbTHhFT1jt8!vHOJ<{;N@vA{)MCNFLXvwF3NISjh zVX0mw(J~X?&?Mdw1f%qMy6aC`KB{xbHRWt=2GsOv8~zw6eRIfjJ=>#JDo9$2o3Xm| zUBP?bT&(s7ET2elL#MAe`Ff@~pp;_$8=_LQ!OkSmW+;;lbZc8hfz50W;=Cf257FP4 zFXWa-SYD~}e-IxQ;Pf$1m}8z~$=+GKAYaKQY$v}p1M2sJLmSg)DP6p8d=KRurbBA6QR$R>dffe9?`;QUp5EragWi{HZ+>PV zyOlzvmd9&OGt+N6ru=m!*LNi^Ur(;?g6d{wh7cIby9;-`c9~pD2&%T3Hd}T30=-W) z)fHjZ9j%hfUi~zRt!?LJy@}T(ihL^p3$cz4zQ46a=P6a5H;<`ywre1_rCx!{#6gqH z3Pp4fC(hoZ81$j4Mxt%MY#n7sjYPhTb6G4qHUBqOIZV1ZXOqOrG*-lIN9+4#!BWtfQq#S!W+|W7A0X)p zdX;*M9Mk?Tcg~)SAPl_TPu&NW8vI^2t5&Y29$h3RC%v4dw8Z|aq zXr6zMQ{==&SSoZL736_t*%WvM6KtFuPj0t1vtK0Pjg8V;TXlP&oTon^l#Ck7PWZP{ zuKh9ik1y3#h3j+bl12G3iOX`IH-{b$@v@T^mKwjD28K?JALy+zr*DAA6* zCL-1arFmPw*i~KMI`vONk-4-{#%<72Oy1ly;OLtJsa8GgAxMPbf))ODYa2V7n49Q*s}PG0UJ z@W)R|k$i2ne}!l1GjKVI1mAHG_9u=KY|{@?vyubmhH(dt?VOtPM?#|Uss;;1V_xA0 z^)Sx`RiO)Lp%c`(;Qx-p0ZYP5v{Hd^_2m!4KEl2!gJ2JzehBdOINn?~DP{bjyX{XP zhIqrhTE>6<6?LV*$;s6_CKJCRAEi|+e_unVqw;M3m@*1B;>hRT=#qujt4ouzW0<@J z5UF=NGXDl+nhBYKZkr{Ki|?OF6RCa6lG^#p`SrNdzQl++2?l?2aAz*RG5&h~LfV_b zRNw)!^K8=b8>a>tRxOE&cu9*`B#SEMJ8Ez zOqD0A9TQuLi~T;&Fq(w@S6*b&oOCbjsn?hX~59SS=MSneVf&H z^GSS1q)d;QUIpWlf4u@XNTE{w#puNz8wFWKu9-~hvd!vr@P3oGqENF5U79Q)!%6GF zI?f8J`|slH2BT!>Y%a{Yv41VWYCv*)*Ob=%jz;0O`)?MTT`gwxlzYRH<`vzw&hxBP zz+zHuPxU2?dnMx~ z_X3ka^iGbb+h*kdFgmUJ0l)%kEGs%{&h~lkLt7glJCyuEEtxpxEyuoa%8dAzfk+Ij z*xw6<`}$_KOk}RC-1!NuT^kYCCH|9}WqnTfg)f66FN|K^K_}C2)Ewe4ck58v>w54Kr2Z3`2)5puv+^_K+b@o$fwH1HM5$i zJYYOzHHMRpNi@~auD(Bg>N1yD6shNPz$AZumb?K+TCEq<@8d_VP9^f{%%>uW2qx1v zat(1)vg1T2){0?zyDQw~hA%26r6uD!i`mDH;M^E_`-gQ`!!}$dl;L-9ux{GsvCq>hJtxJ&caSi$Hr?jNOSH)x5#{ z?2DMt(ZAQN$@Z_s@ui_Yy&cI)uHfezn4gVa0_FQln2Xk=>$Pb=Hr#;y8?$LV*Wkv- zu#zZ(H|x*TbW3es5U7V9?_m??+nRDE;Kn zXVnBrqs2_M&Hmcz3`0K%=})S+_wsrKoNbHECkhrUen$XlO}D^>KD(FO>==kA;(p;J z9(3r^a0*B^HV*$rN)EE|RZn>4g|$yOftt8RH<&f8BAS5oCxTYKI4MLaB;7>!{Cu|F zLnu)Z>7)pxLuQv(aZvVdOc6U~9s=SLN4NLVHRW;<`f1pRWaLtr^*#cKKqS54B!_ zI3G!DhzK$ULRPKop5Ggr>}J7G3fXZ-aHH#fj?pYs`%>Qrigao=5se^_!sTjydku}Rxg zv0yGnVQioY`McsMy+*NW-4?w24IT^RvGW~e&wS50a}#0JFcP3Y>>NrRMU|b11ll%M zJI}}XJ@g2LKUWqn5>;Zc*efjL)Ga{3VMDN@=;Oxo8&a){4&tfpbKZvMQV6)y)Xcxj z9U{I_${t2k=d(f0$=@${n7fas6F zYYQ@|OHVp`KUadFBI@1+NP@PY!mh4^``Aa^`zC>S=I!#MFW`XY8?aCVw|b-0Sy#;y zir1K|C+MX$a9AnVve%f%+J&@`izE9V@D?^*M+J)W4=V+#1}erZJ0#{BUbFp1*5bXf{vHjU$+Uc9>bU*2N*q>61=& z;x_{){nYm7Ie4HU(10_1v4`<(+q}g`V^<5>b-B1ZZ=rNDFt2}rAN0zXj`-Sx)NVV7?dQC&| zqvjMNY5|xBF;am^<+No}i!D@4>B8Zdna<@8FO$HO%{b6m9^_}o`^+>C|0UH<!uP1^Z!C##33^STWXEPcbD`L*lT!t)L;KcI69puBYTg5=W{ z7m!ykf#c3Db93Wjm?+E@SzM0MO@TNIY41PX{*3r1CkU76|5o$Py-BL!ilkbHP&WJ42m z$Gc*uUM#-b@277AuUTa9DX7jr`S#Rx)a~(mg@6_I;BjYz|7pt)ROrM&i$Hg^;k&-kB+6KW`*zE(%+YI83!}57d zvs86&>HK&{sUSndHg9-M${jM46u9CZlzDThPE;$zM$2Il5ha074Rys27#7yEeVpt> z^{B{jIz749`}5>^Oy!^sTK_l7rfPQ^a8iZQap;)rhWEPR#>SQj<)C<2i2k-)z4H$g z$RKzy29Bj?=ftY&DKPc-%|%WO4n-3%Cp7u%PF)J3wi5qsGZEHqNS$9pG`%X8Q_Nw1 z4Bg%OjRxc@O@$Bu;zM*&S)Vc$c?_bz(p)0ktP~cD5%{@T!_7S7Z zzE81DDy``ZTotEScbK8oNJSW71zH!)kRIg45xiR*Bav3d;F+o3?-#F z=P`i;Lk>p6Mj=hm!m5xY30pPyeXFQfp3hhK-cUa_nsxVg)6G`!A5vuE6JNdS(f6Mm zl``0#X>uX!qwD9)Cr#X|OZR~zv+S!%_*Rde)%^#k#|-&07sFUGUESwIbB`5k|8*Zz zDCdP=kRlrQmkDjdVBIMEG zxbip8$dM;S=Ub(>79{grDL=2@{Du@NG+8V+x|TR~cIqNOSMY0z_!5IVn5aWe<>Ox8OM~7e zvb=a+fXj6F3aSJS9)>P}t#%HzR(GZ$u7`&2N_Es_eR(A@?F7_eUVvGRp&cvez66c+ zEVl9%oGdFExFPWXp9l}=Tm#?m@*Tki;Kpf5aUF3(asANoSGEi0X$SDx_LwbY}HT4P6va?#3 zQrIz?6mW>tN0YA5-K~!z14^CJB~_OewO4L9WZwZ5G5+w?lomACi;Kit{E3G0kbl z0)MzUV0`k-rJwfB`-TH=opT8=XUM=DeTLTBPz9!~G?(J_Zl=fr?E!d2wSr+gLE|V;LwQAtEgp>^B>;gDldTHXIb#^;YCY&?SwLWU@nZ2;H6{T0 zJ4r+8&RET47V%74nY(sp;eY}ukW=~l^?d06*)ooOilMNpLM6C@KN}*Dx!%Rg`d+qt zP+{hmuZd&!GvlRD2GOgP`&Ro|-u&Zpleg(VwhgYht4Kmb2uW}nuA>Z!+~)^;oigTs zrn<@?%_cR6el+3+L}XIJJt(F*K3Ha(BN7H5Y(+Br9}fLq?C6v$m}5O!wD3(q;cqzK z6|r@AQrkDphziMWW2xIk#xg|Ix^a4YzJGM)ZeQ-BA4=a-3teYH<^Bet7bHj(iq?zPNnm?zD@|-OB)iMq*MRX7I&?TAtaW;>w>(IBE?( zIvMsIF^dX_AT?B1{onjgCSSU)zBkB}w>)3B!_Kl%r1pt+srQUlEf;TxRNLrvkgA<; zcH~THo@_Za$x9^-65YU^@S)P(+#>?4f>bRcb#8mKyXg`!>uMUyz5pQcgQYR)KGht| zpQYAXSM78~|3nb(v{l53*2ZRaL*dFgD6ytyf-p~lLg!m>oJzwM}& z?9s$!XenB(DV?MkCIeh!anJr3swCo=<6nut-KNZy%X6eFgI%)y6F9VRPNdoX(2BZs zkniVpbbEK_*1C1Sppkr?#^j~+K7eppg^X<^@ud$QuXCGA zaVBqmJHDK3G)-zedBG|W$-RkdW|@z7rvXZaMtxXlem50p#8B;H;$@G8^esmJh=LzE zT0IBbtd2e08G9JXoma**p;}Cd+2r$^x<{c+h8$2TqOEz{h<#YFzjaUSYu(cYE&t}t zv6H{+OgLpXX+Tt^OCw&;>Ib0=dnE$F1jHHt5NmK=!=C!UAAydN@otkF(4H$oWnG=I z(eBEk)DpAtaV~*E?#T+pYh!_S0vGkz*4>zQOpal9*JB!{MI@H_H8GwvLo}Bf-zQm% z`-$Kz$!p62;G3ix%0@~VO8el#QIsymp7DJCxR|FM0HQ=Uo}_fG$agD`g417{-n2El zzd=d!C`G2qCcMe|;uGtBLyIpNsCUbG6Jys$RZqx&275jKrEoFLJeu^ws|>>|>2DV* zUizC*CBDb93J>0wMRJ5VZJlZQD}F10=)RlqOOQtj(WoNhzblDW-_xm%C^Wa={W>FG4MeH=u$=Gc7+E}dD4mH%&x|D|S% zFp`{fLkl6ZTDBd0zEwf`xi=%pJ$YW_7r03V2>*L@^7k~&crzebPpBCd%VQm-PM(LP_+)|C{>t4!f@-sBd9?`+N|IB==OSg*qUpMGl3VrvDjTLO2Sh6Sy z*CH#&{LAQ)^|ID9M$3J9;8H@aqjtz^ckY+1U{U6GIbzPMrVi3>lgy-7H0?6O+$o|D z;C^{qBkUIwhtr^JlDzk+?{UZ+=D_2icCt^4n?m6id*fOLIdp#4s>8YsL(o0pUnRo# zCpVz{xUJn#Cc>N1)8<>A%VS??Xmn15--Fy)wM-YsZ7n;QaXmkGp21FdkHx>>8jaw% z(SBP^)X-g$=83d4@ulz(GpWg!5e9jD1)Tdin_}VlV z^xCaI(Qu$RjAC#!P3?0xr1R@JPLu*s*|qt8Plt(Vhle=MkZdY=Y|XG?4?v zwJ|O~@~3TMVGn;VgSF4vj?Utuy)>5E2yY6h`)QukV;8J+ z{JF{f^5@Np9RB)^;g|%nY86qkd)y>epX?`~M?MKnr` z-7p+Fz>rIMZyV`~E)ZYM7toNVub}r6oYfu_#1s``OkFDhge|Pnjt!jAMeB+B&bZTP$)pP?{BEUwp)SRb-g-p(C z|9p<1E&qJ--#4^B`YHjG$MjU*&F+I+f$mi1-!3Ce5A-oa)HQz(b5<|TKyup8V2;hE ziKxuBuEM3ucAmZfxP{&*un4g461!D}75}n-Z_CVJMXG({H+(9wx4T3XQoKhPM?xsK zzL@8~^D3xy+I;l4gcUN3VZ9OK9H0oJt#P)o`9SHB@E!^u>s)I-@RFY`)ug^>@wRp6 zYra@E*UFm($gICtWNk$}M8+o1nE0^_`);Ip? z{jOA6yjfH!4eLpFJox|BXfes`uDZDg2ZP>4wfYzdq9Z>;!1}ezi1|A(ojR3OR?Bqp zUGRcx3UHRg_S1{_JXmzm%VPmEnKf3Z;J^|qs$9RYcNYYYhOd7gcBAoo8A>#PO@=in zo1KDT5te%#{EurnqdlDKGqaXEgF3e(S6#32_5P79aD+ZaiGM9?XSvxUIOt*tlmE?8 z))}v}6LVYPW#47WUt{xpnuQC!hB@Pk8BU}1I>092V*2|<^2qA%9HW_c*Q0rxFh!pv^9+T#WqTO(f9yE{I$n7DtF5(BGZ? z0WiG~56yj~7|^G9D!Soy3fSB^eE;sJ!J~>{Pz9sS^jt=vs=R>WV1Ia)?#QJT(5=r7 z-k-`HG1*>pV&`@9Q-fSgY1-IDJ%1fvZ5j4N;h`gn8>tR zeQh*%SKyL^kB+$HOX17AFi=!z%gD!ave=W`A@J{c9;7Yy`@O9_z z1BZ_^sF+&MePibV2z z*>SC8%nFfxij!_6)0O6OTt{I}DcAdF<(=x!M ztdY6n6L%DJEOjFLWaae(3jEl;49reax@D`h`kf#3KagxzwgXox7N$3D2YA<9xTe@h zvS8g!ZD}?l&D(wPiPr?zd8|Au(pUi~V$`F(ZAN@z(`-ymWc7WwX$3{SXbI+zdhvL< z!-61m#zArrCja?_@-buzL*TCEUrn9GUYZ0K{hlp&X?t!uS5x}&ui<}Jx(`lim2ii$ zelG+|YS9F(PR(IKNa9tx?gC#Qq9GL-L@gnX??RUQM81g#=>Wlq}*!kqcU%W zeaonUHT3==z`9Q~Rwo5_v2yJ>JrBNLCpVB(gn2&d)iwK5AxnGx`(Z#3`kOEARmi0> zGH?B33CH}@*76*?H&=(r1H2>SLDSa|Ky`=>!!ISbt+7zmezkvl5~)2X-u=@3WaD3V zbG+66vRx`mlvd;KP%H>duUdE#rUygKaVVO8XHz3z;!bpW$LH^&##&EUy+sCkMwSF`&gKN|awE}uIqiv_pKaZl=qf-AD5*^RmpnDT9*$>6$B z3uEfINd>Y?Bi$8%eC1Q9#Z`F{)oRISmSyVo@=VzZ3Y^f+u1=DFyo{1+M|U-OX^qx; zlDt$MfXGI zMDx3R7X3CkVmjIkS=@G5AxpIHT&rZq8q=8$nN=wMJMlH()4y%H)Zl&g!80-Dh9H2gU%}DD5(p3 zsd>WRg8R5d_jnPr(qgv9T<`rfGgAI1yKB_4uieRvgqA=c<%1H9qWR3YinQ5a_4<0Y zQnq^D?&UQAUTXhcJAi4S$_Xo4%ySs7lnl-L0lG5jTpep9$P|b&N-_os*QfKS6S243MDTt} z3O9OSqvlM>2(Hsj+t(@TN5!}PPE|3MWBm_&_plORo~gY`$z-M*k@?=l7#p8|J{b$T zUUy^SB+Xo{T?V|(9e%j3Mdd@;!atq%znHI2+~;dBO3(FvZ&8DVIebI_DFj1F@D%`W zR%L{ZIh}htD0mzsXt9sV3%FcF$eTQpIJ&27q~t)G2&mzgR(fR>M6ZsZm z;%LDXNROyyU0S*_Bv%Or;KRJTibjpUCm~PN{IBf((V|;#_N&IQ`C4vZuBycKr6bx{ zJ`^TcR7<6{xqT?0`$v;G+AV?4y6=jAlauv3R>~?hv4?!GskS+#8@iUcyl9ED1 z7PFgE_;D}~P0X1F+tn$=_WPKF$xRn&%r9@nUT0J+zwk$5U&GI@Ie!c$-E3~ve$3c1 zhnHKXO@}WWRAuC3Jh_68#&>gJPfyRSw=SPllbOz zV`W`fgLU=lUv6?^bGYVTb>(UAFUFYy#~++=_mb|K$5H00fO$L2;ZCG+Z92Q{x0QmM z`X}`o4CAfMJK&0)EuI3C0T6}r=U_@>@-%)~39Bpgv81#QS}})C2{%(y!ZI%yzT0*z zWNpE`oo6)T$ugxrmCfRgF^dPjIhpC24$mjlREzS^Drd=4`H2L3=lKOFT(e?oq}X;T zb_!1HJ@vT9EVNKtf2H|}hVuwCIaLUV)d(?$hKZ(_!?m*{k>4pQQL+K@KZv9?xR+P( z@m$Jc$%wYD z^W>Is=Q~YLwY5-e&dy@){--2%X;<8jFV=IJ%v#SUwp-<+8{EEj`)S(!Ez>%H=UVaD z-8CH`Og8N=L{+2NZKC4h{^bk4Rb%gXrb*I&RougGsuA2fkDaGyRKYLQjvPts@VP0F zhNdi~903HyBxt$uf(rorEfk--p`CV&gYKx15Z5CMUtG3)2=eIc)9`uZx-F@F@uvLZ z&4Q7e^X9ULdXQu{hM>uI*$QRuX=^6RkL@t84BoN<`+tJamtDWd+i=X*K3`@EvrI$T z(|UF{@K-eo2^wJ{=?yeqknBu~@s=P016m`uKkMaKoDxPyGzE_pRy(nB7csBFxJ| zXqO76=%TFsh#B(d(lQ8t>rI#&R4&aQbjQ1)e#_oyIv;c0XTOXksh92!ym3qS-AdVj z(5x$K!Siv$5Wr1Oj$mvt4>kp!zoGb-@{!3}Ac!cuj{Yui;*)bht~6gjEn4{2lfPV1 z6J^~_?azmLhYFsk6ACNiQ(%h-J&A^ezJ3Sw2t&O^n|!H}{%%@faW~HEXA%2{-+u1w z7Dc?O92%yrhF5r0t=XU5zxKpK_-Y%?(^Yv&>xGUh{i%{t9?T#GyXiwIuh$&GY=$!h zw{M+}yF}sjQ*CAfDM80&sHU&BIbVnT8<+MZVi_l^?lzum?y*s?^v3cZVX~{Axd-1^ zwv9x|zF^;R1baViR^-W#(O>42rWwKP)7Nj`h!5kzoO<+tLdRK$kY7WaYULoHswSK6n@^!r?-zvJIfulY zf-8E^GvDn+wqwM&bLKZEXCa3>``4Rnm|VF5 zdu5B^q+8IS*fzz6Q$sJu>CHIA1B{nKDrsTBBy#1|u}2#3Y#xClT_1Se_{cz`Gj0J+ zr*y3S32WCzoP3eFJD86Ba|ml&|J$TC?bHAK*Z^Je#YIrWS#UJNtqZNrR`2)OkL!Yu zi>G|VNXSJY;zpRs02_)(TNO z@WF7bcX1ZbQ_#C`1)29>XZ;Nng+wGJ-LLtxJ8-A5E6cre=23Jp=-jY{p;+9bsl_da z7_#NE#|byEA1N=e1wXk21=iEo)(lop;1HPA-K3?{mr;wV!b4(gj>q`xv~5lgFMVzb zUCi3p$hQdIE=@=R{eBX-x*(gfTGR%5u(J1({f9K>GQ$eSsNt*e?=c?u0|J}?p6>I~ z<3;`B#abM}!-UeqRP?FT;0#d?T%+n9=3zvM3%I0IC$|RhhLdF}~vcos(lRi-F zE`R)z{#R^&ROSvwI36hNTQWQsn=n^n45Hc&DWuV{`f%7X5Jqp$wD!dKRz@%4R>zqA zd@_dsO}?vvCA9#@MW9QatX*c824fD*3(9|UkCU$e;!LJKyz_@k2B{ePHGS|N)zC%3 zTubH~n8f_lrH?Tyu_r-BQbKS2f)G@M5!7UCiED$4A#WU0?E=2kn{I&@QI8KBtENtN zz~7%C)&HBZIYL&uI95~lo_2?ECtr1^(*IUjFTHt;{@8cYhSpQ%KZg@@#O51N^2mo< zmrKnK^S{;w#=q{FD;AWRa*EP~1$kjJ<*9cOxQSwl>t_#*kKD(TPpJ$a$5^jaa?5-5 zW{>$y>HNi5YXW>3Gkg6-H}K@5?BWl@+x0Hm^3oCWLl>n^uAe>rmgir zSGxVF*wOI5=-aVD4{_Vw+&Xlhfil%CgefRD7{Fz*(c+i^9t8ZweX={J%+NZ@96t*C zeUGuzq~Y_>Q)3xZ!Pky`UENRpqW(zJ7}?+%Nt)_&lfc+e$I5g;u@uvk{5Qr0-4e2M zhuf=3NzX#QoSWrK8_4+{As{*vmElAPesJnTc8tgxQ=_;R*v&O;*DJ--%SJ{|c%bu_ zIwK|N$9x3Y7W8xEr|*;2?!nSnmJ~xCWWP6Op*nr%!EKuU4`;ZzSo{;)`i1WlfRz za>T$0)fWY9mx9rHz9z7m95=_RX4OGolhs}d5Y%YaUVZ(XTPa{C`t`-eXQE$%q#j}b zQ%DV@{!OD~K&!=&+VRSB%OWX6GK|#u_(L~K6kb{DwGON-MpRQZR9Fvk5Y%r-Id8NPg~bI=)HFJ!_yBV5W=#8k%gy9IA5QubDwATxw&98!ZaTPyUgcmOeB7A78G5$yGRzIch$=3~}=$ zMqsk(QlU2Z6B+GkC<@bjn5Q&&HIAM`p5%NX43-*f=Iq(t5STV(e`S&}1A!~lHHBOD zSFO(3f$N^f)>enGi+WJks0(dxUI&HnWXawdU)EBO;4dcS)FuKwO@69FcK^HgjdKj1 zD{p;&oh9|&k~0GD$|X))Ig_ATBIK0S!shkXJ3>%*X%+?uu)B3@_=Pkd?pm5*=Da57 z&{NT;>7NwWGgpHq#7Cg zYcibP1`Q~G1>jDo*49Ts?mJ$XZG9Dylk)7-Oq;>G)>_o5V@j%0!;EeFw#LYD?1`oN zILDs)cUYgdUFck%K(;9n|1X^n?32#?&rc|CvmkIH1Rq>eD3)%5%dX?Qsx_w^yf{u& zqCInJeC|JJ0oH2uO1t;fTWEX4i+z{&0)2S^>aM5q0i452iZf6)`QHepX4pi<)XS!+ z8_i_(VCc?%Ggfh9SupTuKwG`~8pX7Pu<6@Bj%sO-FzB=T39Gto?^}umIHxP&CBl%> zLjy^XL_6*PV}@>LFhf&MmzRfDR0!-C>36-$uz6oBN|c)oA`d|6W@l3TcMgRVTALo) z*1iMOq^aKJd9`$&%SM|HU#piHdYCfP-_RsFYggxGr^RH@JQE>$EZppDtf*j(-~FSW zb9CH&i6x#Au7V}l0pz!_MchG3lk7j&9YfQK1Ic;{>3G&j@Aig81^(tsQ`299{-&u8 zt)mX=CwJ%H3i#xfvv%m0D4FJnw>xW`*ed`S`#=kKT~5dO>&Pt$`wD*)e<$l9eDV49W<1}MOx)>d-Zb!_ zOZag5B6euITd)ZXy1XdSuqn!h?BSiRrymbiSF#E;GSE9=rii&`>Ga1c4ZiJ(OZvAR z2RhbuKbykeF=LzWFsDXzO1+5nI>3oX@sRm`m)8oZqOE(zcTp9@s%heRZlXJkwZwk; zn(W$R%Ejyho3ORN7jAxhm_#@0UjpcZttPJn<%6BLSEimn6uRdLVX|yaxekuPNgfi2 z!$RZyOYjL|Dq(kD*Gc|zU4B+t$|z1T{%~@U=GL(?aUR+p&xwg%GjH^oNc;)aH%Uo4o@2qRr5!{ z+Kl{6B5Bt{8zP;`eDa-iWKNf2sVT=~Yp;x`O#Lu8r^+NzF%3A?gs`rdU2s2k3)H8& zV$Mqv*h$%S!zht=Ee9%B?46=mg8ggdIVd+K<;@N_$6hU1&kk$}?5+Pls?IbXs{eiC zN%57fQY2fErLxP;NJ1h~A=$D{_I;n3QwiCV?2M#R*~z|)ee9EU>|-CyFt#zqn3=!d z!~fIs@SNA{bDz(3-PilNcvrmt_RyyuZ}e(sII()kWt+(4u=bD)Ee+vy2Jg?**5>RT zYCF20U{ayR&UqzDofbE=pe%bg9FcnBxCy}{t9{i$GVouTy%natZUHAxRu!2PXW5cp z!VK+SM6a`nFAJ`TDn0x`eD1}0&DB@--Sg>)Ft!EddrWV?XX}=`GTkBtu)E81-7*N{j_&G#tNKu${5%|L_xTd8p|Wj0d@);DVaF=%jekwX-IR+m zGuipU*?l28W5X?&jna)!CDg-9uQ@K~l$gL0{V}TeH-gdI1u1dpEwQ8DO8K;xP_f?l z(|Fyf5fGf)g4Gtfk)?l%{<%|5GB$aQdq9{wtFmCVNzV!oV%k0qbu)?GDVuG)>$4jB zOrvZs*gqFJRm-IMMV#d82lYLmQ<^=_djzrt5jk2GjNb9rAWRhFaHk{Va=G|Fqs>@_ zAEAd-jjm&%8t*Q0`*VG8RvkD%t85=Yy-i{;5!jaBWLIX6rA(Z$?f#m!MPnQ4VQ8Jc z|JN!*D4ir0S7bNGFLT5u)ql~%3aW5?>vP~DQMsuu?Z1Y>FrUNsipsYS@1*2GN|fJ& zWXGNwd4~Q#GvfdVb>eI3Ql2v|TmpDdf8nz;X{IibtVO7H*$JN5*8d?f%j2vn;= z2+M?-Lt>X*)uH2ZV>m;e@~6h;gy4M12VT8hf6u`H?^x>J^?g@wskJzDqRAE^y5(U_ zm^WLKEW)JUO~m!dHyJMa?F-}lDx}qJFDa)^SsA{ zpK!0F8=rWINC^0dUjlo@*0&NkH~KJsyw zefwSjVfMN5iLE1jlJKMcJ0GTR2NIlk5m8zY7}L;KCyUnbyTi&fv0{Wmp5R9=uiWiuPW;2MHrI~*9h_6(kmtXEc*C+|W`ZcU8L zkT?0EgyZ^-<9AQDZcY9;gMchF`ZF}X+TR|3!WP$C-cKsu0Fb_#mA$^H(S2|Iooj}5 zeWg=~de+{>Y~*jQ&Or2jZifUP;WYhiKL2ak_tWQn`PJ^$FLxEcE17>pvPp=qNI7#9 zNY3EWDF`v;E9>@*K^=>u->Z5Ft))^P6qYrS@=1$;*|`p zxBMouc}p6>*cAot|Dnt0C0e(9RMt3`f>ugW{#);L@(TPm2psxh1(go+VEQW8lm?!> znLJ)~1mP0g|IHAHv$F$Z$!G1o8`=5jM>;scd3CgD|&)SSEzh#&^>vodK-qS3+2;YYZerI1IpEy&lZM&^K_zt*Sa zePVRLsjUojEo(J83iV5gs6I8(uv$%JCbv5^1}l0$DhOcLl8w|nM;VVfrO z*y)seP;*Kv5?9VxL;FI5!=s_=fgMGSuVFD>>NQMw!9JONbRlh;8O+_m;l}b616;Ig zZE=Weaq?nF=NM0c$4sBEe@9#5E)f8BTH3CZ)^ubwwCGifa1iG=` z=Kx6I%O#~fPr(ecuyWEV^qV$izaP1AIuTl8rN!6XqRvgk)KxR;D~Z2(8eMN?Ebw2o zH@h~oR?>06Uz03h^g85I{trVo_cSK5Safbr+?g*h8Q!D};7> zN@<9d|KNT-zfg8flh<8GPm#>7QhE_^uW5?#|AD*04cx+wzHq|_Go4K~>i0klAY}>P z<|-w+gSv!*F{~K;_Z*SO8SsLkgM`D zGy}ODvjlQ0f8f^>s-7wtmkO2X8=~?|iviw=k}g!s%@=nXZNAL4 z4Aq+}=9_tsdh!bNyS86VgN&YY5-Gk`BtzPIp&ozpV+Y|=Y&@bKv`=0Cfn zRiAEY6@7L}nRb#A?)4GOwzRAjVbP;gwHCljCBSZf}K*1;eci?PVCQ*I=zHeq8W5yH|n_>6j z267{hD{Q;E%{T`8^QAVZhW+3MKzgeMfs-fsZQaU_*f+9cUBn@72NvdbO!F0e=2jb;!-vNvak8MT%QzYSg{fNB+h`7ykgg zC(RG>6=#|<^wU~m*_SNczeX*E0VRcHF$ar(%>*I{Lw`@ISxRj_y+hyo4$=Y-q;AZY zk=@xuCJr&r-7h8=G-a1IyK@>}_djEzo8G;61bQIz<73{~#Kgr_g-!uU+Pr(8+*6ZF z;vyS3M%4f>xn0xQ+@ne&?1UuSCRPFzslC1DYtq?b5g68cxFwzo{x`ev83LcKRC(@- z>CY7A4>X{4hHMXnJd3@NaT%I)Q;A#8`zT*w=FQk*(>tLj;i^fUqZ4E+{FC#|Dc{%T zFG`(+Pm^5#^S#(f$4FonV#2{CCcn7-bhW`e2(qfgKqy0`A`)Zfa|n9=8RzDcn%IryUY8{#|Na7%%F za3O*|{MqQ$`iH({gT`PbWI z&QB2qhLd@27{a~##*^Vm{v#<;$HpsngrhHp09kXzgVWm-DFL55ra@~7P0PnugxBZt zou9$W?^gLSX`j_0`Ow z;-4Y6{`Eh3Koh`U>Y4WYnbS(xUFx;PX*_R5RkTJektiMtTVN*5p6_q1_b6YQC(ehv zmpQIvdCxzN=Xj)P=ge4n2t*#&+c~m8U}M87%O0Op=0a*4xPl68jHQqK6@D~k|F$aE zza&><5!`;@ttKgK088t*W&4!^UGVOFEd$ex3w^Mjr<-F7)ikjnA3Mv<2^_f;*OL`o z17*c3Vl|(4q)_p69ZM(F%?2UHp{x9^xLGljK#aStkfjU<~+U#so%sOP(`bU&wt!le1o0E;1 zY;Fst%U2CFxYk+g7m%V9+`aO)pnH>C*PkDUb%&|g70XCnarKvXkYTBLaLJ8SrH_+Q zQTXCs!ce@r7J9-1Op2Qv^3tb+m9O!z(&2qq$1I=mb+6zlwiXRYJ54vv2ax6uFZ26E zqqod&7#~u+H1!GAgVzJX49gUCX&>lH&ki&W@xvhufo=_oe^pdp2^_a{tD7QGf)w(h zLqKhaiE(MU0H!`M@e# z$kf-o6O~tEe7l?{qrY@BDFpwloCkA}Y8zd~85~)TIo~voZ}#=i<)_m&Z8o-s>0rX# z#1-8JuSM2Z%z3Y;i!>#rw6~0KhEJw)S;qXBe*%r9O*(ks~n$OJaR&zAGxkUE0|+hwi&Tn z+*MV@t>6K*rJO@GD{%2h`OFfo;XSa~bsu-^z~-cY;2K!G96hiO1Fhom(OBx08P_3Up-I<~>~;cZZ&7g2Xe1n`8BnqE23vp7$c=iL^s;*DF*sVD6U zHIeqPT@M4x{G%m7CEc_s{VMT7cf+aAt)rxwyq{+U4#!oI#;XPK;zONWpFMVA-tFGE zHlELg=m%yLWQz=e%bksq~DN<_ZARVT|c7G$HI4jNkPG zoaIu{z2S)?WvE@8f`^4=lFEi>3Utp!#D_<-YdL4=!|#>mhdbDE@!PhoQplV6%7K^d z)p@$RogpC~tO9uUKcW&t*y4sfJ_ZilpJlA@uAtRQ&uc;c84}}4TaB7GuGgJU`c^Ab zt$g5-_#1zs-MLcK%qg)+=~Ty&D2HC^HHq3|FpK!e@xnSdyAE& zmdEqGM#z~Q-t83ah0^eFEm(_4)0BS5#%02m7Qi{cX?D@QjD?O?N>pB5f8XhE)8?A4 z;{O*DyiR_ULuFnr>V0L^?j`PIMPUq6T2WgI)nJ%P_|R-|`rdM!;o1I%Jrh5GtO0$0 z_ZUoV>AHdjbuN9yt#=}qYIhGT>x){hhw_UaPq@lpOQ+R8KWS&91ksPIiM6(Mw)KCM zNF2l$7(LBBQqSQBmZov!7Ck{RUs5xi2cPYG3=*1RTAhg8%PZ)tadw=M_YCi~OIwo> z88CS}UngnAx1=BI`j4x}O&b_b9tW^A<^b!3XIno_8Ya<-H8BOD7)KtbW)3LcAXgZO(x80nfE1qZ>P-IP<_c- z*hR7ZxKBBC!EDY%?~Bf8qFk+(L-Rv^!)BPyW~1B#%w6z9Ird$a-+Umm%v2l8^GUc%u znn(Dq9Z@lKIDG0-+N}DldH+BdqSmJ;XS1C$b_Ughah#4d_bMC7B%}tm4ye7ZNswBu z8^3B(R6Pbrwnq`SWO(PH^d=xM7?Yk)U(AOK8(=8O0K2O!KxlD&qnS!&{u@(p+WZf34x&6TfX$5DBxs~|>wrVw6L@4f*! zMzb-@k>=@&+Ty^GLO?`3j%mSU4^=^P`jVs_FaEB}JcUzz5d-raZH#ROlt=1|#Me#-eBVY8(bpP~!^#!lK5aokn z=-<_=N^GBAQC@Zg2`>H%-;MvEy)`IDS}b>yrT#Vr+!yY4Ew$n?u)&a>KUB@xq9L*z zsM?=EuvZzA^_IQZ1cGjE1WIa+g5c>$t>$g>X+Ykk|9B?Z?Q7|cg8--J*JRF7nhMl2 z#x*w9X_u=5mV~U%)N1h0xOlIbze|z6E}pv%>?N=_)5;vrBHFj@*cv~-LYQwpH^}3# z2^6T)zUN5v$HIiJ6G|KMxU^obdo(}2WNpY|r?7>@X zJTM^V`06LC|NX*4oL61^L7-4Pvl@j>bl*D^i!WMI7@=sZHuwb{I;(d$ik2)XNRvgD z4UOQ=OF36+qCwsX`fi>$5uy9OeWOQG#TGfrJ`DdgGT0#vceM4aqr<$<&h>`=d)ZWQ zeKgq?leo~h2r=fnt@+shqeaWcDCBjzqY%KtBm4AL;)<~;TdycoH{AcnTmc3$3@dp+ zAx|m(Ot!VFXfTxuD4GlGOm}tQ?sV@QM|#TcBwy+1_wOgT;z9=kss|lu^ybYcnR{dj z)y^@6yz1bXeWEjVQY@g@ZX#QHEW2|5T09!96p`>tzh70k*Un{UGCeLfFWiVd+|BZzbmdhcxmJni!IX!hh?#)rwn!$hTIG97 z{b)O*8Mr+^Vt^Ks5Odh~6*D!m*or4xn<|~M3*MH_hS^7+7^}BSGiBehwY5?=_hx2m z-~T(D54Y~dwp2V3-TA{lQVXA+32Tru@oT-Cl6=AX-dcr3Y)K+AV^?1O5=uk}C*-kI z`v5qz#$|fq_jml5g8-nH6*3~(g)*x%XOz~~MWd*3E;wmhSqrgpvr062#kAJ;+KDKd zQ)Vkzt|f&!VP0*vLaF(iS#n+9q@KI1ts(-@OC)YK(**oVQ6Cw8ds!OhFr$~Md$k!6 zNDax!?~m`{((`^Bt4|)6E4yedfL^bFg91FYL*Z^;=wCx$09wo*Orsxn+ahb6i{D6D z?DpQb7~>Rizl{a#tgDrMt9xkoJgRv@#^Jx>uHc{OH{UQhBy{mwvO^`RVGHNaNJ z^}T6Z@ee}ZfSVkt2Y-D3W(hR$^hs4@E)E-otiR+AzAW}#IiKuh$}c$hDZ9=S*h_Jl zVF-RmVHRMRQRM4INveQ{G%)&*gfC@zBh|{Qp`+*{KZWQ^GY#Y0dteE)pG*(MdkMUg zb7|EkLk4pn^uQi*$=aYTnp(Lp9~jB$W2;1njC;HWWD3o4N(9-WUVHdE#+1e8s{u8J z^Z!^O0ly(B-rEt6YB&}O6($nLBRMXI9)7gDKY8CYx~8bREdm(35{egu90`P7`%3!6 zsxLh!%2w_{%A1r-d-z0gJ3D1N!m{BzPJ-v_Nc_r$WmT_p8J;Z7y>6yswJ7(wo*DRh zLxuYUfE{{`+^laB#7i}NOhT&kXIK$3s!#d3uA|n$a;&QDS@J^I@8)H74VPxpCrKH5 z{Pdi)AvZm=W7vku2yPr4SQ&7Tf6%1fH**HFVc9)mjxN`^i`NPe9&B9&T|1B&(qZ1u zFVYk3n@PcZlWcZNnwoGeI2Bo7u|)8aUMa z$?ckW5cjNS&GkWzwUbkrX0Z4N)z@{ApT-5&p|?A6NV&iejPaWndOt5~Slk4NmM;u1 z?Y}MBQ4hb$Q&l`gba^ShywyLP#7u)(N!n@<1FIu`^?nUTIcg@D_3$1FVDFU{^y~tD zjvRvO$v|wK@T+Ou+o7KEj26Qnl~5&b9M9vPRdhBsIdfkH2m+WfvPUbL65Z;%XoHd< z`(l1v%4tDy<|)ea;lwM{1n?Q$azK>swTKbd=&;+3b9;myqbfKMlU8;5vid{wgwZC) z9)b(K6XR_H$?e!4n%lR-o3gS@K<<-v#2cYn|9bG(x&+Drq&pHqU-o%pZQ3uf&r`3o zRjiSED2axfYN*OXyI6nJ>#y%RVBtIOys9ev$1P$pvu>QkzpdHaNbo-9V(FP<{~LBz z?jE_^2OiXqlb`o1Z2y|_l=^PrFZ+)9=!Q_$X_D$A%|HU8{1dH-GjH+g9#NvgGPx?%%)MnPSd?ym$p6_sPV6hI$NJ3p`Sani>y2nX=bp(wLea=JbLfj&PJ`0u zyl$4Rlcp#Y*0T|^fdjproQyj$x|%Eacy@ZvOC!Ah?$m2*V}NkQs)EAD*{zzY68Bpz zt7%?_kE=O3$>B={%5uj4rq<2Dy}=&U3&uL+>*`s}pZhMAsCm+%PKWbk%V z%Tv9RAdi;I+XhV^1H@d7W1aT9MN(v+x<@5_+%dqzBf5u`8$Z>Scn4mRdEyy`n7SZ% zXWdhV%_Zac%|Sq*c|1)}y6ZFxRybtWk&!!?{J4dG(A$v`+9pQt4#7HEYc^lBFwrU* z3U&%?SucLLcV)lqpJne*VI{_Bg>-^J6^hu@>vEiq%mG;#S%jzY z8&exd`c!_0u)K#5tiyWiiPBwS)9UOnzP^A5pJlV=;lI2#-)81cuX7Xkg$WOQc!g21 zFW>nM03Y|1uXF@WH~-)}uEPwlUgD9g4Kg({{$=J7Xrx+!b_>Q0rCX^>IHk8N+eVaw zs974w5a#A!^OX4c8LS_1EB%JwV2o{U#5P6qRaFcGt8@Llte8$|)ks>D)s4Hut#O zy5^N#{XaxSOYGL@w>KWCKfqJa*i}#pg6yXmW~r8p6jYwNgYQ>u5>K-Du9AXGBR>6{ zg4+xR!xyKIZi7Zi@hS4oc+;i)M|o98qIb7@K_bqO6kg2tEk|Bt&LrcJ4GVqEs2NBi zUb{$dzL1HK3TmTBxNt62(Yr$23Twvm60$yAh5mbaog0FVDl5 zoVP=MPI>rO8Vcn4%gNhO8fWyZJ^9(Du`sT^&1Xgt;3y;4ozxp;diR!X=;5_9sB=>c z49N8A;dAy3%;`KM=Xx1L(icb0&7Y;S)wYeEyU)O&m40^oTp@#d`k(Q0BS7=|I#H)^ z!?Ph;yf1RbymkUh4ew02F`?jT1Y8D#lT@6n4+;cSn9p=LUn1CazRTzBp#9w&a}5^v zT4!WbcnI?QeqC{ZU%xoMiM=JSK?eAF{YbO*d6-Y2r?|?s5I}vg=UaGnXFUS~gL~|g zx&&}Il}+a^+8WQO$a=9e1N$=AvthKk`D9Z#^@FCNLHDpjpEt1hE&wJ=Y)mv#Sa;DEK{3w>CZ8;(Fq^%{OJ|@9xYq z-{(t~{r6{0i+2^cc{!Gw5?%3=A^qgvoOh0MK*pBKF?(gYGKE6prEs z=H(EM4vLFK_@4o38?P|%Fa;Abuw(XRZmcW*d;~@WAC|kpfhah+S+Ygx-;VxqbYdGQ zHbXdxZ;IgZORQS{%~Y3XW9{#xctlmFq>JrIm>{v1D4gUKyA#+)VmY+k-%GYp7a!?~ zmlc`ENdm9IlzKI8Z~H`zYl3t|l0en@~1h6Hq3&fOXk%R9fcL1F1%UeKg#9{%Ybd(K`t zwNOA*!APv~O6c=8RfhAf13DmXweJkH7s>}y0Na&jPH6a*dgDy=xFePUH{G!IiF|g` zDTZcY9k(3nrokK4~ZK_y*Uja%m5(&EkO#8W(m5(}8~xg3H_OFl0++crs7D2;81 zgkQsYEfH~ZZwJ3_$~3zuWC9RX3^T+97*iESf3K~@1ncWO45wxI{u9&YP37svCZr0 z_TEa^iOnM@@)z}7kLu&5&JMo);7Z7$EGzzFbuyTtkl<+~-)(sflcX(N!@ zouh2_+9ZCts-6i>JF>Uwn;-QInY^Z-{9GY!-*B(Em2aP2oIpE$caY3{R!o(^1c zR1x{tmIUW^7Q^_{ z#q5s|@4`8|c6zlXVaeX@;mFL>&88* zP}x!Yi_7ej_zR!oB4#*VvM~WVM8+N+e(+Q4ssJ7)hm?iF(+s2Ft)IvZC^6~s_PG|? zndZ!UB9**^vO?n;(0JmdXyTN{g_Ok$#UH z1dr|R%gTqkdD_J(GwRdy_bq3kB=@zOlU4hfWq8f`C?Vs6*3~g_F=4NKRf#*j!?)H7 zMr0#`<)0-CR&5&TtqJah_!t3xpLO2O7EQk+-DOp0_h2lGxXp#n=Hozn3_4jU_e8{h zBNvt#Sf4)t_(BOQ7`Pt3`o#~9bc(O}?cTd}LFc-m4a3Yi=}Y&A4u zb#R9%K&|eZk+Xhf7yiW`tp~4N{uWrQPO3GlSBwXy5^p@^JO^pr=$RD(UE3!QCnpI` zu|+8&#K4z*sQr5}9vE;se3hU3F{}o5jlanaP&pfQIqctY)IP_6&eMkz^8s7y?&Y54 zxan#4?s`B^e2O9?8bYUb%v>zF@+j};W7@Keur@-@8$>Z_c>S5 zOA`YeMas*E{oCi)@zyt(7AD74N$S1{jB9*}#emnsJ*_4oe7robN$M z0=s?flInY|F2(A>DpAx1ju}3!9$&1dv7d%wj|&g-ct_~Mx9Mn*tTIo=A`~IAEARPN zQkF3(oW>11jfVtWK(wX9LW1>l-1dhqnToQwOux>X(I>IJJ5eHiwfG1L{h&7zg1(9n z;Cc9Q19{h<75>?u5|4_ei!7@7*Kx?PHtTCHesT9kEvreyH5Mu58f@7iA)il@MoGJp zVR$Eq^CK0b*OH9r)2@qWGz@#fpK@klG^o;+oTIFSOI+*9Bo<&!&G1ZZW@9nikAXKQ zj>?+^GXOjF4x1j53sbxzfv&o?vjaqTpAGsnrR&OZBSk#MG0Mqw-RHBXdhuP@zN^N4 z6K+kJ?Asr+QZWaXEui+Gn2;2tjwG}G{+nM)m&dCpNUV!U2*OwH? z@hT^}$)5b3e>^X;Jxnjxx`BvL2zz;0OUFur4Z1CTRi#yHo)ZOfQ=S%t<`i@0hN*lD z9t!#J65oj*10C^pomV{g<8}a_rl~t%zDw#71omouCTBZiG9r73^9&6aq5o9~#-qbn zd5nGz{f>1%M8SDsm?Bczk_FJIe)UvbL430;8n)${7hba-Pr)qvhQDoMM!NMM`iu`p z^I>=H)dcnh3Rth`N=6m&-85Dry((wru}mMuV5OkdWXLI z?uE1ItxJ`WZL$>=GEI7A0(AkDn zLU=F6l(V)c*#Ohq7paReS$i_6vDJieS<&+=_0Iyx7(l0F$^3n-vM!z)k{O&g%K!L9 zZNnGv}!XjNm z=6L4aFa>i{E02C}74sazy(JnKD5}9+20VlcvtB9`ZQ&xvWY%3`ujXnG(nX2V*YZ}V z=92nmz?WL7z5SKoJ6&Qh;h|4?B1pSrm6b|Qw?oAx)Q`abX0lWqg;DKVT>kKkT(w&& z_^(_A!5w?L&fbY1L|%h`rba}^xJ953XPqY7%zXs~XfT<>>5~`;#&Wll(6a$uQ!QQX zF*srhZtv{Gg&GOnPN#_BJic7Z@L-FVRHpw0u>F2YVM|R-@t-K8*U-#M8tuA|G&5Vq zvsLa8*Glw1l>D?dXstI&^XdV28Xy=zGlKVElPln}7FtaWCi@9<-uG29-|wfcfXSQC z>oHV5$aTG?!O?_F4UzcOy=%6;>R(Ozr@kpMZ70$vxrHhwz+996MWVliktVGgwpDWg zEf6;3g~3nPv=IUPwHciKqfoMb_U+_~niYI|u>wW0u6l!77>XI$GaV`$%rledH{U+x zVnauH1siwb3;s)jg_XUpiZ_Ol_>l4%JVht0(kFMZ|5)N7OHhc5kwQt#O?lrpFm zQK%@UUxw1y%>OmWUu3#SH{Ll5DgrX1OQmw&ojsi##uNQ&YxVc3Wi(&Ddrq2{C0*1~ zkk~yT)OIp)P}8x_pIWMcwc5{y*3YD5$PcuSRk$D&RioT$25e02siA+&;vF4*8cZM$4YYjh_D%1WW)O{j=Z^RyEt7JBpb04kWF4QD=Z*8(p zL9G;nU=(LV4FoHA1&(>THsXOMBg!QJQ*yTiyH{$>z}-{ z^t^<T0c=``mgamXRUSL^7) z0hQ8aULmP<0g%?QeJ*eE2z=0wG##dB`9OrJjVpY~RMpS<_VLw@Cucw|tfCO`lKid4 z^8zAuXF_Fc-kjV15|(#S=={AnZ6D68>&qhbgG1J)GqDJIm;0+*B*dGvIVMs=hgw;p z<+{gc`1V|6x-5t}sarQt82$U`R`WK-5`*O50#{tf0gy&n{`cv*NZk-OF2niXe+906 zBUn1m>b5Z1iVeh24nbph=X-qb*6?3pvmbHDZ?+#oE$(#HjOH=^K^pVhwBgV7%$^G~ z-Hd)95Vrbgq-B5fjb9lduc&ocd)L}5m#UX(}451Tz=2hZ_6#O zNpgH#e+TykU5#4( zr+#o*$?Rm#WiM2p;tC0VSKD+}#?O44@MT%jr$%u4r=RBMNSWI^RGDmX&06Ijxy@5U zcS1wHu-0VmS!XwP{yM?i%316z?L&5FH-S|WRkeyGeZ-@^lfSPi#B8$IF4<(`7T(qF z1gfXB-3_ma+k-%djw;#fIJbYS^BxO$xO&Z#D_d^+%42=x&qGQsE2nf1I$=MTR#qvK zX3vvJ(l7Gv?E!YvW22-4%ud{`rFLI_9@_iKeOh=h4F@(zd@eZB&Bi}4>q^3SwuR1Z-#JP&RB7!^likjVR%%N*3w?Q> z$J%bp7hEdXqoC1atmf(1RR_4YwlzCOA=#@oY;CITWU*Fx>GgBRC;MwNmw)DCdZ-^CyE^Im zz`vilRv$Fg1n!0K?^;sQG{8{U6VRv`#W}vqV+*_{Zuk9K>^u%|_ogW0XjYDekAg9` zqcc9wME73(IguJ0(K#jQ4`BU)WG$<;qe_pcC{2&zNsnisXqHKpC6Uv|BF2{o%rcHV z(r(s0ezVPhF`#;(OASsg|$!r zM)_-RP53Yui|%gJhe4PA+SRZ$Hib-yZ3RjB5@!5>A|BMgasP|bl$PMw3RZZk{-XNb zhWYjyf7|Y*bjRJZEss@^(sMj2ACG+5`edGTN~+HskUi#Lt^OulYch+O;j_`{*e{Af z@qG6bSr@Z%yg%&TJ5~t~s<^(^s{jdQa|sgy$kvh9;(DFRiR$~IaCmajQtua!`69tk zKXXA~h{>gt(7EoI_F_`i&;fqJ7c0~E+4Ms%?4^BS4a*(fcs zcb>m0*ryo1`>3q!?fHWjjFZEU^$UZ=WD67qzC08X(DEL;8=WQOG@@(Azfn-fed~lF ztEhFeSgOhDh%>Q1&rwe>AYZ`2tKQd%D9*n7Z>4a8^`Af1y?NEd$5rP2jF0AtWvo3A z+Np_9lTIb*?2j&~NHc%o%Zne#`qd#6DH$txDsm3$4R#}bsW)=_?k4B)lPw!+_6~YG zZQd?dHU8yfv911p0w-s}>2ZB}*9m(Nlyt!7k2o9rvDC#byR45TnRFX9xlY^xRKCi{cRipvHYu5YRWL8akL z3Bk;YgRTXuFPnLnptGC`M&C8GyUcKRd%idlJFw+29}Z%$orO7S-0O{y-S|9dmkpb> znszspv#(23=yull?*2a?{XeD@InN!HKGHG}Zo~{8ERs(Js=bN5r(s+69N6bc_c(_S{%T!&32|qrxs6bidENy*UG{sW69?`Z!&`TWFxUWX2h~*yc5` zmNES5QPiSUV8Akq8cX=)@ker;X&aXgi1_c6yM%pP&j|yr z4aj0*x;}TOJfRwNnCV-%*_v5V6+Z5pT)~-gxFM>|JjWL^l7W|W=+1NWzrw2lr{H|M zmYLr)<|c$e!qml`rhH|(YZtjQL?}{w^4ZSgT^e3>qyFil!V_|n_Hf7G8pe25w=6b8 zK1-n0uVF#EG=6%n#QT__0q?Yg9RsR$4N0QY%iluH2B?W^Z|q9d{pRQmI~<%{s{U@Q zWgS7CmE^c^wGn=2rGDthD>#4!#jg+8$|*cJ>Hga6K>3fFGA4p?oind}5L)1RD@9U^ zP0M}9Gg%6g#1$-#PW^RPuTo;i{Wf32Esf-uW*F6~&szjc21a}vc2f0!0-7#LGX2u` zXk}OWdq~HKT&2PKeAvySv2Vd&_nU=%0zdw~W%H@E;+7i+*i*X0Rg|)qviI~*cjZv` z;oeyJ`22*jdrtuu2P2`~G@Iy#jnwQn}RaE;o4e)mfjomiHZLbzz(3&!dy4 z@(O}(kTX=g@46JY2hRYFJ)raC`u7hIc{hg$UUJ?uN_mygT=R0hq@8llV(WK2Z@{Zp z8s2eTXGT60cspp801O@GR|FKsw5%qu&+ocL42g~(6vG$Brpartt`nFiqjieA8>=-J z@#Vm3tXuM)=K0`fQM8B6ai#Y6u2^8=PMUu`84S&NmytLA?mPCc4kKad8d`Z*{rAMn zE=!{^?cmbm3o!96Z+NqemQILx_waKvUM`3|3%RkWw<;aV3z*Xj1-~c%HsT*w0SSdU zaJVKwI8vIyoP>G-O?sAF9HTRm{Fxv;17R-`yM^Sn`dAJstc zxfgdrTPVD|X}g!8ywCmry25lk-)AboOMOEl*edJ(SzY5xAAfn(l5CzTsMQ8ASJNTSQF^ug}NLHIE418=qZ zWYHaa?t1ixX%4P^tT>m@ zU!mXfB9DJKUVnWKflhRLtB^xxokBfbRMHNU`7VA1FcGNCD!o473+ML|T5pnBK)u-q z?^3#0mqo;l9w_ffGD2luo>tc$22~>*Kq(=?9ToX#dZ5w4g*QFe7iv;lf%mI762Bnd zax4?fCco5t*Ak}WpV5j4woM7afHYEg=t1qT7e@t!LBHdm4Kty{3pu7TzS5y=B?iY+ zb*$UKz1TwANQj25ppvIMsylK6dn8$~f|@Bm&HBTgW4U{Sbe741ez<>Du75 z=GE{vw?O69*C`|^Yl0E({bx>%U=#0nRYw34ZhZ3jS70Fq=^2P}1D1Z{9uAJ)6e6c~ zVKX$ZU5_5a`btm6d*BWyrr*5k_FmyYRqG_vA$d8Tez{5BRr{gcGC3O<6$IZh%g~G$ zi1S{hZxcZR1%szojZCc0s3lH?29HxuoDTnd>X*;=&m)jMd54=#X*N*#b+j4B%e$gy8sr=1l_4WYv4}-(()p0o|viI{G|ARrV z7wV2wneJ{^<(glr-I{6)_72u5dtk2HWi=arC4!ayw`&@BOBJi9nD%MHW?A*FPm(l? z-DoU9;l*iPmT!%z;}w*Up(CEm${0O*1mp)B6=)ZTC1aQ(JH`m`=9D2 zI}3d>(d9t*CC?gG0cNF7U<}s|yyQJ>bAfjuus$U)4t8?}k6J7UbDKo~kNs~(LMm)K z?_s67zKW}Yk88)G72g=;oVRc3icc$1Uu}NSP~}`7+(+!jc`IPvVzJQ&#w4Q92Qv9IMMtW+{~jmh;}%hEsDtl_Jx5z+T7;26Wz$m) zE4(mujQG}4>=>ju8AAvh$WVRziaf6zy+Qcl>^$nq%Vi~itkhAHoSfXW^?f@ijCfrc zAm#X^rH3@Jy-KO=49tsIBD3u&zxcy~?m=edts^rbTMF3c6Q`)E-Y})wDBWw1#@b9! zKmG>ySX~sdKlneA&cmC{H*VvwA4JSeomc20}gP@T`mI5GpG)7TcjW zW*Z4y-;K$5voL$LQSca>_or<7K55L$fdh5Bv|M?1-1|lOk9N<4rSy+Wjk`BbXYFPc zc}1mq&AnKm*;&T(tW>ZazUH7>*KlGZOR^lE12f+Muth!HR6w}c{-Zw>Ox>n#Xdc_1 zC(wIeF4ODJVr8r|ytHy=1_kBK+a}gs6dvl~k_?BQa?Hx&xr9*mBDlz?OV_Avk z_Uw-m_aU#LDI%HiBLMJd16<`-tSMm|9F3(Fn zvsN@)AQcGD)hp66-^h<`p>iMj4jcFjrZ@44bx5^;=Jhf_d;Da0EpdVbwQFH_k;Zq*f*+lL4z~p1vFoF9~>eN~|i1 z!gDiw3j829-9s@`8K=U)-*s%0#W z9#r_v^6)9AY!i;g9mmr(kgz1xzyfqDV$99wLEXDFV0v;6At`pISqb#uvH8SmGZkp0 z3c>M)!wJH!-|P!|D=hAm;36ZBLR8-MNC=VZt7!cK!e?Xe!f%~jSCBZtA%EY#tSs^k%36ekF!31Q z{KBS%8mnu$;iV@@FdG1_k`$NjHY#AfPe2p>=0eAfT#;HAkBonYH@p2DsuxT~Z7ZJ}DSI@*;FTkNX;BAWESU8~GPB;XHD zPVKe=1fGp6K4o$$xP0)!cws8_d8DiCBAa)=$KECQ=5@W9<;nqWHdATLq`lTX`NQ_z zr$W-okTK#>7oIj^vu6|Oak;|=y(u`e8E#i7vi)E_Q-f+vQS)=&-*y4P3Z_&H>L~NTU z(fjF{AL0BPN1HZ)j60kODx9~>_#tRH!%z4#>CuTnRuEx0d0$eaf`u?9$@=}Y=BgR! zTnUJ)GS=AIQTAysRmQ`nE)u07xe~v^FE64W$+O?Cg6NE%b|CdzpgafvoYp1}?$9Za z7d7qHxiqLy)i0%%qR^X5=mMHt9N|&js;1sXuASOlAjJ61Elz=bNXVqeTNMZ67|I5A$tC836NJDZsP63C!V=KG>R9`|-< z!J32<8tm6yN<;$bE5}Ixl($<&KcoIS?G3>Cce0>@+Jp$7;7sJ)&kM^|tImLM9|8Xn z;iE85bQy<@_+I;nFXx_BCKC-RU(x&~n2P}LXV=~OZe=fe)hfE<4<+bfBSb2@4h*dh zq%7p)HW`EK4b8qO;Ik1-MJMB52`TN+SMsqJHgG0aQQ90T{vqyD!a-ep_-Ze~J3u2e-GJU(sKmh($6m-by>J&W zs~cUPgAI7;SRLW^tgE1*+}Vw<5OQBNo1}j3-yR~L%xw)Pi7po&UK{8J-6;_tXX_;V zSKi2zBMYA`4Mz8wpHOYM@j?3+#2*NEfm@mdY6Z~F{S}5s!TwJx#TsEk)d_ma&&F(zY;P+)WOE0si+)MePbSy zTvzX|q%bTAWvh9zZ&^;0XsL2}I`8gXyAf+;t7SQ(twHI?gZib-(rCIDm6=I&|AEcE z8@~CjdPnx{4dhO5)gIy!#pC-_5)wv8R-3&uDL=#vnUpIkUlIymsH4Ovs{==GmbM0; zw*UGrA@(lA6D%5)b*rv@v_%cEbu0>=hofeEkzV6fB zP|fzGbXo(2r6x{wOHc4F&OOR4?UU~R`|bh@3+6(+G5S33uqRS`I$vld1e>E+7JAd$ z;g!LQPZLQcmSz*PRzzf?06=|5hflN+x>n$`6dJWzuz@R7(U3RjaC#@rxb&>I-s6IQ zCIPWkhDzb{W-4@7Hf~sO@nw<>Uqxq2YqbTgHl;>&e>VhU#v$=pS-bv}eQ}xH?dWD;~jwU$!8vU5%B zu3XG(FTcZLc5T6&6>{cJ!FczAmI;+Gx7NWE(k? zWX*Rl%3V@kF3VfU-IgQEU6ycHs(gG>_6C+@x!%gvhU46H+e@7YJ#5U*5O}on76pg9 zbG{qT5{0v#{ayf)ci(5%KZo6{V=MRF8x<8`;F@IFGuM&hLHg`dbA@}T5wkrbH&<$i z1wWcX+@3@T)ouc;QCbXr1}4L5tLg2f`n-J!i51!jY)C}U)HACR-$0rMCUboysb?8Q zchY&WH8t46^Emx?D7mxKS-lu>)s*g^KVuuf6IG(>>GnXA`nJpOST50#Yiju-s7# zk$U}EwuQdKS$yICw72YHtWyL{gUO{%^oqLcH5+TcBOF0lWG}Uj~Z}|RT zv)#oaP&v)G9 zYCA|SnxwMO*o2F|I9&GGPPdvrLRX^J zR)N7u?-7TfMBMxlxb6I)n@F6CnyNt>HzO|&&1Nr|_6mQB2U>!yHkrb<{Eb|hvN(l{ z!*}R3GH5nqVw%0FXSd53(>mvyx~qRaHSu@C|86opPRQ$Cq=m^|6ExOzoulaEMHrYr z!NM+^5%v1*N=~W&Azs=Uv~ zCAKTQa)M6{8$dRZpoIq~cQo0XZ1o^IV$~YtoD{)5k-hZGn(QRlvu(Pi$)iifL_AL@ zJ@@kKF|w(NQsfPG#)rOmJLi_71fAS{Nf z=}x(s&3ix}th9?^&e(~K+W{K7!H$^0`nz>g!D?+LBUlmjzM{Do&m{LMiQ_M%fsJpzRE=BejVG= zB4DCVsT)O$PV7WnaiMUrd-Y}GyXuRyr>!FQriSh`E9-F2+0%|76^`>ZK5~IhNDQIz z%#Gu6U$+ep-A0Bw09-_#REfX-0~=<`_pLa9R_!Frk;@_Uex0bxOjq=Y%%rB(Mt&<3 zG^>(nSnpP=$wJ`Y>OXy3V~R~6t4WY?qLmeFRkuj(y%&AjG2Lt89s3lUXNU3Xu=-Qk zeBvRKjVHz3i}pJ%pI%keO_rA31p5)FC94-cZ~o2WY_fE(1GomyKhiV@)i>PJOmluE z?G0OtE-v~11(h}DAq9|5mdD@fDIW~e0kk?2WKlW$5v`lYWSfoIk>Tu`7q>^xWvI8? zZZWL9(00Y}hF5bhxev!1*OrPFDf&uIo#tsqsz(}d%fPkj=OQ_a6kuGnmWEc_f6x9D z;@11i*#QQVYiWz{4&ariI={&)3zLXL^ajl8&-9+%&#%%>LyrSL4<}C1EdiyJc0#}16Y?s>I*I{K|xh|5o zy}WG7@UK0GeB70EK1b$KmI)tLVm`9Xv*P_1EU?+mcrX_HjMitph-I9zi8>v6{7Ab} z+AWG4F0G$MhkW^D%l~ z>h5jUSc4z%jOz>4ecPG0BC@Eaw1Pr#W7uxsE_J%+G}Yc>V#EbbS=k)=i8eDMfFxq3N{277cZ5yPPmeK&?%0k^p6nzFwO1Z6 zCLSNg{fDO@WNqnA=zAyZNQly+BvXH+R8R$Bm>M7O&Lv4tCpTL9n*4*RAWzcI;4$bS z&r7vQUIzS(6u#;{Jx7UE4Y;^l8^*b$o5`D861yYi8T{JgW;X-)Ch2h;j&~m*{8Y~= z&8%!JC}%htarhoIq*h8(Z!a$9A(&~dex|sIll9g@Wa-HI1ROFl_CgNP7<8KT6X(p5LRQow^jESC+4zKt@+nTdIUw$T( zHaK4rj&}X=B^i3ldInmLv3@3N>S+9xw~+^~b1%cpBX5R*r$w9${{rjwMx)ZxBJykY z?66q!j}>!XWR&i@^>#TXpKq1pjzP5#gTV7AU<&IDaNF23jhZ+{pOImJ4o=IDZVJ zyBvejHoj@U6)Mu#E$Rel{~i-NNm5I=jLL{N$jCh&@s&lySNQFtw|o6dCk_v(y;X5 zJJ}uJaEbCft$|YAIKB!X^@{X&N_hJ{?!S}OSEtAQxpUKMC~bO;s#C|y=R;9*(lYrG z-9iv`!*kvdnkMx^L9w$58g@`tELJJDiASJe!|q3DQ&7}d#^`fRQ8Mh{+^(u`)W;MHywf9ltk?9##0QPy`?5_m*?Xs7R42rFX3&j*g|=9xxGua8e^=zV z0300HbB6kO7dZ!(C{>*+k}Z6Z1%g}B*$jcA%sLGagqZVAU>Uc!;3`2CIdm3Z=Iz4=j3#53R7A>!MV}|f7RAK9Q$PVV%=yrH;S=v$jNBnx8|5*Mchf2sO0$sv z^*VUb;BQDD)k$D>alQ(>Nf`Yz$&n6k<$-I`ZhIS_kM0e$nMu$tKv&3fmNiR_D&?3x ziag~%(5o4iBTB^q%m164aZPhtGcW?NJ>{l&9<{wmTKPM~NN9_xDx2=Q0fF{-0WPCW zZ$Wn(wA*V)IQy!GQ%aPKkwz{2ivpx*et+S|VLRck=tH(5IaLbXv?xc)KRXqlxWe~W zTUpqIn#E%`;gyK`&xSLXH6f1`0!UQL>=Blxx6`@zMFor-%9jj3&&c&I049lIVo<55 z@6g^+wtUb@#nGqnbk0FEUS#zypeflz6qWN;hHV%cpCzu{6^FVa>n}@@C9=akoD{i~ zv{C1vx{mHr29}d5lnbf3pU)V@mr(T!dLUIO9(A4hdD$X8`gOKQmuv8}i+;l!aOzk-u%Y0J{;extWjNzOHlLVrPq zfF;s8+(i2TGPMSmdIbj9I+y7aLC2+Zd2jHrsJd-~GgfB>-byLQBFuPAy|~r=fh_aN zQAP7MZv@+V(Cyo(bUCF7MY_uTVtJUDm&~YsWapaaGf>s5y5>=b?K43i)N++*psi*} zh{$b)KJ4lRX0oWpGbf;w9~!ov={$xBz~3}4(O;e`7MuA`#sj!CqBH^h54}C&_*1rX z=H>QeBc5jWy|Btzk*)k?vD?iSvuIOsj^BEBifSSb)p(?e?1I_mJ`HZ&`6kD+av2@k@umBJ&8L(^J(vKivqZ>`9sf(aWwOJZ`&swpIk?YMwkvSM+>|2S&x_CG8BBD?x53+-zJsW4H(l|^{#uM&NrcIZ{qv$TzC;> zo~HemR!7O$HPyU^nxx+=P<^{;w`yy8R#{6q8gLjX>m1D z7>jl^u$Ca5Bg!oP<`TCZAnti1Q9L7)r!(wnLPV|h^vZ}&T1!TFQS+{L1F2_|6ZSa0 zV}`4Gyo``M~AIv=w1M6iC%BAtc6y?P?TD2r=FA8}dwgrV2DcgK~^ z^&blZtBw0?+jd(Yo1#3AqV^q1(@S0a;q_*_s2^5+vZ{%WiH#FS{KEZg8HdaZAYFh{ zJtZ}+5HRMW{=B0jPp+!^C+NDHW|MqUFDuaO{a_bcX|-+17EhS{QvAF@JLQ5?%#2Wx z;QjqQz05Y`=wg!%yM}Z?Oi#j!UK5x2Z%%pVZoasNl#-;wNHYAjl_u2Qv`?hW;CC$S9i+X6KQfz&^0eOX6IC zwYWVkyfRFPcp92mo53(qK-&3Ffm78W#I7GI#!n}D5j;lIYA$v9%YkPOa!Fds`FN)$ zE=F_N)NC=9y$6emd4OmeDsfMA|H}S@JtC)k#C*_ZrX_eReInd)UUmRu}WCm#>N(kbLZ1$lm*vXR$ZE`Ay8t}RZLd$+6_r(o z%YPh#N1>~ohJ7ynrkHM7H1C9*YOT~uo%;40=}KEhI8!GR?CZiqrWhVN+YBT#^%42;{C7zoj#2Tgq){$~$Upko6 zx==Q$8TJj2d9qsuLHPnUUjc)r{D_w%<2TTwok)$@Ydn#VCA(N?Ouq~4r>8T&uO%^{_Qx1>y%nULNeyzH`8@Gr%z*WH6M?WL%HZ9={VO@M2# z9=Hr6-KOzbp?vq5W7qQ3%Segj$uW@A-%N~uoeNmJSzY2SBi!2YVWb?~B-GmVn)ELT zu$+eNU7%RpG|P{`$5!U9bvcL9;}Y|hA91dhJVL$s{G5e9mUzD`*`tL){Z!J1)~Hj! zUai1rz?Mn^`|E1aB;jx7REHh&;aCOn7g={c5Zo6^a?;vaSobN=T0R?;f6*A$d3rEc zNmM$u;5E{mYW|j}rHQz*+{#c@L0#9%TEMH21T3;-R}IO}sx@Rj=w7&@Golp!jB94o zVkr<*dreDQP6e5nCj}uY&x@_yGKZsIj?S-IG0PYt?S8>Q=O#_Se;yg#b>wr8dbW$w zpMraJO$x=b^F){N#Ao*a)$zDRj~_RS`#7Jk8Q&j7DsynU_tdZsnqILvOgEl4}&tTuR`FFypLgj%TVR^)m-r=F7T98s?be9I-!Sjd#%PpHvTIS`A-3PT>45 z9=~>8<_(UTlZsqbK8rE5Uw8N@WZHj-`q=+v_pg5AkwwwQ$y5LRg?H|h$aFXNf_0-+ z=W~#l#syAeJ8i6?ccQ{|lyx8@2RpR24!9{~Z*pH^zgj|=u_>>j(8}^z9`B03vy2`X zG3rv#Wbk7BT&T}q_q>ZY@#Yz-ncnQ81`ETkVAQY5hb%9*MK3j>s%A6KC=8S22)EuE&Sv_*+{J>C z-KGYulvJ&%f&Ua}q{CiyD`U-+2k2K8zbOwma;A z_ClXg5%MWSaiymmo0ZRCz@%w)Ml>32gB%X`4%NI96xFY@;c-LsxmY#ADJf0fpxpQC z@-s0}=wFj%SS{B|gbypSJSoApBg%St&VlHG!NbT!BvoYZ!EVo~546y256sK_(MMYk z%^yb7iu@ELa<_JXMt*CkvW7IA3a64F7seyu(Ke^ zJPKid+Wa^u3>$j(xrc8ITe|f4(O-{VEBQ*`YDP2fyx9@4CZFTR%(W}(i9fh+e7y>! z)Zn;pfUjI(s}bS7VR!`~mqvo}k9WH8-3PehtecD_u?f4GYEAhd(#kYJ2%D`pO?9n& z39t8uCA1K0{Ek{ zABq!w0-;!E<$XtW(D&ChAe(n@u_B^!q=zP673VQh4^pKb*a3oly3a=>8$(>k1vYXs z+w>*zCs2(D;eVnnYIjuRO44A=u&ov+9!sA!g^Z(LDj0^WE9XW;Ksccjb>vViyXhzs7!~wi<@&DQ`mHVOn!a5vXEQixBM`;Jf|m~ zve`}B#9gt2k-Ykv<9y6o`}0T=@N}|G`!w5poBg{)m+d>^LQTLHXi4QeEwd3Ew1vl+DTNrYnOnvD^+r>7lsq&reS*KPAg1*m5$pyb= ztM&>(;a$z+YjlUWU(+KJPpYpmPF?N4kM_yt8V9OZM{KtrCPWaO|5~tLZ}(K)2jRbo zzvM93>wru=Ku~*Q1Y$tjQ{xsJ`d!nvwgeroP>(H$tP4ZN68dRxH}zTyKhVLJ<64l@ zGW_Ttw;IDcy=iz1vL_f1Buz^@(kmJ%o%~(Xtan)-CYu^Es^t|MHuhce0BC=A8_R1t zX3Mkx-q19uOrk=S-5!OCvc2Tj4^e14n>tk-&#KxVMJjW3JZUp=G?Z_jKe%u8Jt;M> zd%}F;R*O14&%|D0iogx28lu3Baz{X-xoeh-$t6P+Aj$YxAU|x$iE9Uu>;!QR;L!|u ztMt>G-XE~xHQ|XUy&2$zNM$`4IKmXmIX&E9J%2e*b2lfq_UWUCzibPx@N&;__eQn8 zPO?@DG`T3|h!&va-plliw7lo}r>O9itJh@QxPU5eH^W0gg@%Fc$1wW-C56p;Qk%6f z2FNY5dOn{rgnUu|9Cw(}$?5<87f?TwbY{J26ghY?FN)4;9(}t+oME9>Ko<_2O2wNb zClNGy#UEg_n!ac?U0RA{4ZA-EJwYb&k=3t6w=Zb=SG^UbT(>SPF#dnrJt$ybE-lhDy z(~UaXMdA0xj|cDt7$O!0Bd|Oc5bn~A07v^A85*2q$x@se0;$u;^7Bue9fq+N|H37%tSum7>C!!)iS{8vm+JLP}&L)S8YA5r>$U zpA%2!8J4y?S=D$w9(skW`@C7ROYc%0^N4v?bEMLwm_I+8Oc#_693;k;N4HDLBq+0Y z6L@RC-yjMeeg}lLjc1tzDUvCKv)uTIzeTZom8HkAc89_v3m@6fPS}&94Kgttt=z^j zY(BKMR=I0+TO0v7qpAy1_eCgd15~Tb^G)K3bYMooL;JA!ZC~1=-@+Lg4O=o)(OWD@ ztN}JAZ<=hUDm6y|aCTi9?ZmjTlzaPq_tI~_E;AuOVoRF{sS+4rsWFsEAVzMg-VScUN4n_`rS7y zTdOS23O|0JK04D?9aj4omwPX`}pGY(=z?TQl%UW;E zr)#_v=g}lnOtW9N&Y}g<*vra?-}3wM2c}~92P;E$Xv7P7S!Z9=WCCtB2e;!=gN_3B zA2!*8&QE}_BLTEQlUT;15^li#!4U^+-e<$4<0x@8^oM;1XRYyp+;`r`-Bdmy<_Pas z4=EZqX@KK)~+ErP+RIG2qP9sIalgGJ>keB;SDK57RL9mnxUbAkN-7 zB`}SD`Wid8{$4h6&ky3m#opixUUYeU7E#$e2m#VcWxfZ!a$HJ?EPPzL2ORP4F&NUuLImc8tvPeYJ?o8DE@A?;SvwVdlFJ z{X`@vS6HqX1cD$3o#yP92Ia+?h;%m-U^Or&4HZ^8*EqT(vcQFU?r{q6rXCaw|Jn^v zc)FE5a7I1*_gs<@>&anAU*sTs@a*&@P4lCvj`*4eQHSye_H&YBeuU-5(AE3wybXBq z3UZ>;*T|B>&QHiyR`shFYL0^xZn#IDal--#%^Xzdj8~WEF0+t{BRu4=ja3B+pnOMh z2Ca)U?_SIr_yS`f{JvB#4JX&39KF@P=*!4<_9*iBvD*sSZ&|))c=hibIpVal2ub@R z{kQ13`I6KnaigGYM6th_-d21&R{7McpY40nd}yZw$`E@`D28=0xn=o{8}9jgxNSNv z9~rTI%XHOSr1YK#MKwhBo0udJgOle;?b`}o7CfAbH56QUs4{OO9YJZb7wOxxTIJ0C zlPT~%x-ZtlNU#Ud@GJc-=NKF5CYr#+ZOZ)!or@hb!ud0jXUhZ^NDN!I?%$r%Y*o0? zFi0W%uJm>=S2((G=})-po4hqD12&-v@{5(omC8Y2x`^>W3lZ9k zE5ObD>J!sQ5{u``cKh@v^?@|zu=z&dmm=bLgIQ0gO!Ak3AFXyq^ny!rDN%`_16XghJ5)D1UrGT0Zd!xEgICdC>zNc_UR0Q`3xG3VGr zBcaUVfMY(zqSq;(-IvqYQ((jOR`1>~o)%OJUpI@7PNBjvamtTg1){Pa>#>;%@nGH* z9`A+XTIITj)9w!WT!9}TTT0SOCaXrQcJvL2wcsw=;yiz=`}Yo7RJ3H36V?~6A;mFM z`8{s1YpC!;r8!52W8HQP|3}%saqS8!M{KLr*7jR1ybJ=5%M1nD7&SPD8>r6wlqaJZ z|FTk6)(Vv9ehx9j0^bmM!NpR4rOHLTE$7NQZQOW$iBfq(77*)@?!~>XpJ%^n( z?YU?pgf>}aAtZ7ST=m*T$-l^P%fYU#5*ciJ{fC?O&tJ|3ZBpotP-5lO76#MYAXT;G zy_vIe%95uQS(jR6x(d6^TNY`*Rb zLVPnN<3US+dindBg0ab^q zZ^`STpHrn&h@{F}A9ON_|7OwQV|!~Y3z28PY~j}DA-Mzg_K*1qY%%7#17Vpm{ZNAr zfiB-2Yfe~Zx7^L{!b(MW+JROk$G9XRkLN-Yl=~fk-ao=OjI#Z4QcBhlm`mV2krZI0 zivjq3#fKweTp}=BQ72(ls95=+3ToYdf+e?6XVt+ z;2h_p2=(H6ZN^5md@8VD{cl-)PSthMC5@plJY#wj)J9~FCp}P6+eOyZ@|MChm|}yC zM|@As%-Cp<#?ZiZWHKv9JiI7#O2aEHWd1p9NRZ&tUezW3n5*yj{2pQG*@^H0d<-{o zJcF!LX{X)rvri;l!?Y3|rIv zR8GY<-VeT6TjtwP^+^heTHlkYka>k3>je3ax`M@bPNO!`Y(mbQbSB!kq`<(^!je`^CG>Qb9 zt@;98UQ|9(XcF&YI{Z?q2>6>UJy!U(B{3Bv;g%yl(D+*4WV~w4sXD%y%Vrjl!HiXU zLv5$i1qHW7q4m}p`?oEbgn?2UagnRQ9>gLjd2sT4a@Mdrq!;!A#J6}Ygiv2jor~6T zxi$Na6o+2k_Evj!YO8{qJCSp4Kj{Y;jysvQNcbkldGLY(Ys&K$-4|#@k{^&{I6~B` zN7k59J$0fB>-ui2(BXDfu}V>%YyG~;QN)u|PCUM+$sf_hV=8|icy2A-%%ybn=nU32 zopZA~SVDYmt-^$vOf8dLy(`pq?$a;79`m{h(osD4a@FfVNRa*vI7WCgQ=0TT@f=uv zFR!A^HD%>K%JilpEzuaUqvoAY{qQ1WLJNimbMItLn^nYX`z5(CNNir@4MH-4{VPj_5onD7v)fJhW$}xstot{K`9-D-hX3EMO zq~4kjl9qCx|JbP5bTfGC!&k>6&FyY7X|*EmV)IV5LYDd;K{3#b@EMlie~)dAxY2%e$|_+<;T)&RXBQ zQDJ9vwjJfxlZ#`u<&!Dg%qW8bc$-_B5Ss{K_RS4_yzh({y7|di98zds=54#ymOgP7*O#$! zP2Y6@?PPbNxvn+>c#sK?*mknY`IgVz20`mpV?ZF6LSBfkrO;l@G(!u{@iySi`vgx~I}5GRjq? zNC7Gm8}VY!l4Xi>BI6BjNnL2gL5-vDhgz}yYjc-_m}V$sAxs=IAs286a*kejTODv= z2dMVHE|ojxMReWm&Y0lerTrix_n1q2$>Pw(_pfD+ITiVoy<{&HWe20g_R~m=sGcp= z)h2CKZP-gHpMsv(KIZ>KwdF=p8n`C2cwN^#!1MZWw&0fIyknqUuuqGJ`)#O*o`YdGj zs8z=iv=-##)ad0i$l(1@8v6%6-#*zN)#v?lSPmhulbZg1zzNhHQXg2df!f6IAdWn^ zog5^_hsx{1w_7(jp|?{W%nfZc)6Q-0@K>b$>2WAHWLH6+7wKI^8=|m>nL{7hP!o%G! z&AumhNxy7`R__(vdux9W0$kWM_z|wyHi*5nH=et^sE81B#_ybbt3`6WMkQ1FdgqE3KyLHwxc}#T)(iDukTs~Ur+Q8Nf>wrWMF|&BZGG81 z;54f{C(;sS@kjp1k&7d-g=UD8c3b9XENt+_0QUK;BgZwl4R$8txT(`3QG*<3{=l{- zTHQYi%qhf`&c!L$O|j1AM6<*w$&(lLaroKh5q%AdL|h+|3NT-z%jiY{U&X9z0E6SB!V|OAcOP`l(in5zCcK&##q@dky16sOcN(0}n69~h8>v#fcwk
    McIwSJRUeTz0;oI!84%h0nbDz^9=*aB0o#wWA# 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%0A{<^5!UCnf(^cyWM%;1$lt0N+5xVe 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
    B8PKG_3?Ck}%OJi*P7^(F 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 R`fp|b{tp!3XKVn71OT-0J*ofz delta 33295 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 diff --git a/pods/pods.go b/pods/pods.go index 4c969a7b9..ead400c9b 100644 --- a/pods/pods.go +++ b/pods/pods.go @@ -14,7 +14,7 @@ import ( "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" "github.com/google/uuid" - "github.com/smartcontractkit/pods/imports/k8s" + "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" ) const ( diff --git a/pods/pods_test.go b/pods/pods_test.go index d3e26be6c..5540f90df 100644 --- a/pods/pods_test.go +++ b/pods/pods_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/gkampitakis/go-snaps/snaps" - p "github.com/smartcontractkit/pods" + p "github.com/smartcontractkit/chainlink-testing-framework/pods" "github.com/stretchr/testify/require" ) From 76fb3f5e3341c24b641ec614189a0f8f02cf0ddf Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 03:29:00 +0100 Subject: [PATCH 08/16] rewrite in vanilla k8s --- book/go.mod | 20 +- book/go.sum | 40 +- framework/components/blockchain/anvil.go | 20 +- framework/components/clnode/clnode.go | 63 +- framework/components/dockercompose/go.sum | 8 +- framework/components/fake/go.mod | 12 +- framework/components/fake/go.sum | 44 +- framework/components/postgres/postgres.go | 40 +- framework/examples/chip_ingress/go.sum | 8 +- framework/examples/myproject/go.mod | 22 +- framework/examples/myproject/go.sum | 44 +- framework/examples/myproject_cll/go.mod | 22 +- framework/examples/myproject_cll/go.sum | 44 +- framework/go.mod | 24 +- framework/go.sum | 44 +- pods/README.md | 18 +- pods/__snapshots__/pods_test.snap | 453 +- pods/cdk8s.yaml | 5 - pods/client.go | 2 +- pods/defaults.go | 151 +- pods/environment/Justfile | 28 - pods/environment/README.md | 6 - pods/environment/environment.go | 142 - pods/environment/go.mod | 158 - pods/environment/go.sum | 446 -- pods/environment/kind.yml | 9 - pods/go.mod | 26 +- pods/go.sum | 44 +- pods/imports/k8s/Affinity.go | 13 - pods/imports/k8s/AggregationRule.go | 11 - pods/imports/k8s/ApiServiceSpec.go | 35 - pods/imports/k8s/AppArmorProfile.go | 18 - pods/imports/k8s/AuditAnnotation.go | 25 - pods/imports/k8s/AuditAnnotationV1Alpha1.go | 25 - pods/imports/k8s/AuditAnnotationV1Beta1.go | 25 - .../k8s/AwsElasticBlockStoreVolumeSource.go | 25 - pods/imports/k8s/AzureDiskVolumeSource.go | 27 - .../k8s/AzureFilePersistentVolumeSource.go | 17 - pods/imports/k8s/AzureFileVolumeSource.go | 15 - pods/imports/k8s/BasicDeviceV1Alpha3.go | 19 - pods/imports/k8s/BoundObjectReference.go | 17 - pods/imports/k8s/Capabilities.go | 11 - pods/imports/k8s/CelDeviceSelectorV1Alpha3.go | 37 - .../k8s/CephFsPersistentVolumeSource.go | 25 - pods/imports/k8s/CephFsVolumeSource.go | 25 - .../k8s/CertificateSigningRequestSpec.go | 79 - .../k8s/CinderPersistentVolumeSource.go | 25 - pods/imports/k8s/CinderVolumeSource.go | 23 - pods/imports/k8s/ClientIpConfig.go | 11 - .../k8s/ClusterTrustBundleProjection.go | 25 - .../k8s/ClusterTrustBundleSpecV1Alpha1.go | 23 - pods/imports/k8s/ComponentCondition.go | 23 - pods/imports/k8s/ConfigMapEnvSource.go | 15 - pods/imports/k8s/ConfigMapKeySelector.go | 15 - pods/imports/k8s/ConfigMapNodeConfigSource.go | 19 - pods/imports/k8s/ConfigMapProjection.go | 19 - pods/imports/k8s/ConfigMapVolumeSource.go | 25 - pods/imports/k8s/Container.go | 111 - pods/imports/k8s/ContainerPort.go | 27 - pods/imports/k8s/ContainerResizePolicy.go | 15 - .../k8s/ContainerResourceMetricSourceV2.go | 13 - pods/imports/k8s/CronJobSpec.go | 39 - .../k8s/CrossVersionObjectReference.go | 17 - .../k8s/CrossVersionObjectReferenceV2.go | 17 - pods/imports/k8s/CsiDriverSpec.go | 82 - pods/imports/k8s/CsiNodeDriver.go | 23 - pods/imports/k8s/CsiNodeSpec.go | 11 - pods/imports/k8s/CsiPersistentVolumeSource.go | 47 - pods/imports/k8s/CsiVolumeSource.go | 29 - .../k8s/CustomResourceColumnDefinition.go | 25 - pods/imports/k8s/CustomResourceConversion.go | 16 - .../k8s/CustomResourceDefinitionNames.go | 33 - .../k8s/CustomResourceDefinitionSpec.go | 27 - .../k8s/CustomResourceDefinitionVersion.go | 37 - .../k8s/CustomResourceSubresourceScale.go | 13 - .../imports/k8s/CustomResourceSubresources.go | 13 - pods/imports/k8s/CustomResourceValidation.go | 9 - pods/imports/k8s/DaemonSetSpec.go | 29 - pods/imports/k8s/DaemonSetUpdateStrategy.go | 17 - pods/imports/k8s/DeleteOptions.go | 35 - pods/imports/k8s/DeploymentSpec.go | 43 - pods/imports/k8s/DeploymentStrategy.go | 17 - pods/imports/k8s/DeviceAttributeV1Alpha3.go | 17 - .../k8s/DeviceClaimConfigurationV1Alpha3.go | 13 - pods/imports/k8s/DeviceClaimV1Alpha3.go | 17 - .../k8s/DeviceClassConfigurationV1Alpha3.go | 9 - pods/imports/k8s/DeviceClassSpecV1Alpha3.go | 23 - pods/imports/k8s/DeviceConstraintV1Alpha3.go | 17 - pods/imports/k8s/DeviceRequestV1Alpha3.go | 47 - pods/imports/k8s/DeviceSelectorV1Alpha3.go | 9 - pods/imports/k8s/DeviceV1Alpha3.go | 15 - pods/imports/k8s/DownwardApiProjection.go | 11 - pods/imports/k8s/DownwardApiVolumeFile.go | 19 - pods/imports/k8s/DownwardApiVolumeSource.go | 17 - pods/imports/k8s/EmptyDirVolumeSource.go | 17 - pods/imports/k8s/Endpoint.go | 31 - pods/imports/k8s/EndpointAddress.go | 19 - pods/imports/k8s/EndpointConditions.go | 19 - pods/imports/k8s/EndpointHints.go | 9 - pods/imports/k8s/EndpointPort.go | 32 - pods/imports/k8s/EndpointSubset.go | 27 - pods/imports/k8s/EnvFromSource.go | 15 - pods/imports/k8s/EnvVar.go | 21 - pods/imports/k8s/EnvVarSource.go | 15 - pods/imports/k8s/EphemeralContainer.go | 111 - pods/imports/k8s/EphemeralVolumeSource.go | 17 - pods/imports/k8s/EventSeries.go | 14 - pods/imports/k8s/EventSource.go | 11 - pods/imports/k8s/ExecAction.go | 11 - .../k8s/ExemptPriorityLevelConfiguration.go | 23 - ...ExemptPriorityLevelConfigurationV1Beta3.go | 23 - pods/imports/k8s/ExternalDocumentation.go | 9 - pods/imports/k8s/ExternalMetricSourceV2.go | 11 - pods/imports/k8s/FcVolumeSource.go | 25 - pods/imports/k8s/FieldSelectorAttributes.go | 17 - pods/imports/k8s/FieldSelectorRequirement.go | 17 - .../imports/k8s/FlexPersistentVolumeSource.go | 23 - pods/imports/k8s/FlexVolumeSource.go | 23 - pods/imports/k8s/FlockerVolumeSource.go | 15 - pods/imports/k8s/FlowDistinguisherMethod.go | 11 - .../k8s/FlowDistinguisherMethodV1Beta3.go | 11 - pods/imports/k8s/FlowSchemaSpec.go | 23 - pods/imports/k8s/FlowSchemaSpecV1Beta3.go | 23 - pods/imports/k8s/ForZone.go | 9 - .../k8s/GcePersistentDiskVolumeSource.go | 27 - pods/imports/k8s/GitRepoVolumeSource.go | 19 - .../k8s/GlusterfsPersistentVolumeSource.go | 27 - pods/imports/k8s/GlusterfsVolumeSource.go | 23 - pods/imports/k8s/GroupSubjectV1Beta3.go | 11 - .../k8s/GroupVersionResourceV1Alpha1.go | 13 - pods/imports/k8s/GrpcAction.go | 14 - .../k8s/HorizontalPodAutoscalerBehaviorV2.go | 18 - .../k8s/HorizontalPodAutoscalerSpec.go | 23 - .../k8s/HorizontalPodAutoscalerSpecV2.go | 25 - pods/imports/k8s/HostAlias.go | 11 - pods/imports/k8s/HostPathVolumeSource.go | 17 - pods/imports/k8s/HpaScalingPolicyV2.go | 17 - pods/imports/k8s/HpaScalingRulesV2.go | 21 - pods/imports/k8s/HttpGetAction.go | 27 - pods/imports/k8s/HttpHeader.go | 13 - pods/imports/k8s/HttpIngressPath.go | 29 - pods/imports/k8s/HttpIngressRuleValue.go | 11 - pods/imports/k8s/ImageVolumeSource.go | 17 - pods/imports/k8s/IngressBackend.go | 15 - .../k8s/IngressClassParametersReference.go | 25 - pods/imports/k8s/IngressClassSpec.go | 15 - pods/imports/k8s/IngressRule.go | 21 - pods/imports/k8s/IngressServiceBackend.go | 15 - pods/imports/k8s/IngressSpec.go | 23 - pods/imports/k8s/IngressTls.go | 17 - pods/imports/k8s/IntOrString.go | 63 - pods/imports/k8s/IntOrString__checks.go | 24 - pods/imports/k8s/IntOrString__no_checks.go | 14 - ...machineryPkgApisMetaV1DeleteOptionsKind.go | 13 - pods/imports/k8s/IpAddressSpecV1Beta1.go | 11 - pods/imports/k8s/IpBlock.go | 13 - .../k8s/IscsiPersistentVolumeSource.go | 47 - pods/imports/k8s/IscsiVolumeSource.go | 47 - pods/imports/k8s/JobSpec.go | 88 - pods/imports/k8s/JobTemplateSpec.go | 15 - pods/imports/k8s/JsonSchemaProps.go | 107 - pods/imports/k8s/KeyToPath.go | 17 - pods/imports/k8s/KubeApiService.go | 319 - pods/imports/k8s/KubeApiServiceList.go | 317 - pods/imports/k8s/KubeApiServiceListProps.go | 11 - .../imports/k8s/KubeApiServiceList__checks.go | 66 - .../k8s/KubeApiServiceList__no_checks.go | 26 - pods/imports/k8s/KubeApiServiceProps.go | 15 - pods/imports/k8s/KubeApiService__checks.go | 60 - pods/imports/k8s/KubeApiService__no_checks.go | 26 - pods/imports/k8s/KubeBinding.go | 319 - pods/imports/k8s/KubeBindingProps.go | 15 - pods/imports/k8s/KubeBinding__checks.go | 66 - pods/imports/k8s/KubeBinding__no_checks.go | 26 - .../k8s/KubeCertificateSigningRequest.go | 323 - .../k8s/KubeCertificateSigningRequestList.go | 317 - .../KubeCertificateSigningRequestListProps.go | 10 - ...beCertificateSigningRequestList__checks.go | 66 - ...ertificateSigningRequestList__no_checks.go | 26 - .../k8s/KubeCertificateSigningRequestProps.go | 18 - .../KubeCertificateSigningRequest__checks.go | 66 - ...ubeCertificateSigningRequest__no_checks.go | 26 - pods/imports/k8s/KubeClusterRole.go | 317 - pods/imports/k8s/KubeClusterRoleBinding.go | 319 - .../imports/k8s/KubeClusterRoleBindingList.go | 317 - .../k8s/KubeClusterRoleBindingListProps.go | 11 - .../k8s/KubeClusterRoleBindingList__checks.go | 66 - .../KubeClusterRoleBindingList__no_checks.go | 26 - .../k8s/KubeClusterRoleBindingProps.go | 17 - .../k8s/KubeClusterRoleBinding__checks.go | 66 - .../k8s/KubeClusterRoleBinding__no_checks.go | 26 - pods/imports/k8s/KubeClusterRoleList.go | 317 - pods/imports/k8s/KubeClusterRoleListProps.go | 11 - .../k8s/KubeClusterRoleList__checks.go | 66 - .../k8s/KubeClusterRoleList__no_checks.go | 26 - pods/imports/k8s/KubeClusterRoleProps.go | 15 - pods/imports/k8s/KubeClusterRole__checks.go | 60 - .../imports/k8s/KubeClusterRole__no_checks.go | 26 - .../k8s/KubeClusterTrustBundleListV1Alpha1.go | 317 - ...KubeClusterTrustBundleListV1Alpha1Props.go | 11 - ...eClusterTrustBundleListV1Alpha1__checks.go | 66 - ...usterTrustBundleListV1Alpha1__no_checks.go | 26 - .../k8s/KubeClusterTrustBundleV1Alpha1.go | 321 - .../KubeClusterTrustBundleV1Alpha1Props.go | 15 - .../KubeClusterTrustBundleV1Alpha1__checks.go | 66 - ...beClusterTrustBundleV1Alpha1__no_checks.go | 26 - pods/imports/k8s/KubeComponentStatus.go | 319 - pods/imports/k8s/KubeComponentStatusList.go | 319 - .../k8s/KubeComponentStatusListProps.go | 15 - .../k8s/KubeComponentStatusList__checks.go | 66 - .../k8s/KubeComponentStatusList__no_checks.go | 26 - pods/imports/k8s/KubeComponentStatusProps.go | 15 - .../k8s/KubeComponentStatus__checks.go | 60 - .../k8s/KubeComponentStatus__no_checks.go | 26 - pods/imports/k8s/KubeConfigMap.go | 317 - pods/imports/k8s/KubeConfigMapList.go | 317 - pods/imports/k8s/KubeConfigMapListProps.go | 11 - pods/imports/k8s/KubeConfigMapList__checks.go | 66 - .../k8s/KubeConfigMapList__no_checks.go | 26 - pods/imports/k8s/KubeConfigMapProps.go | 23 - pods/imports/k8s/KubeConfigMap__checks.go | 60 - pods/imports/k8s/KubeConfigMap__no_checks.go | 26 - pods/imports/k8s/KubeControllerRevision.go | 319 - .../imports/k8s/KubeControllerRevisionList.go | 317 - .../k8s/KubeControllerRevisionListProps.go | 11 - .../k8s/KubeControllerRevisionList__checks.go | 66 - .../KubeControllerRevisionList__no_checks.go | 26 - .../k8s/KubeControllerRevisionProps.go | 17 - .../k8s/KubeControllerRevision__checks.go | 66 - .../k8s/KubeControllerRevision__no_checks.go | 26 - pods/imports/k8s/KubeCronJob.go | 317 - pods/imports/k8s/KubeCronJobList.go | 317 - pods/imports/k8s/KubeCronJobListProps.go | 13 - pods/imports/k8s/KubeCronJobList__checks.go | 66 - .../imports/k8s/KubeCronJobList__no_checks.go | 26 - pods/imports/k8s/KubeCronJobProps.go | 15 - pods/imports/k8s/KubeCronJob__checks.go | 60 - pods/imports/k8s/KubeCronJob__no_checks.go | 26 - pods/imports/k8s/KubeCsiDriver.go | 319 - pods/imports/k8s/KubeCsiDriverList.go | 317 - pods/imports/k8s/KubeCsiDriverListProps.go | 11 - pods/imports/k8s/KubeCsiDriverList__checks.go | 66 - .../k8s/KubeCsiDriverList__no_checks.go | 26 - pods/imports/k8s/KubeCsiDriverProps.go | 15 - pods/imports/k8s/KubeCsiDriver__checks.go | 66 - pods/imports/k8s/KubeCsiDriver__no_checks.go | 26 - pods/imports/k8s/KubeCsiNode.go | 319 - pods/imports/k8s/KubeCsiNodeList.go | 317 - pods/imports/k8s/KubeCsiNodeListProps.go | 11 - pods/imports/k8s/KubeCsiNodeList__checks.go | 66 - .../imports/k8s/KubeCsiNodeList__no_checks.go | 26 - pods/imports/k8s/KubeCsiNodeProps.go | 15 - pods/imports/k8s/KubeCsiNode__checks.go | 66 - pods/imports/k8s/KubeCsiNode__no_checks.go | 26 - pods/imports/k8s/KubeCsiStorageCapacity.go | 327 - .../imports/k8s/KubeCsiStorageCapacityList.go | 317 - .../k8s/KubeCsiStorageCapacityListProps.go | 11 - .../k8s/KubeCsiStorageCapacityList__checks.go | 66 - .../KubeCsiStorageCapacityList__no_checks.go | 26 - .../k8s/KubeCsiStorageCapacityProps.go | 41 - .../k8s/KubeCsiStorageCapacity__checks.go | 66 - .../k8s/KubeCsiStorageCapacity__no_checks.go | 26 - .../k8s/KubeCustomResourceDefinition.go | 319 - .../k8s/KubeCustomResourceDefinitionList.go | 317 - .../KubeCustomResourceDefinitionListProps.go | 11 - ...ubeCustomResourceDefinitionList__checks.go | 66 - ...CustomResourceDefinitionList__no_checks.go | 26 - .../k8s/KubeCustomResourceDefinitionProps.go | 13 - .../KubeCustomResourceDefinition__checks.go | 66 - ...KubeCustomResourceDefinition__no_checks.go | 26 - pods/imports/k8s/KubeDaemonSet.go | 317 - pods/imports/k8s/KubeDaemonSetList.go | 317 - pods/imports/k8s/KubeDaemonSetListProps.go | 13 - pods/imports/k8s/KubeDaemonSetList__checks.go | 66 - .../k8s/KubeDaemonSetList__no_checks.go | 26 - pods/imports/k8s/KubeDaemonSetProps.go | 15 - pods/imports/k8s/KubeDaemonSet__checks.go | 60 - pods/imports/k8s/KubeDaemonSet__no_checks.go | 26 - pods/imports/k8s/KubeDeployment.go | 317 - pods/imports/k8s/KubeDeploymentList.go | 317 - pods/imports/k8s/KubeDeploymentListProps.go | 11 - .../imports/k8s/KubeDeploymentList__checks.go | 66 - .../k8s/KubeDeploymentList__no_checks.go | 26 - pods/imports/k8s/KubeDeploymentProps.go | 13 - pods/imports/k8s/KubeDeployment__checks.go | 60 - pods/imports/k8s/KubeDeployment__no_checks.go | 26 - .../k8s/KubeDeviceClassListV1Alpha3.go | 317 - .../k8s/KubeDeviceClassListV1Alpha3Props.go | 11 - .../KubeDeviceClassListV1Alpha3__checks.go | 66 - .../KubeDeviceClassListV1Alpha3__no_checks.go | 26 - pods/imports/k8s/KubeDeviceClassV1Alpha3.go | 321 - .../k8s/KubeDeviceClassV1Alpha3Props.go | 19 - .../k8s/KubeDeviceClassV1Alpha3__checks.go | 66 - .../k8s/KubeDeviceClassV1Alpha3__no_checks.go | 26 - pods/imports/k8s/KubeEndpointSlice.go | 319 - pods/imports/k8s/KubeEndpointSliceList.go | 317 - .../imports/k8s/KubeEndpointSliceListProps.go | 11 - .../k8s/KubeEndpointSliceList__checks.go | 66 - .../k8s/KubeEndpointSliceList__no_checks.go | 26 - pods/imports/k8s/KubeEndpointSliceProps.go | 23 - pods/imports/k8s/KubeEndpointSlice__checks.go | 66 - .../k8s/KubeEndpointSlice__no_checks.go | 26 - pods/imports/k8s/KubeEndpoints.go | 329 - pods/imports/k8s/KubeEndpointsList.go | 317 - pods/imports/k8s/KubeEndpointsListProps.go | 13 - pods/imports/k8s/KubeEndpointsList__checks.go | 66 - .../k8s/KubeEndpointsList__no_checks.go | 26 - pods/imports/k8s/KubeEndpointsProps.go | 27 - pods/imports/k8s/KubeEndpoints__checks.go | 60 - pods/imports/k8s/KubeEndpoints__no_checks.go | 26 - pods/imports/k8s/KubeEvent.go | 319 - pods/imports/k8s/KubeEventList.go | 317 - pods/imports/k8s/KubeEventListProps.go | 13 - pods/imports/k8s/KubeEventList__checks.go | 66 - pods/imports/k8s/KubeEventList__no_checks.go | 26 - pods/imports/k8s/KubeEventProps.go | 58 - pods/imports/k8s/KubeEvent__checks.go | 66 - pods/imports/k8s/KubeEvent__no_checks.go | 26 - pods/imports/k8s/KubeEviction.go | 319 - pods/imports/k8s/KubeEvictionProps.go | 13 - pods/imports/k8s/KubeEviction__checks.go | 60 - pods/imports/k8s/KubeEviction__no_checks.go | 26 - pods/imports/k8s/KubeFlowSchema.go | 319 - pods/imports/k8s/KubeFlowSchemaList.go | 317 - pods/imports/k8s/KubeFlowSchemaListProps.go | 13 - pods/imports/k8s/KubeFlowSchemaListV1Beta3.go | 317 - .../k8s/KubeFlowSchemaListV1Beta3Props.go | 13 - .../k8s/KubeFlowSchemaListV1Beta3__checks.go | 66 - .../KubeFlowSchemaListV1Beta3__no_checks.go | 26 - .../imports/k8s/KubeFlowSchemaList__checks.go | 66 - .../k8s/KubeFlowSchemaList__no_checks.go | 26 - pods/imports/k8s/KubeFlowSchemaProps.go | 17 - pods/imports/k8s/KubeFlowSchemaV1Beta3.go | 319 - .../imports/k8s/KubeFlowSchemaV1Beta3Props.go | 17 - .../k8s/KubeFlowSchemaV1Beta3__checks.go | 60 - .../k8s/KubeFlowSchemaV1Beta3__no_checks.go | 26 - pods/imports/k8s/KubeFlowSchema__checks.go | 60 - pods/imports/k8s/KubeFlowSchema__no_checks.go | 26 - .../k8s/KubeHorizontalPodAutoscaler.go | 317 - .../k8s/KubeHorizontalPodAutoscalerList.go | 317 - .../KubeHorizontalPodAutoscalerListProps.go | 11 - .../k8s/KubeHorizontalPodAutoscalerListV2.go | 317 - .../KubeHorizontalPodAutoscalerListV2Props.go | 11 - ...beHorizontalPodAutoscalerListV2__checks.go | 66 - ...orizontalPodAutoscalerListV2__no_checks.go | 26 - ...KubeHorizontalPodAutoscalerList__checks.go | 66 - ...eHorizontalPodAutoscalerList__no_checks.go | 26 - .../k8s/KubeHorizontalPodAutoscalerProps.go | 15 - .../k8s/KubeHorizontalPodAutoscalerV2.go | 317 - .../k8s/KubeHorizontalPodAutoscalerV2Props.go | 15 - .../KubeHorizontalPodAutoscalerV2__checks.go | 60 - ...ubeHorizontalPodAutoscalerV2__no_checks.go | 26 - .../KubeHorizontalPodAutoscaler__checks.go | 60 - .../KubeHorizontalPodAutoscaler__no_checks.go | 26 - pods/imports/k8s/KubeIngress.go | 319 - pods/imports/k8s/KubeIngressClass.go | 319 - pods/imports/k8s/KubeIngressClassList.go | 317 - pods/imports/k8s/KubeIngressClassListProps.go | 11 - .../k8s/KubeIngressClassList__checks.go | 66 - .../k8s/KubeIngressClassList__no_checks.go | 26 - pods/imports/k8s/KubeIngressClassProps.go | 17 - pods/imports/k8s/KubeIngressClass__checks.go | 60 - .../k8s/KubeIngressClass__no_checks.go | 26 - pods/imports/k8s/KubeIngressList.go | 317 - pods/imports/k8s/KubeIngressListProps.go | 13 - pods/imports/k8s/KubeIngressList__checks.go | 66 - .../imports/k8s/KubeIngressList__no_checks.go | 26 - pods/imports/k8s/KubeIngressProps.go | 17 - pods/imports/k8s/KubeIngress__checks.go | 60 - pods/imports/k8s/KubeIngress__no_checks.go | 26 - pods/imports/k8s/KubeIpAddressListV1Beta1.go | 317 - .../k8s/KubeIpAddressListV1Beta1Props.go | 13 - .../k8s/KubeIpAddressListV1Beta1__checks.go | 66 - .../KubeIpAddressListV1Beta1__no_checks.go | 26 - pods/imports/k8s/KubeIpAddressV1Beta1.go | 319 - pods/imports/k8s/KubeIpAddressV1Beta1Props.go | 17 - .../k8s/KubeIpAddressV1Beta1__checks.go | 60 - .../k8s/KubeIpAddressV1Beta1__no_checks.go | 26 - pods/imports/k8s/KubeJob.go | 317 - pods/imports/k8s/KubeJobList.go | 317 - pods/imports/k8s/KubeJobListProps.go | 13 - pods/imports/k8s/KubeJobList__checks.go | 66 - pods/imports/k8s/KubeJobList__no_checks.go | 26 - pods/imports/k8s/KubeJobProps.go | 15 - pods/imports/k8s/KubeJob__checks.go | 60 - pods/imports/k8s/KubeJob__no_checks.go | 26 - pods/imports/k8s/KubeLease.go | 317 - .../k8s/KubeLeaseCandidateListV1Alpha1.go | 317 - .../KubeLeaseCandidateListV1Alpha1Props.go | 13 - .../KubeLeaseCandidateListV1Alpha1__checks.go | 66 - ...beLeaseCandidateListV1Alpha1__no_checks.go | 26 - .../imports/k8s/KubeLeaseCandidateV1Alpha1.go | 319 - .../k8s/KubeLeaseCandidateV1Alpha1Props.go | 15 - .../k8s/KubeLeaseCandidateV1Alpha1__checks.go | 60 - .../KubeLeaseCandidateV1Alpha1__no_checks.go | 26 - pods/imports/k8s/KubeLeaseList.go | 317 - pods/imports/k8s/KubeLeaseListProps.go | 13 - pods/imports/k8s/KubeLeaseList__checks.go | 66 - pods/imports/k8s/KubeLeaseList__no_checks.go | 26 - pods/imports/k8s/KubeLeaseProps.go | 13 - pods/imports/k8s/KubeLease__checks.go | 60 - pods/imports/k8s/KubeLease__no_checks.go | 26 - pods/imports/k8s/KubeLimitRange.go | 317 - pods/imports/k8s/KubeLimitRangeList.go | 317 - pods/imports/k8s/KubeLimitRangeListProps.go | 15 - .../imports/k8s/KubeLimitRangeList__checks.go | 66 - .../k8s/KubeLimitRangeList__no_checks.go | 26 - pods/imports/k8s/KubeLimitRangeProps.go | 15 - pods/imports/k8s/KubeLimitRange__checks.go | 60 - pods/imports/k8s/KubeLimitRange__no_checks.go | 26 - .../k8s/KubeLocalSubjectAccessReview.go | 319 - .../k8s/KubeLocalSubjectAccessReviewProps.go | 17 - .../KubeLocalSubjectAccessReview__checks.go | 66 - ...KubeLocalSubjectAccessReview__no_checks.go | 26 - .../k8s/KubeMutatingWebhookConfiguration.go | 317 - .../KubeMutatingWebhookConfigurationList.go | 317 - ...beMutatingWebhookConfigurationListProps.go | 13 - ...utatingWebhookConfigurationList__checks.go | 66 - ...tingWebhookConfigurationList__no_checks.go | 26 - .../KubeMutatingWebhookConfigurationProps.go | 13 - ...ubeMutatingWebhookConfiguration__checks.go | 60 - ...MutatingWebhookConfiguration__no_checks.go | 26 - pods/imports/k8s/KubeNamespace.go | 319 - pods/imports/k8s/KubeNamespaceList.go | 317 - pods/imports/k8s/KubeNamespaceListProps.go | 15 - pods/imports/k8s/KubeNamespaceList__checks.go | 66 - .../k8s/KubeNamespaceList__no_checks.go | 26 - pods/imports/k8s/KubeNamespaceProps.go | 17 - pods/imports/k8s/KubeNamespace__checks.go | 60 - pods/imports/k8s/KubeNamespace__no_checks.go | 26 - pods/imports/k8s/KubeNetworkPolicy.go | 317 - pods/imports/k8s/KubeNetworkPolicyList.go | 317 - .../imports/k8s/KubeNetworkPolicyListProps.go | 13 - .../k8s/KubeNetworkPolicyList__checks.go | 66 - .../k8s/KubeNetworkPolicyList__no_checks.go | 26 - pods/imports/k8s/KubeNetworkPolicyProps.go | 13 - pods/imports/k8s/KubeNetworkPolicy__checks.go | 60 - .../k8s/KubeNetworkPolicy__no_checks.go | 26 - pods/imports/k8s/KubeNode.go | 319 - pods/imports/k8s/KubeNodeList.go | 317 - pods/imports/k8s/KubeNodeListProps.go | 13 - pods/imports/k8s/KubeNodeList__checks.go | 66 - pods/imports/k8s/KubeNodeList__no_checks.go | 26 - pods/imports/k8s/KubeNodeProps.go | 17 - pods/imports/k8s/KubeNode__checks.go | 60 - pods/imports/k8s/KubeNode__no_checks.go | 26 - pods/imports/k8s/KubePersistentVolume.go | 319 - pods/imports/k8s/KubePersistentVolumeClaim.go | 317 - .../k8s/KubePersistentVolumeClaimList.go | 317 - .../k8s/KubePersistentVolumeClaimListProps.go | 15 - .../KubePersistentVolumeClaimList__checks.go | 66 - ...ubePersistentVolumeClaimList__no_checks.go | 26 - .../k8s/KubePersistentVolumeClaimProps.go | 15 - .../k8s/KubePersistentVolumeClaim__checks.go | 60 - .../KubePersistentVolumeClaim__no_checks.go | 26 - pods/imports/k8s/KubePersistentVolumeList.go | 317 - .../k8s/KubePersistentVolumeListProps.go | 15 - .../k8s/KubePersistentVolumeList__checks.go | 66 - .../KubePersistentVolumeList__no_checks.go | 26 - pods/imports/k8s/KubePersistentVolumeProps.go | 17 - .../k8s/KubePersistentVolume__checks.go | 60 - .../k8s/KubePersistentVolume__no_checks.go | 26 - pods/imports/k8s/KubePod.go | 319 - pods/imports/k8s/KubePodDisruptionBudget.go | 317 - .../k8s/KubePodDisruptionBudgetList.go | 317 - .../k8s/KubePodDisruptionBudgetListProps.go | 13 - .../KubePodDisruptionBudgetList__checks.go | 66 - .../KubePodDisruptionBudgetList__no_checks.go | 26 - .../k8s/KubePodDisruptionBudgetProps.go | 13 - .../k8s/KubePodDisruptionBudget__checks.go | 60 - .../k8s/KubePodDisruptionBudget__no_checks.go | 26 - pods/imports/k8s/KubePodList.go | 317 - pods/imports/k8s/KubePodListProps.go | 15 - pods/imports/k8s/KubePodList__checks.go | 66 - pods/imports/k8s/KubePodList__no_checks.go | 26 - pods/imports/k8s/KubePodProps.go | 17 - .../KubePodSchedulingContextListV1Alpha3.go | 317 - ...bePodSchedulingContextListV1Alpha3Props.go | 11 - ...odSchedulingContextListV1Alpha3__checks.go | 66 - ...chedulingContextListV1Alpha3__no_checks.go | 26 - .../k8s/KubePodSchedulingContextV1Alpha3.go | 319 - .../KubePodSchedulingContextV1Alpha3Props.go | 13 - ...ubePodSchedulingContextV1Alpha3__checks.go | 66 - ...PodSchedulingContextV1Alpha3__no_checks.go | 26 - pods/imports/k8s/KubePodTemplate.go | 317 - pods/imports/k8s/KubePodTemplateList.go | 317 - pods/imports/k8s/KubePodTemplateListProps.go | 13 - .../k8s/KubePodTemplateList__checks.go | 66 - .../k8s/KubePodTemplateList__no_checks.go | 26 - pods/imports/k8s/KubePodTemplateProps.go | 15 - pods/imports/k8s/KubePodTemplate__checks.go | 60 - .../imports/k8s/KubePodTemplate__no_checks.go | 26 - pods/imports/k8s/KubePod__checks.go | 60 - pods/imports/k8s/KubePod__no_checks.go | 26 - pods/imports/k8s/KubePriorityClass.go | 319 - pods/imports/k8s/KubePriorityClassList.go | 317 - .../imports/k8s/KubePriorityClassListProps.go | 11 - .../k8s/KubePriorityClassList__checks.go | 66 - .../k8s/KubePriorityClassList__no_checks.go | 26 - pods/imports/k8s/KubePriorityClassProps.go | 29 - pods/imports/k8s/KubePriorityClass__checks.go | 66 - .../k8s/KubePriorityClass__no_checks.go | 26 - .../k8s/KubePriorityLevelConfiguration.go | 317 - .../k8s/KubePriorityLevelConfigurationList.go | 317 - ...KubePriorityLevelConfigurationListProps.go | 13 - ...bePriorityLevelConfigurationListV1Beta3.go | 317 - ...orityLevelConfigurationListV1Beta3Props.go | 13 - ...tyLevelConfigurationListV1Beta3__checks.go | 66 - ...evelConfigurationListV1Beta3__no_checks.go | 26 - ...ePriorityLevelConfigurationList__checks.go | 66 - ...iorityLevelConfigurationList__no_checks.go | 26 - .../KubePriorityLevelConfigurationProps.go | 15 - .../KubePriorityLevelConfigurationV1Beta3.go | 317 - ...ePriorityLevelConfigurationV1Beta3Props.go | 15 - ...iorityLevelConfigurationV1Beta3__checks.go | 60 - ...ityLevelConfigurationV1Beta3__no_checks.go | 26 - .../KubePriorityLevelConfiguration__checks.go | 60 - ...bePriorityLevelConfiguration__no_checks.go | 26 - pods/imports/k8s/KubeReplicaSet.go | 317 - pods/imports/k8s/KubeReplicaSetList.go | 317 - pods/imports/k8s/KubeReplicaSetListProps.go | 15 - .../imports/k8s/KubeReplicaSetList__checks.go | 66 - .../k8s/KubeReplicaSetList__no_checks.go | 26 - pods/imports/k8s/KubeReplicaSetProps.go | 15 - pods/imports/k8s/KubeReplicaSet__checks.go | 60 - pods/imports/k8s/KubeReplicaSet__no_checks.go | 26 - pods/imports/k8s/KubeReplicationController.go | 317 - .../k8s/KubeReplicationControllerList.go | 317 - .../k8s/KubeReplicationControllerListProps.go | 15 - .../KubeReplicationControllerList__checks.go | 66 - ...ubeReplicationControllerList__no_checks.go | 26 - .../k8s/KubeReplicationControllerProps.go | 15 - .../k8s/KubeReplicationController__checks.go | 60 - .../KubeReplicationController__no_checks.go | 26 - .../k8s/KubeResourceClaimListV1Alpha3.go | 317 - .../k8s/KubeResourceClaimListV1Alpha3Props.go | 11 - .../KubeResourceClaimListV1Alpha3__checks.go | 66 - ...ubeResourceClaimListV1Alpha3__no_checks.go | 26 - .../KubeResourceClaimTemplateListV1Alpha3.go | 317 - ...eResourceClaimTemplateListV1Alpha3Props.go | 11 - ...sourceClaimTemplateListV1Alpha3__checks.go | 66 - ...rceClaimTemplateListV1Alpha3__no_checks.go | 26 - .../k8s/KubeResourceClaimTemplateV1Alpha3.go | 319 - .../KubeResourceClaimTemplateV1Alpha3Props.go | 15 - ...beResourceClaimTemplateV1Alpha3__checks.go | 66 - ...esourceClaimTemplateV1Alpha3__no_checks.go | 26 - pods/imports/k8s/KubeResourceClaimV1Alpha3.go | 321 - .../k8s/KubeResourceClaimV1Alpha3Props.go | 17 - .../k8s/KubeResourceClaimV1Alpha3__checks.go | 66 - .../KubeResourceClaimV1Alpha3__no_checks.go | 26 - pods/imports/k8s/KubeResourceQuota.go | 317 - pods/imports/k8s/KubeResourceQuotaList.go | 317 - .../imports/k8s/KubeResourceQuotaListProps.go | 15 - .../k8s/KubeResourceQuotaList__checks.go | 66 - .../k8s/KubeResourceQuotaList__no_checks.go | 26 - pods/imports/k8s/KubeResourceQuotaProps.go | 15 - pods/imports/k8s/KubeResourceQuota__checks.go | 60 - .../k8s/KubeResourceQuota__no_checks.go | 26 - pods/imports/k8s/KubeResourceSliceV1Alpha3.go | 329 - .../k8s/KubeResourceSliceV1Alpha3Props.go | 25 - .../k8s/KubeResourceSliceV1Alpha3__checks.go | 66 - .../KubeResourceSliceV1Alpha3__no_checks.go | 26 - pods/imports/k8s/KubeRole.go | 317 - pods/imports/k8s/KubeRoleBinding.go | 319 - pods/imports/k8s/KubeRoleBindingList.go | 317 - pods/imports/k8s/KubeRoleBindingListProps.go | 11 - .../k8s/KubeRoleBindingList__checks.go | 66 - .../k8s/KubeRoleBindingList__no_checks.go | 26 - pods/imports/k8s/KubeRoleBindingProps.go | 17 - pods/imports/k8s/KubeRoleBinding__checks.go | 66 - .../imports/k8s/KubeRoleBinding__no_checks.go | 26 - pods/imports/k8s/KubeRoleList.go | 317 - pods/imports/k8s/KubeRoleListProps.go | 11 - pods/imports/k8s/KubeRoleList__checks.go | 66 - pods/imports/k8s/KubeRoleList__no_checks.go | 26 - pods/imports/k8s/KubeRoleProps.go | 11 - pods/imports/k8s/KubeRole__checks.go | 60 - pods/imports/k8s/KubeRole__no_checks.go | 26 - pods/imports/k8s/KubeRuntimeClass.go | 319 - pods/imports/k8s/KubeRuntimeClassList.go | 317 - pods/imports/k8s/KubeRuntimeClassListProps.go | 13 - .../k8s/KubeRuntimeClassList__checks.go | 66 - .../k8s/KubeRuntimeClassList__no_checks.go | 26 - pods/imports/k8s/KubeRuntimeClassProps.go | 24 - pods/imports/k8s/KubeRuntimeClass__checks.go | 66 - .../k8s/KubeRuntimeClass__no_checks.go | 26 - pods/imports/k8s/KubeScale.go | 317 - pods/imports/k8s/KubeScaleProps.go | 15 - pods/imports/k8s/KubeScale__checks.go | 60 - pods/imports/k8s/KubeScale__no_checks.go | 26 - pods/imports/k8s/KubeSecret.go | 319 - pods/imports/k8s/KubeSecretList.go | 317 - pods/imports/k8s/KubeSecretListProps.go | 15 - pods/imports/k8s/KubeSecretList__checks.go | 66 - pods/imports/k8s/KubeSecretList__no_checks.go | 26 - pods/imports/k8s/KubeSecretProps.go | 29 - pods/imports/k8s/KubeSecret__checks.go | 60 - pods/imports/k8s/KubeSecret__no_checks.go | 26 - .../k8s/KubeSelfSubjectAccessReview.go | 319 - .../k8s/KubeSelfSubjectAccessReviewProps.go | 17 - .../KubeSelfSubjectAccessReview__checks.go | 66 - .../KubeSelfSubjectAccessReview__no_checks.go | 26 - pods/imports/k8s/KubeSelfSubjectReview.go | 319 - .../imports/k8s/KubeSelfSubjectReviewProps.go | 13 - .../k8s/KubeSelfSubjectReviewV1Alpha1.go | 319 - .../k8s/KubeSelfSubjectReviewV1Alpha1Props.go | 13 - .../KubeSelfSubjectReviewV1Alpha1__checks.go | 60 - ...ubeSelfSubjectReviewV1Alpha1__no_checks.go | 26 - .../k8s/KubeSelfSubjectReviewV1Beta1.go | 319 - .../k8s/KubeSelfSubjectReviewV1Beta1Props.go | 13 - .../KubeSelfSubjectReviewV1Beta1__checks.go | 60 - ...KubeSelfSubjectReviewV1Beta1__no_checks.go | 26 - .../k8s/KubeSelfSubjectReview__checks.go | 60 - .../k8s/KubeSelfSubjectReview__no_checks.go | 26 - .../imports/k8s/KubeSelfSubjectRulesReview.go | 319 - .../k8s/KubeSelfSubjectRulesReviewProps.go | 15 - .../k8s/KubeSelfSubjectRulesReview__checks.go | 66 - .../KubeSelfSubjectRulesReview__no_checks.go | 26 - pods/imports/k8s/KubeService.go | 317 - pods/imports/k8s/KubeServiceAccount.go | 317 - pods/imports/k8s/KubeServiceAccountList.go | 317 - .../k8s/KubeServiceAccountListProps.go | 15 - .../k8s/KubeServiceAccountList__checks.go | 66 - .../k8s/KubeServiceAccountList__no_checks.go | 26 - pods/imports/k8s/KubeServiceAccountProps.go | 23 - .../imports/k8s/KubeServiceAccount__checks.go | 60 - .../k8s/KubeServiceAccount__no_checks.go | 26 - .../imports/k8s/KubeServiceCidrListV1Beta1.go | 317 - .../k8s/KubeServiceCidrListV1Beta1Props.go | 13 - .../k8s/KubeServiceCidrListV1Beta1__checks.go | 66 - .../KubeServiceCidrListV1Beta1__no_checks.go | 26 - pods/imports/k8s/KubeServiceCidrv1Beta1.go | 317 - .../k8s/KubeServiceCidrv1Beta1Props.go | 15 - .../k8s/KubeServiceCidrv1Beta1__checks.go | 60 - .../k8s/KubeServiceCidrv1Beta1__no_checks.go | 26 - pods/imports/k8s/KubeServiceList.go | 317 - pods/imports/k8s/KubeServiceListProps.go | 13 - pods/imports/k8s/KubeServiceList__checks.go | 66 - .../imports/k8s/KubeServiceList__no_checks.go | 26 - pods/imports/k8s/KubeServiceProps.go | 15 - pods/imports/k8s/KubeService__checks.go | 60 - pods/imports/k8s/KubeService__no_checks.go | 26 - pods/imports/k8s/KubeStatefulSet.go | 323 - pods/imports/k8s/KubeStatefulSetList.go | 317 - pods/imports/k8s/KubeStatefulSetListProps.go | 13 - .../k8s/KubeStatefulSetList__checks.go | 66 - .../k8s/KubeStatefulSetList__no_checks.go | 26 - pods/imports/k8s/KubeStatefulSetProps.go | 19 - pods/imports/k8s/KubeStatefulSet__checks.go | 60 - .../imports/k8s/KubeStatefulSet__no_checks.go | 26 - pods/imports/k8s/KubeStatus.go | 317 - pods/imports/k8s/KubeStatusProps.go | 23 - pods/imports/k8s/KubeStatus__checks.go | 60 - pods/imports/k8s/KubeStatus__no_checks.go | 26 - pods/imports/k8s/KubeStorageClass.go | 319 - pods/imports/k8s/KubeStorageClassList.go | 317 - pods/imports/k8s/KubeStorageClassListProps.go | 11 - .../k8s/KubeStorageClassList__checks.go | 66 - .../k8s/KubeStorageClassList__no_checks.go | 26 - pods/imports/k8s/KubeStorageClassProps.go | 37 - pods/imports/k8s/KubeStorageClass__checks.go | 66 - .../k8s/KubeStorageClass__no_checks.go | 26 - .../k8s/KubeStorageVersionListV1Alpha1.go | 317 - .../KubeStorageVersionListV1Alpha1Props.go | 13 - .../KubeStorageVersionListV1Alpha1__checks.go | 66 - ...beStorageVersionListV1Alpha1__no_checks.go | 26 - ...KubeStorageVersionMigrationListV1Alpha1.go | 317 - ...torageVersionMigrationListV1Alpha1Props.go | 11 - ...ageVersionMigrationListV1Alpha1__checks.go | 66 - ...VersionMigrationListV1Alpha1__no_checks.go | 26 - .../KubeStorageVersionMigrationV1Alpha1.go | 317 - ...ubeStorageVersionMigrationV1Alpha1Props.go | 13 - ...StorageVersionMigrationV1Alpha1__checks.go | 60 - ...rageVersionMigrationV1Alpha1__no_checks.go | 26 - .../imports/k8s/KubeStorageVersionV1Alpha1.go | 317 - .../k8s/KubeStorageVersionV1Alpha1Props.go | 13 - .../k8s/KubeStorageVersionV1Alpha1__checks.go | 66 - .../KubeStorageVersionV1Alpha1__no_checks.go | 26 - pods/imports/k8s/KubeSubjectAccessReview.go | 317 - .../k8s/KubeSubjectAccessReviewProps.go | 13 - .../k8s/KubeSubjectAccessReview__checks.go | 66 - .../k8s/KubeSubjectAccessReview__no_checks.go | 26 - pods/imports/k8s/KubeTokenRequest.go | 317 - pods/imports/k8s/KubeTokenRequestProps.go | 13 - pods/imports/k8s/KubeTokenRequest__checks.go | 66 - .../k8s/KubeTokenRequest__no_checks.go | 26 - pods/imports/k8s/KubeTokenReview.go | 319 - pods/imports/k8s/KubeTokenReviewProps.go | 15 - pods/imports/k8s/KubeTokenReview__checks.go | 66 - .../imports/k8s/KubeTokenReview__no_checks.go | 26 - .../k8s/KubeValidatingAdmissionPolicy.go | 317 - .../KubeValidatingAdmissionPolicyBinding.go | 323 - ...ubeValidatingAdmissionPolicyBindingList.go | 317 - ...lidatingAdmissionPolicyBindingListProps.go | 13 - ...atingAdmissionPolicyBindingListV1Alpha1.go | 317 - ...AdmissionPolicyBindingListV1Alpha1Props.go | 13 - ...issionPolicyBindingListV1Alpha1__checks.go | 66 - ...ionPolicyBindingListV1Alpha1__no_checks.go | 26 - ...datingAdmissionPolicyBindingListV1Beta1.go | 317 - ...gAdmissionPolicyBindingListV1Beta1Props.go | 13 - ...missionPolicyBindingListV1Beta1__checks.go | 66 - ...sionPolicyBindingListV1Beta1__no_checks.go | 26 - ...atingAdmissionPolicyBindingList__checks.go | 66 - ...ngAdmissionPolicyBindingList__no_checks.go | 26 - ...beValidatingAdmissionPolicyBindingProps.go | 19 - ...alidatingAdmissionPolicyBindingV1Alpha1.go | 323 - ...tingAdmissionPolicyBindingV1Alpha1Props.go | 19 - ...gAdmissionPolicyBindingV1Alpha1__checks.go | 60 - ...missionPolicyBindingV1Alpha1__no_checks.go | 26 - ...ValidatingAdmissionPolicyBindingV1Beta1.go | 323 - ...atingAdmissionPolicyBindingV1Beta1Props.go | 19 - ...ngAdmissionPolicyBindingV1Beta1__checks.go | 60 - ...dmissionPolicyBindingV1Beta1__no_checks.go | 26 - ...alidatingAdmissionPolicyBinding__checks.go | 60 - ...datingAdmissionPolicyBinding__no_checks.go | 26 - .../k8s/KubeValidatingAdmissionPolicyList.go | 317 - .../KubeValidatingAdmissionPolicyListProps.go | 13 - ...beValidatingAdmissionPolicyListV1Alpha1.go | 317 - ...idatingAdmissionPolicyListV1Alpha1Props.go | 13 - ...tingAdmissionPolicyListV1Alpha1__checks.go | 66 - ...gAdmissionPolicyListV1Alpha1__no_checks.go | 26 - ...ubeValidatingAdmissionPolicyListV1Beta1.go | 317 - ...lidatingAdmissionPolicyListV1Beta1Props.go | 13 - ...atingAdmissionPolicyListV1Beta1__checks.go | 66 - ...ngAdmissionPolicyListV1Beta1__no_checks.go | 26 - ...beValidatingAdmissionPolicyList__checks.go | 66 - ...alidatingAdmissionPolicyList__no_checks.go | 26 - .../k8s/KubeValidatingAdmissionPolicyProps.go | 13 - .../KubeValidatingAdmissionPolicyV1Alpha1.go | 317 - ...eValidatingAdmissionPolicyV1Alpha1Props.go | 13 - ...lidatingAdmissionPolicyV1Alpha1__checks.go | 60 - ...atingAdmissionPolicyV1Alpha1__no_checks.go | 26 - .../KubeValidatingAdmissionPolicyV1Beta1.go | 317 - ...beValidatingAdmissionPolicyV1Beta1Props.go | 13 - ...alidatingAdmissionPolicyV1Beta1__checks.go | 60 - ...datingAdmissionPolicyV1Beta1__no_checks.go | 26 - .../KubeValidatingAdmissionPolicy__checks.go | 60 - ...ubeValidatingAdmissionPolicy__no_checks.go | 26 - .../k8s/KubeValidatingWebhookConfiguration.go | 317 - .../KubeValidatingWebhookConfigurationList.go | 317 - ...ValidatingWebhookConfigurationListProps.go | 13 - ...idatingWebhookConfigurationList__checks.go | 66 - ...tingWebhookConfigurationList__no_checks.go | 26 - ...KubeValidatingWebhookConfigurationProps.go | 13 - ...eValidatingWebhookConfiguration__checks.go | 60 - ...lidatingWebhookConfiguration__no_checks.go | 26 - pods/imports/k8s/KubeVolumeAttachment.go | 319 - pods/imports/k8s/KubeVolumeAttachmentList.go | 317 - .../k8s/KubeVolumeAttachmentListProps.go | 11 - .../k8s/KubeVolumeAttachmentList__checks.go | 66 - .../KubeVolumeAttachmentList__no_checks.go | 26 - pods/imports/k8s/KubeVolumeAttachmentProps.go | 17 - .../k8s/KubeVolumeAttachment__checks.go | 66 - .../k8s/KubeVolumeAttachment__no_checks.go | 26 - .../KubeVolumeAttributesClassListV1Alpha1.go | 317 - ...eVolumeAttributesClassListV1Alpha1Props.go | 11 - ...lumeAttributesClassListV1Alpha1__checks.go | 66 - ...eAttributesClassListV1Alpha1__no_checks.go | 26 - .../KubeVolumeAttributesClassListV1Beta1.go | 317 - ...beVolumeAttributesClassListV1Beta1Props.go | 11 - ...olumeAttributesClassListV1Beta1__checks.go | 66 - ...meAttributesClassListV1Beta1__no_checks.go | 26 - .../k8s/KubeVolumeAttributesClassV1Alpha1.go | 319 - .../KubeVolumeAttributesClassV1Alpha1Props.go | 21 - ...beVolumeAttributesClassV1Alpha1__checks.go | 66 - ...olumeAttributesClassV1Alpha1__no_checks.go | 26 - .../k8s/KubeVolumeAttributesClassV1Beta1.go | 319 - .../KubeVolumeAttributesClassV1Beta1Props.go | 21 - ...ubeVolumeAttributesClassV1Beta1__checks.go | 66 - ...VolumeAttributesClassV1Beta1__no_checks.go | 26 - pods/imports/k8s/LabelSelector.go | 17 - pods/imports/k8s/LabelSelectorAttributes.go | 17 - pods/imports/k8s/LabelSelectorRequirement.go | 17 - .../imports/k8s/LeaseCandidateSpecV1Alpha1.go | 38 - pods/imports/k8s/LeaseSpec.go | 32 - pods/imports/k8s/Lifecycle.go | 17 - pods/imports/k8s/LifecycleHandler.go | 19 - pods/imports/k8s/LimitRangeItem.go | 21 - pods/imports/k8s/LimitRangeSpec.go | 9 - pods/imports/k8s/LimitResponse.go | 15 - pods/imports/k8s/LimitResponseV1Beta3.go | 15 - .../k8s/LimitedPriorityLevelConfiguration.go | 39 - ...imitedPriorityLevelConfigurationV1Beta3.go | 35 - pods/imports/k8s/ListMeta.go | 23 - pods/imports/k8s/LocalObjectReference.go | 11 - pods/imports/k8s/LocalVolumeSource.go | 15 - pods/imports/k8s/ManagedFieldsEntry.go | 34 - pods/imports/k8s/MatchCondition.go | 25 - pods/imports/k8s/MatchConditionV1Alpha1.go | 24 - pods/imports/k8s/MatchConditionV1Beta1.go | 25 - pods/imports/k8s/MatchResources.go | 69 - pods/imports/k8s/MatchResourcesV1Alpha1.go | 69 - pods/imports/k8s/MatchResourcesV1Beta1.go | 69 - pods/imports/k8s/MetricIdentifierV2.go | 13 - pods/imports/k8s/MetricSpecV2.go | 25 - pods/imports/k8s/MetricTargetV2.go | 17 - pods/imports/k8s/MutatingWebhook.go | 114 - pods/imports/k8s/NamedRuleWithOperations.go | 37 - .../k8s/NamedRuleWithOperationsV1Alpha1.go | 37 - .../k8s/NamedRuleWithOperationsV1Beta1.go | 37 - pods/imports/k8s/NamespaceSpec.go | 11 - pods/imports/k8s/NetworkPolicyEgressRule.go | 17 - pods/imports/k8s/NetworkPolicyIngressRule.go | 17 - pods/imports/k8s/NetworkPolicyPeer.go | 25 - pods/imports/k8s/NetworkPolicyPort.go | 19 - pods/imports/k8s/NetworkPolicySpec.go | 23 - pods/imports/k8s/NfsVolumeSource.go | 23 - pods/imports/k8s/NodeAffinity.go | 15 - pods/imports/k8s/NodeConfigSource.go | 11 - pods/imports/k8s/NodeSelector.go | 13 - pods/imports/k8s/NodeSelectorRequirement.go | 17 - pods/imports/k8s/NodeSelectorTerm.go | 13 - pods/imports/k8s/NodeSpec.go | 29 - pods/imports/k8s/NonResourceAttributes.go | 11 - pods/imports/k8s/NonResourcePolicyRule.go | 23 - .../k8s/NonResourcePolicyRuleV1Beta3.go | 23 - pods/imports/k8s/ObjectFieldSelector.go | 11 - pods/imports/k8s/ObjectMeta.go | 82 - pods/imports/k8s/ObjectMetricSourceV2.go | 13 - pods/imports/k8s/ObjectReference.go | 31 - .../k8s/OpaqueDeviceConfigurationV1Alpha3.go | 17 - pods/imports/k8s/Overhead.go | 9 - pods/imports/k8s/OwnerReference.go | 31 - pods/imports/k8s/ParamKind.go | 15 - pods/imports/k8s/ParamKindV1Alpha1.go | 15 - pods/imports/k8s/ParamKindV1Beta1.go | 15 - pods/imports/k8s/ParamRef.go | 39 - pods/imports/k8s/ParamRefV1Alpha1.go | 37 - pods/imports/k8s/ParamRefV1Beta1.go | 39 - pods/imports/k8s/ParentReferenceV1Beta1.go | 15 - pods/imports/k8s/PersistentVolumeClaimSpec.go | 44 - .../k8s/PersistentVolumeClaimTemplate.go | 15 - .../k8s/PersistentVolumeClaimVolumeSource.go | 17 - pods/imports/k8s/PersistentVolumeSpec.go | 103 - .../k8s/PhotonPersistentDiskVolumeSource.go | 13 - pods/imports/k8s/PodAffinity.go | 15 - pods/imports/k8s/PodAffinityTerm.go | 31 - pods/imports/k8s/PodAntiAffinity.go | 15 - pods/imports/k8s/PodDisruptionBudgetSpec.go | 29 - pods/imports/k8s/PodDnsConfig.go | 19 - pods/imports/k8s/PodDnsConfigOption.go | 10 - pods/imports/k8s/PodFailurePolicy.go | 11 - .../PodFailurePolicyOnExitCodesRequirement.go | 29 - .../PodFailurePolicyOnPodConditionsPattern.go | 17 - pods/imports/k8s/PodFailurePolicyRule.go | 29 - pods/imports/k8s/PodOs.go | 11 - pods/imports/k8s/PodReadinessGate.go | 9 - pods/imports/k8s/PodResourceClaim.go | 25 - .../k8s/PodSchedulingContextSpecV1Alpha3.go | 13 - pods/imports/k8s/PodSchedulingGate.go | 11 - pods/imports/k8s/PodSecurityContext.go | 63 - pods/imports/k8s/PodSpec.go | 183 - pods/imports/k8s/PodTemplateSpec.go | 15 - pods/imports/k8s/PodsMetricSourceV2.go | 13 - pods/imports/k8s/PolicyRule.go | 27 - pods/imports/k8s/PolicyRulesWithSubjects.go | 19 - .../k8s/PolicyRulesWithSubjectsV1Beta3.go | 19 - pods/imports/k8s/PortworxVolumeSource.go | 17 - pods/imports/k8s/Preconditions.go | 11 - pods/imports/k8s/PreferredSchedulingTerm.go | 11 - .../PriorityLevelConfigurationReference.go | 9 - ...orityLevelConfigurationReferenceV1Beta3.go | 9 - .../k8s/PriorityLevelConfigurationSpec.go | 19 - .../PriorityLevelConfigurationSpecV1Beta3.go | 19 - pods/imports/k8s/Probe.go | 47 - pods/imports/k8s/ProjectedVolumeSource.go | 15 - pods/imports/k8s/Quantity.go | 63 - pods/imports/k8s/Quantity__checks.go | 24 - pods/imports/k8s/Quantity__no_checks.go | 14 - pods/imports/k8s/QueuingConfiguration.go | 19 - .../k8s/QueuingConfigurationV1Beta3.go | 19 - pods/imports/k8s/QuobyteVolumeSource.go | 29 - pods/imports/k8s/RbdPersistentVolumeSource.go | 51 - pods/imports/k8s/RbdVolumeSource.go | 51 - pods/imports/k8s/ReplicaSetSpec.go | 27 - pods/imports/k8s/ReplicationControllerSpec.go | 27 - pods/imports/k8s/ResourceAttributes.go | 43 - pods/imports/k8s/ResourceClaim.go | 13 - pods/imports/k8s/ResourceClaimSpecV1Alpha3.go | 17 - .../k8s/ResourceClaimTemplateSpecV1Alpha3.go | 15 - pods/imports/k8s/ResourceFieldSelector.go | 13 - pods/imports/k8s/ResourceMetricSourceV2.go | 11 - pods/imports/k8s/ResourcePolicyRule.go | 27 - pods/imports/k8s/ResourcePolicyRuleV1Beta3.go | 27 - pods/imports/k8s/ResourcePoolV1Alpha3.go | 23 - pods/imports/k8s/ResourceQuotaSpec.go | 19 - pods/imports/k8s/ResourceRequirements.go | 21 - pods/imports/k8s/ResourceSliceSpecV1Alpha3.go | 37 - pods/imports/k8s/RoleRef.go | 13 - pods/imports/k8s/RollingUpdateDaemonSet.go | 15 - pods/imports/k8s/RollingUpdateDeployment.go | 19 - .../k8s/RollingUpdateStatefulSetStrategy.go | 17 - pods/imports/k8s/RuleWithOperations.go | 35 - .../k8s/ScaleIoPersistentVolumeSource.go | 39 - pods/imports/k8s/ScaleIoVolumeSource.go | 41 - pods/imports/k8s/ScaleSpec.go | 9 - pods/imports/k8s/Scheduling.go | 13 - pods/imports/k8s/ScopeSelector.go | 9 - .../k8s/ScopedResourceSelectorRequirement.go | 17 - pods/imports/k8s/SeLinuxOptions.go | 15 - pods/imports/k8s/SeccompProfile.go | 17 - pods/imports/k8s/SecretEnvSource.go | 15 - pods/imports/k8s/SecretKeySelector.go | 17 - pods/imports/k8s/SecretProjection.go | 19 - pods/imports/k8s/SecretReference.go | 13 - pods/imports/k8s/SecretVolumeSource.go | 25 - pods/imports/k8s/SecurityContext.go | 65 - pods/imports/k8s/SelectableField.go | 11 - .../k8s/SelfSubjectAccessReviewSpec.go | 13 - .../imports/k8s/SelfSubjectRulesReviewSpec.go | 11 - .../k8s/ServiceAccountSubjectV1Beta3.go | 15 - .../k8s/ServiceAccountTokenProjection.go | 21 - pods/imports/k8s/ServiceBackendPort.go | 13 - pods/imports/k8s/ServiceCidrSpecV1Beta1.go | 9 - pods/imports/k8s/ServicePort.go | 40 - pods/imports/k8s/ServiceReference.go | 23 - pods/imports/k8s/ServiceSpec.go | 91 - pods/imports/k8s/SessionAffinityConfig.go | 9 - pods/imports/k8s/SleepAction.go | 9 - pods/imports/k8s/StatefulSetOrdinals.go | 14 - ...SetPersistentVolumeClaimRetentionPolicy.go | 15 - pods/imports/k8s/StatefulSetSpec.go | 51 - pods/imports/k8s/StatefulSetUpdateStrategy.go | 17 - pods/imports/k8s/StatusCause.go | 23 - pods/imports/k8s/StatusDetails.go | 29 - .../k8s/StorageOsPersistentVolumeSource.go | 27 - pods/imports/k8s/StorageOsVolumeSource.go | 27 - .../StorageVersionMigrationSpecV1Alpha1.go | 15 - pods/imports/k8s/Subject.go | 25 - pods/imports/k8s/SubjectAccessReviewSpec.go | 23 - pods/imports/k8s/SubjectV1Beta3.go | 19 - pods/imports/k8s/SuccessPolicy.go | 9 - pods/imports/k8s/SuccessPolicyRule.go | 17 - pods/imports/k8s/Sysctl.go | 11 - pods/imports/k8s/Taint.go | 24 - pods/imports/k8s/TcpSocketAction.go | 13 - pods/imports/k8s/TokenRequest.go | 15 - pods/imports/k8s/TokenRequestSpec.go | 19 - pods/imports/k8s/TokenReviewSpec.go | 13 - pods/imports/k8s/Toleration.go | 29 - .../k8s/TopologySelectorLabelRequirement.go | 15 - pods/imports/k8s/TopologySelectorTerm.go | 11 - pods/imports/k8s/TopologySpreadConstraint.go | 50 - pods/imports/k8s/TypedLocalObjectReference.go | 15 - pods/imports/k8s/TypedObjectReference.go | 16 - pods/imports/k8s/UserSubjectV1Beta3.go | 11 - .../ValidatingAdmissionPolicyBindingSpec.go | 41 - ...atingAdmissionPolicyBindingSpecV1Alpha1.go | 41 - ...datingAdmissionPolicyBindingSpecV1Beta1.go | 41 - .../k8s/ValidatingAdmissionPolicySpec.go | 56 - .../ValidatingAdmissionPolicySpecV1Alpha1.go | 56 - .../ValidatingAdmissionPolicySpecV1Beta1.go | 56 - pods/imports/k8s/ValidatingWebhook.go | 102 - pods/imports/k8s/Validation.go | 48 - pods/imports/k8s/ValidationRule.go | 67 - pods/imports/k8s/ValidationV1Alpha1.go | 48 - pods/imports/k8s/ValidationV1Beta1.go | 48 - pods/imports/k8s/Variable.go | 17 - pods/imports/k8s/VariableV1Alpha1.go | 15 - pods/imports/k8s/VariableV1Beta1.go | 17 - pods/imports/k8s/Volume.go | 116 - pods/imports/k8s/VolumeAttachmentSource.go | 15 - pods/imports/k8s/VolumeAttachmentSpec.go | 15 - pods/imports/k8s/VolumeDevice.go | 11 - pods/imports/k8s/VolumeMount.go | 45 - pods/imports/k8s/VolumeNodeAffinity.go | 9 - pods/imports/k8s/VolumeNodeResources.go | 11 - pods/imports/k8s/VolumeProjection.go | 25 - .../imports/k8s/VolumeResourceRequirements.go | 15 - .../k8s/VsphereVirtualDiskVolumeSource.go | 17 - pods/imports/k8s/WebhookClientConfig.go | 29 - pods/imports/k8s/WebhookConversion.go | 13 - pods/imports/k8s/WeightedPodAffinityTerm.go | 13 - .../k8s/WindowsSecurityContextOptions.go | 21 - pods/imports/k8s/internal/types.go | 5 - pods/imports/k8s/jsii/jsii.go | 28 - pods/imports/k8s/jsii/k8s-0.0.0.tgz | Bin 746722 -> 0 bytes pods/imports/k8s/main.go | 5314 ----------------- pods/imports/k8s/version | 1 - .../monitoringcoreoscom/ServiceMonitor.go | 317 - .../ServiceMonitorProps.go | 13 - .../monitoringcoreoscom/ServiceMonitorSpec.go | 47 - .../ServiceMonitorSpecAttachMetadata.go | 11 - .../ServiceMonitorSpecEndpoints.go | 83 - ...erviceMonitorSpecEndpointsAuthorization.go | 17 - ...orSpecEndpointsAuthorizationCredentials.go | 17 - .../ServiceMonitorSpecEndpointsBasicAuth.go | 13 - ...ceMonitorSpecEndpointsBasicAuthPassword.go | 17 - ...ceMonitorSpecEndpointsBasicAuthUsername.go | 17 - ...ceMonitorSpecEndpointsBearerTokenSecret.go | 20 - ...ceMonitorSpecEndpointsMetricRelabelings.go | 35 - ...torSpecEndpointsMetricRelabelingsAction.go | 34 - .../ServiceMonitorSpecEndpointsOauth2.go | 20 - ...rviceMonitorSpecEndpointsOauth2ClientId.go | 11 - ...torSpecEndpointsOauth2ClientIdConfigMap.go | 15 - ...onitorSpecEndpointsOauth2ClientIdSecret.go | 17 - ...eMonitorSpecEndpointsOauth2ClientSecret.go | 17 - .../ServiceMonitorSpecEndpointsRelabelings.go | 35 - ...ceMonitorSpecEndpointsRelabelingsAction.go | 34 - .../ServiceMonitorSpecEndpointsScheme.go | 16 - .../ServiceMonitorSpecEndpointsTargetPort.go | 66 - ...eMonitorSpecEndpointsTargetPort__checks.go | 24 - ...nitorSpecEndpointsTargetPort__no_checks.go | 14 - .../ServiceMonitorSpecEndpointsTlsConfig.go | 23 - .../ServiceMonitorSpecEndpointsTlsConfigCa.go | 11 - ...onitorSpecEndpointsTlsConfigCaConfigMap.go | 15 - ...ceMonitorSpecEndpointsTlsConfigCaSecret.go | 17 - ...erviceMonitorSpecEndpointsTlsConfigCert.go | 11 - ...itorSpecEndpointsTlsConfigCertConfigMap.go | 15 - ...MonitorSpecEndpointsTlsConfigCertSecret.go | 17 - ...eMonitorSpecEndpointsTlsConfigKeySecret.go | 17 - .../ServiceMonitorSpecNamespaceSelector.go | 11 - .../ServiceMonitorSpecSelector.go | 15 - ...viceMonitorSpecSelectorMatchExpressions.go | 17 - .../ServiceMonitor__checks.go | 66 - .../ServiceMonitor__no_checks.go | 26 - .../monitoringcoreoscom/internal/types.go | 5 - pods/imports/monitoringcoreoscom/jsii/jsii.go | 28 - .../jsii/monitoringcoreoscom-0.0.0.tgz | Bin 34560 -> 0 bytes pods/imports/monitoringcoreoscom/main.go | 197 - pods/imports/monitoringcoreoscom/version | 1 - pods/pods.go | 414 +- pods/pods_test.go | 33 +- 1023 files changed, 838 insertions(+), 81221 deletions(-) delete mode 100644 pods/cdk8s.yaml delete mode 100644 pods/environment/Justfile delete mode 100644 pods/environment/README.md delete mode 100644 pods/environment/environment.go delete mode 100644 pods/environment/go.mod delete mode 100644 pods/environment/go.sum delete mode 100644 pods/environment/kind.yml delete mode 100644 pods/imports/k8s/Affinity.go delete mode 100644 pods/imports/k8s/AggregationRule.go delete mode 100644 pods/imports/k8s/ApiServiceSpec.go delete mode 100644 pods/imports/k8s/AppArmorProfile.go delete mode 100644 pods/imports/k8s/AuditAnnotation.go delete mode 100644 pods/imports/k8s/AuditAnnotationV1Alpha1.go delete mode 100644 pods/imports/k8s/AuditAnnotationV1Beta1.go delete mode 100644 pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go delete mode 100644 pods/imports/k8s/AzureDiskVolumeSource.go delete mode 100644 pods/imports/k8s/AzureFilePersistentVolumeSource.go delete mode 100644 pods/imports/k8s/AzureFileVolumeSource.go delete mode 100644 pods/imports/k8s/BasicDeviceV1Alpha3.go delete mode 100644 pods/imports/k8s/BoundObjectReference.go delete mode 100644 pods/imports/k8s/Capabilities.go delete mode 100644 pods/imports/k8s/CelDeviceSelectorV1Alpha3.go delete mode 100644 pods/imports/k8s/CephFsPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/CephFsVolumeSource.go delete mode 100644 pods/imports/k8s/CertificateSigningRequestSpec.go delete mode 100644 pods/imports/k8s/CinderPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/CinderVolumeSource.go delete mode 100644 pods/imports/k8s/ClientIpConfig.go delete mode 100644 pods/imports/k8s/ClusterTrustBundleProjection.go delete mode 100644 pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go delete mode 100644 pods/imports/k8s/ComponentCondition.go delete mode 100644 pods/imports/k8s/ConfigMapEnvSource.go delete mode 100644 pods/imports/k8s/ConfigMapKeySelector.go delete mode 100644 pods/imports/k8s/ConfigMapNodeConfigSource.go delete mode 100644 pods/imports/k8s/ConfigMapProjection.go delete mode 100644 pods/imports/k8s/ConfigMapVolumeSource.go delete mode 100644 pods/imports/k8s/Container.go delete mode 100644 pods/imports/k8s/ContainerPort.go delete mode 100644 pods/imports/k8s/ContainerResizePolicy.go delete mode 100644 pods/imports/k8s/ContainerResourceMetricSourceV2.go delete mode 100644 pods/imports/k8s/CronJobSpec.go delete mode 100644 pods/imports/k8s/CrossVersionObjectReference.go delete mode 100644 pods/imports/k8s/CrossVersionObjectReferenceV2.go delete mode 100644 pods/imports/k8s/CsiDriverSpec.go delete mode 100644 pods/imports/k8s/CsiNodeDriver.go delete mode 100644 pods/imports/k8s/CsiNodeSpec.go delete mode 100644 pods/imports/k8s/CsiPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/CsiVolumeSource.go delete mode 100644 pods/imports/k8s/CustomResourceColumnDefinition.go delete mode 100644 pods/imports/k8s/CustomResourceConversion.go delete mode 100644 pods/imports/k8s/CustomResourceDefinitionNames.go delete mode 100644 pods/imports/k8s/CustomResourceDefinitionSpec.go delete mode 100644 pods/imports/k8s/CustomResourceDefinitionVersion.go delete mode 100644 pods/imports/k8s/CustomResourceSubresourceScale.go delete mode 100644 pods/imports/k8s/CustomResourceSubresources.go delete mode 100644 pods/imports/k8s/CustomResourceValidation.go delete mode 100644 pods/imports/k8s/DaemonSetSpec.go delete mode 100644 pods/imports/k8s/DaemonSetUpdateStrategy.go delete mode 100644 pods/imports/k8s/DeleteOptions.go delete mode 100644 pods/imports/k8s/DeploymentSpec.go delete mode 100644 pods/imports/k8s/DeploymentStrategy.go delete mode 100644 pods/imports/k8s/DeviceAttributeV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceClaimV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceClassSpecV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceConstraintV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceRequestV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceSelectorV1Alpha3.go delete mode 100644 pods/imports/k8s/DeviceV1Alpha3.go delete mode 100644 pods/imports/k8s/DownwardApiProjection.go delete mode 100644 pods/imports/k8s/DownwardApiVolumeFile.go delete mode 100644 pods/imports/k8s/DownwardApiVolumeSource.go delete mode 100644 pods/imports/k8s/EmptyDirVolumeSource.go delete mode 100644 pods/imports/k8s/Endpoint.go delete mode 100644 pods/imports/k8s/EndpointAddress.go delete mode 100644 pods/imports/k8s/EndpointConditions.go delete mode 100644 pods/imports/k8s/EndpointHints.go delete mode 100644 pods/imports/k8s/EndpointPort.go delete mode 100644 pods/imports/k8s/EndpointSubset.go delete mode 100644 pods/imports/k8s/EnvFromSource.go delete mode 100644 pods/imports/k8s/EnvVar.go delete mode 100644 pods/imports/k8s/EnvVarSource.go delete mode 100644 pods/imports/k8s/EphemeralContainer.go delete mode 100644 pods/imports/k8s/EphemeralVolumeSource.go delete mode 100644 pods/imports/k8s/EventSeries.go delete mode 100644 pods/imports/k8s/EventSource.go delete mode 100644 pods/imports/k8s/ExecAction.go delete mode 100644 pods/imports/k8s/ExemptPriorityLevelConfiguration.go delete mode 100644 pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go delete mode 100644 pods/imports/k8s/ExternalDocumentation.go delete mode 100644 pods/imports/k8s/ExternalMetricSourceV2.go delete mode 100644 pods/imports/k8s/FcVolumeSource.go delete mode 100644 pods/imports/k8s/FieldSelectorAttributes.go delete mode 100644 pods/imports/k8s/FieldSelectorRequirement.go delete mode 100644 pods/imports/k8s/FlexPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/FlexVolumeSource.go delete mode 100644 pods/imports/k8s/FlockerVolumeSource.go delete mode 100644 pods/imports/k8s/FlowDistinguisherMethod.go delete mode 100644 pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go delete mode 100644 pods/imports/k8s/FlowSchemaSpec.go delete mode 100644 pods/imports/k8s/FlowSchemaSpecV1Beta3.go delete mode 100644 pods/imports/k8s/ForZone.go delete mode 100644 pods/imports/k8s/GcePersistentDiskVolumeSource.go delete mode 100644 pods/imports/k8s/GitRepoVolumeSource.go delete mode 100644 pods/imports/k8s/GlusterfsPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/GlusterfsVolumeSource.go delete mode 100644 pods/imports/k8s/GroupSubjectV1Beta3.go delete mode 100644 pods/imports/k8s/GroupVersionResourceV1Alpha1.go delete mode 100644 pods/imports/k8s/GrpcAction.go delete mode 100644 pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go delete mode 100644 pods/imports/k8s/HorizontalPodAutoscalerSpec.go delete mode 100644 pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go delete mode 100644 pods/imports/k8s/HostAlias.go delete mode 100644 pods/imports/k8s/HostPathVolumeSource.go delete mode 100644 pods/imports/k8s/HpaScalingPolicyV2.go delete mode 100644 pods/imports/k8s/HpaScalingRulesV2.go delete mode 100644 pods/imports/k8s/HttpGetAction.go delete mode 100644 pods/imports/k8s/HttpHeader.go delete mode 100644 pods/imports/k8s/HttpIngressPath.go delete mode 100644 pods/imports/k8s/HttpIngressRuleValue.go delete mode 100644 pods/imports/k8s/ImageVolumeSource.go delete mode 100644 pods/imports/k8s/IngressBackend.go delete mode 100644 pods/imports/k8s/IngressClassParametersReference.go delete mode 100644 pods/imports/k8s/IngressClassSpec.go delete mode 100644 pods/imports/k8s/IngressRule.go delete mode 100644 pods/imports/k8s/IngressServiceBackend.go delete mode 100644 pods/imports/k8s/IngressSpec.go delete mode 100644 pods/imports/k8s/IngressTls.go delete mode 100644 pods/imports/k8s/IntOrString.go delete mode 100644 pods/imports/k8s/IntOrString__checks.go delete mode 100644 pods/imports/k8s/IntOrString__no_checks.go delete mode 100644 pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go delete mode 100644 pods/imports/k8s/IpAddressSpecV1Beta1.go delete mode 100644 pods/imports/k8s/IpBlock.go delete mode 100644 pods/imports/k8s/IscsiPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/IscsiVolumeSource.go delete mode 100644 pods/imports/k8s/JobSpec.go delete mode 100644 pods/imports/k8s/JobTemplateSpec.go delete mode 100644 pods/imports/k8s/JsonSchemaProps.go delete mode 100644 pods/imports/k8s/KeyToPath.go delete mode 100644 pods/imports/k8s/KubeApiService.go delete mode 100644 pods/imports/k8s/KubeApiServiceList.go delete mode 100644 pods/imports/k8s/KubeApiServiceListProps.go delete mode 100644 pods/imports/k8s/KubeApiServiceList__checks.go delete mode 100644 pods/imports/k8s/KubeApiServiceList__no_checks.go delete mode 100644 pods/imports/k8s/KubeApiServiceProps.go delete mode 100644 pods/imports/k8s/KubeApiService__checks.go delete mode 100644 pods/imports/k8s/KubeApiService__no_checks.go delete mode 100644 pods/imports/k8s/KubeBinding.go delete mode 100644 pods/imports/k8s/KubeBindingProps.go delete mode 100644 pods/imports/k8s/KubeBinding__checks.go delete mode 100644 pods/imports/k8s/KubeBinding__no_checks.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequest.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequestList.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequestListProps.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequestList__checks.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequestProps.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequest__checks.go delete mode 100644 pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go delete mode 100644 pods/imports/k8s/KubeClusterRole.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBinding.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBindingList.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBindingListProps.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBindingList__checks.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBindingProps.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBinding__checks.go delete mode 100644 pods/imports/k8s/KubeClusterRoleBinding__no_checks.go delete mode 100644 pods/imports/k8s/KubeClusterRoleList.go delete mode 100644 pods/imports/k8s/KubeClusterRoleListProps.go delete mode 100644 pods/imports/k8s/KubeClusterRoleList__checks.go delete mode 100644 pods/imports/k8s/KubeClusterRoleList__no_checks.go delete mode 100644 pods/imports/k8s/KubeClusterRoleProps.go delete mode 100644 pods/imports/k8s/KubeClusterRole__checks.go delete mode 100644 pods/imports/k8s/KubeClusterRole__no_checks.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeComponentStatus.go delete mode 100644 pods/imports/k8s/KubeComponentStatusList.go delete mode 100644 pods/imports/k8s/KubeComponentStatusListProps.go delete mode 100644 pods/imports/k8s/KubeComponentStatusList__checks.go delete mode 100644 pods/imports/k8s/KubeComponentStatusList__no_checks.go delete mode 100644 pods/imports/k8s/KubeComponentStatusProps.go delete mode 100644 pods/imports/k8s/KubeComponentStatus__checks.go delete mode 100644 pods/imports/k8s/KubeComponentStatus__no_checks.go delete mode 100644 pods/imports/k8s/KubeConfigMap.go delete mode 100644 pods/imports/k8s/KubeConfigMapList.go delete mode 100644 pods/imports/k8s/KubeConfigMapListProps.go delete mode 100644 pods/imports/k8s/KubeConfigMapList__checks.go delete mode 100644 pods/imports/k8s/KubeConfigMapList__no_checks.go delete mode 100644 pods/imports/k8s/KubeConfigMapProps.go delete mode 100644 pods/imports/k8s/KubeConfigMap__checks.go delete mode 100644 pods/imports/k8s/KubeConfigMap__no_checks.go delete mode 100644 pods/imports/k8s/KubeControllerRevision.go delete mode 100644 pods/imports/k8s/KubeControllerRevisionList.go delete mode 100644 pods/imports/k8s/KubeControllerRevisionListProps.go delete mode 100644 pods/imports/k8s/KubeControllerRevisionList__checks.go delete mode 100644 pods/imports/k8s/KubeControllerRevisionList__no_checks.go delete mode 100644 pods/imports/k8s/KubeControllerRevisionProps.go delete mode 100644 pods/imports/k8s/KubeControllerRevision__checks.go delete mode 100644 pods/imports/k8s/KubeControllerRevision__no_checks.go delete mode 100644 pods/imports/k8s/KubeCronJob.go delete mode 100644 pods/imports/k8s/KubeCronJobList.go delete mode 100644 pods/imports/k8s/KubeCronJobListProps.go delete mode 100644 pods/imports/k8s/KubeCronJobList__checks.go delete mode 100644 pods/imports/k8s/KubeCronJobList__no_checks.go delete mode 100644 pods/imports/k8s/KubeCronJobProps.go delete mode 100644 pods/imports/k8s/KubeCronJob__checks.go delete mode 100644 pods/imports/k8s/KubeCronJob__no_checks.go delete mode 100644 pods/imports/k8s/KubeCsiDriver.go delete mode 100644 pods/imports/k8s/KubeCsiDriverList.go delete mode 100644 pods/imports/k8s/KubeCsiDriverListProps.go delete mode 100644 pods/imports/k8s/KubeCsiDriverList__checks.go delete mode 100644 pods/imports/k8s/KubeCsiDriverList__no_checks.go delete mode 100644 pods/imports/k8s/KubeCsiDriverProps.go delete mode 100644 pods/imports/k8s/KubeCsiDriver__checks.go delete mode 100644 pods/imports/k8s/KubeCsiDriver__no_checks.go delete mode 100644 pods/imports/k8s/KubeCsiNode.go delete mode 100644 pods/imports/k8s/KubeCsiNodeList.go delete mode 100644 pods/imports/k8s/KubeCsiNodeListProps.go delete mode 100644 pods/imports/k8s/KubeCsiNodeList__checks.go delete mode 100644 pods/imports/k8s/KubeCsiNodeList__no_checks.go delete mode 100644 pods/imports/k8s/KubeCsiNodeProps.go delete mode 100644 pods/imports/k8s/KubeCsiNode__checks.go delete mode 100644 pods/imports/k8s/KubeCsiNode__no_checks.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacity.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacityList.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacityListProps.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacityList__checks.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacityProps.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacity__checks.go delete mode 100644 pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinition.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionList.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionListProps.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinitionProps.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinition__checks.go delete mode 100644 pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go delete mode 100644 pods/imports/k8s/KubeDaemonSet.go delete mode 100644 pods/imports/k8s/KubeDaemonSetList.go delete mode 100644 pods/imports/k8s/KubeDaemonSetListProps.go delete mode 100644 pods/imports/k8s/KubeDaemonSetList__checks.go delete mode 100644 pods/imports/k8s/KubeDaemonSetList__no_checks.go delete mode 100644 pods/imports/k8s/KubeDaemonSetProps.go delete mode 100644 pods/imports/k8s/KubeDaemonSet__checks.go delete mode 100644 pods/imports/k8s/KubeDaemonSet__no_checks.go delete mode 100644 pods/imports/k8s/KubeDeployment.go delete mode 100644 pods/imports/k8s/KubeDeploymentList.go delete mode 100644 pods/imports/k8s/KubeDeploymentListProps.go delete mode 100644 pods/imports/k8s/KubeDeploymentList__checks.go delete mode 100644 pods/imports/k8s/KubeDeploymentList__no_checks.go delete mode 100644 pods/imports/k8s/KubeDeploymentProps.go delete mode 100644 pods/imports/k8s/KubeDeployment__checks.go delete mode 100644 pods/imports/k8s/KubeDeployment__no_checks.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeEndpointSlice.go delete mode 100644 pods/imports/k8s/KubeEndpointSliceList.go delete mode 100644 pods/imports/k8s/KubeEndpointSliceListProps.go delete mode 100644 pods/imports/k8s/KubeEndpointSliceList__checks.go delete mode 100644 pods/imports/k8s/KubeEndpointSliceList__no_checks.go delete mode 100644 pods/imports/k8s/KubeEndpointSliceProps.go delete mode 100644 pods/imports/k8s/KubeEndpointSlice__checks.go delete mode 100644 pods/imports/k8s/KubeEndpointSlice__no_checks.go delete mode 100644 pods/imports/k8s/KubeEndpoints.go delete mode 100644 pods/imports/k8s/KubeEndpointsList.go delete mode 100644 pods/imports/k8s/KubeEndpointsListProps.go delete mode 100644 pods/imports/k8s/KubeEndpointsList__checks.go delete mode 100644 pods/imports/k8s/KubeEndpointsList__no_checks.go delete mode 100644 pods/imports/k8s/KubeEndpointsProps.go delete mode 100644 pods/imports/k8s/KubeEndpoints__checks.go delete mode 100644 pods/imports/k8s/KubeEndpoints__no_checks.go delete mode 100644 pods/imports/k8s/KubeEvent.go delete mode 100644 pods/imports/k8s/KubeEventList.go delete mode 100644 pods/imports/k8s/KubeEventListProps.go delete mode 100644 pods/imports/k8s/KubeEventList__checks.go delete mode 100644 pods/imports/k8s/KubeEventList__no_checks.go delete mode 100644 pods/imports/k8s/KubeEventProps.go delete mode 100644 pods/imports/k8s/KubeEvent__checks.go delete mode 100644 pods/imports/k8s/KubeEvent__no_checks.go delete mode 100644 pods/imports/k8s/KubeEviction.go delete mode 100644 pods/imports/k8s/KubeEvictionProps.go delete mode 100644 pods/imports/k8s/KubeEviction__checks.go delete mode 100644 pods/imports/k8s/KubeEviction__no_checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchema.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaList.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaListProps.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaListV1Beta3.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaList__checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaList__no_checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaProps.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaV1Beta3.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchema__checks.go delete mode 100644 pods/imports/k8s/KubeFlowSchema__no_checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscaler.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerList.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go delete mode 100644 pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go delete mode 100644 pods/imports/k8s/KubeIngress.go delete mode 100644 pods/imports/k8s/KubeIngressClass.go delete mode 100644 pods/imports/k8s/KubeIngressClassList.go delete mode 100644 pods/imports/k8s/KubeIngressClassListProps.go delete mode 100644 pods/imports/k8s/KubeIngressClassList__checks.go delete mode 100644 pods/imports/k8s/KubeIngressClassList__no_checks.go delete mode 100644 pods/imports/k8s/KubeIngressClassProps.go delete mode 100644 pods/imports/k8s/KubeIngressClass__checks.go delete mode 100644 pods/imports/k8s/KubeIngressClass__no_checks.go delete mode 100644 pods/imports/k8s/KubeIngressList.go delete mode 100644 pods/imports/k8s/KubeIngressListProps.go delete mode 100644 pods/imports/k8s/KubeIngressList__checks.go delete mode 100644 pods/imports/k8s/KubeIngressList__no_checks.go delete mode 100644 pods/imports/k8s/KubeIngressProps.go delete mode 100644 pods/imports/k8s/KubeIngress__checks.go delete mode 100644 pods/imports/k8s/KubeIngress__no_checks.go delete mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1.go delete mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1.go delete mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeJob.go delete mode 100644 pods/imports/k8s/KubeJobList.go delete mode 100644 pods/imports/k8s/KubeJobListProps.go delete mode 100644 pods/imports/k8s/KubeJobList__checks.go delete mode 100644 pods/imports/k8s/KubeJobList__no_checks.go delete mode 100644 pods/imports/k8s/KubeJobProps.go delete mode 100644 pods/imports/k8s/KubeJob__checks.go delete mode 100644 pods/imports/k8s/KubeJob__no_checks.go delete mode 100644 pods/imports/k8s/KubeLease.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeLeaseList.go delete mode 100644 pods/imports/k8s/KubeLeaseListProps.go delete mode 100644 pods/imports/k8s/KubeLeaseList__checks.go delete mode 100644 pods/imports/k8s/KubeLeaseList__no_checks.go delete mode 100644 pods/imports/k8s/KubeLeaseProps.go delete mode 100644 pods/imports/k8s/KubeLease__checks.go delete mode 100644 pods/imports/k8s/KubeLease__no_checks.go delete mode 100644 pods/imports/k8s/KubeLimitRange.go delete mode 100644 pods/imports/k8s/KubeLimitRangeList.go delete mode 100644 pods/imports/k8s/KubeLimitRangeListProps.go delete mode 100644 pods/imports/k8s/KubeLimitRangeList__checks.go delete mode 100644 pods/imports/k8s/KubeLimitRangeList__no_checks.go delete mode 100644 pods/imports/k8s/KubeLimitRangeProps.go delete mode 100644 pods/imports/k8s/KubeLimitRange__checks.go delete mode 100644 pods/imports/k8s/KubeLimitRange__no_checks.go delete mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReview.go delete mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go delete mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go delete mode 100644 pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfiguration.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationList.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go delete mode 100644 pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go delete mode 100644 pods/imports/k8s/KubeNamespace.go delete mode 100644 pods/imports/k8s/KubeNamespaceList.go delete mode 100644 pods/imports/k8s/KubeNamespaceListProps.go delete mode 100644 pods/imports/k8s/KubeNamespaceList__checks.go delete mode 100644 pods/imports/k8s/KubeNamespaceList__no_checks.go delete mode 100644 pods/imports/k8s/KubeNamespaceProps.go delete mode 100644 pods/imports/k8s/KubeNamespace__checks.go delete mode 100644 pods/imports/k8s/KubeNamespace__no_checks.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicy.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicyList.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicyListProps.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicyList__checks.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicyList__no_checks.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicyProps.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicy__checks.go delete mode 100644 pods/imports/k8s/KubeNetworkPolicy__no_checks.go delete mode 100644 pods/imports/k8s/KubeNode.go delete mode 100644 pods/imports/k8s/KubeNodeList.go delete mode 100644 pods/imports/k8s/KubeNodeListProps.go delete mode 100644 pods/imports/k8s/KubeNodeList__checks.go delete mode 100644 pods/imports/k8s/KubeNodeList__no_checks.go delete mode 100644 pods/imports/k8s/KubeNodeProps.go delete mode 100644 pods/imports/k8s/KubeNode__checks.go delete mode 100644 pods/imports/k8s/KubeNode__no_checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolume.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaim.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaimList.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaimListProps.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaimList__checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaimProps.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaim__checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeList.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeListProps.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeList__checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeList__no_checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolumeProps.go delete mode 100644 pods/imports/k8s/KubePersistentVolume__checks.go delete mode 100644 pods/imports/k8s/KubePersistentVolume__no_checks.go delete mode 100644 pods/imports/k8s/KubePod.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudget.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudgetList.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudgetListProps.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudgetList__checks.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudgetProps.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudget__checks.go delete mode 100644 pods/imports/k8s/KubePodDisruptionBudget__no_checks.go delete mode 100644 pods/imports/k8s/KubePodList.go delete mode 100644 pods/imports/k8s/KubePodListProps.go delete mode 100644 pods/imports/k8s/KubePodList__checks.go delete mode 100644 pods/imports/k8s/KubePodList__no_checks.go delete mode 100644 pods/imports/k8s/KubePodProps.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubePodTemplate.go delete mode 100644 pods/imports/k8s/KubePodTemplateList.go delete mode 100644 pods/imports/k8s/KubePodTemplateListProps.go delete mode 100644 pods/imports/k8s/KubePodTemplateList__checks.go delete mode 100644 pods/imports/k8s/KubePodTemplateList__no_checks.go delete mode 100644 pods/imports/k8s/KubePodTemplateProps.go delete mode 100644 pods/imports/k8s/KubePodTemplate__checks.go delete mode 100644 pods/imports/k8s/KubePodTemplate__no_checks.go delete mode 100644 pods/imports/k8s/KubePod__checks.go delete mode 100644 pods/imports/k8s/KubePod__no_checks.go delete mode 100644 pods/imports/k8s/KubePriorityClass.go delete mode 100644 pods/imports/k8s/KubePriorityClassList.go delete mode 100644 pods/imports/k8s/KubePriorityClassListProps.go delete mode 100644 pods/imports/k8s/KubePriorityClassList__checks.go delete mode 100644 pods/imports/k8s/KubePriorityClassList__no_checks.go delete mode 100644 pods/imports/k8s/KubePriorityClassProps.go delete mode 100644 pods/imports/k8s/KubePriorityClass__checks.go delete mode 100644 pods/imports/k8s/KubePriorityClass__no_checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfiguration.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationList.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListProps.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationProps.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfiguration__checks.go delete mode 100644 pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go delete mode 100644 pods/imports/k8s/KubeReplicaSet.go delete mode 100644 pods/imports/k8s/KubeReplicaSetList.go delete mode 100644 pods/imports/k8s/KubeReplicaSetListProps.go delete mode 100644 pods/imports/k8s/KubeReplicaSetList__checks.go delete mode 100644 pods/imports/k8s/KubeReplicaSetList__no_checks.go delete mode 100644 pods/imports/k8s/KubeReplicaSetProps.go delete mode 100644 pods/imports/k8s/KubeReplicaSet__checks.go delete mode 100644 pods/imports/k8s/KubeReplicaSet__no_checks.go delete mode 100644 pods/imports/k8s/KubeReplicationController.go delete mode 100644 pods/imports/k8s/KubeReplicationControllerList.go delete mode 100644 pods/imports/k8s/KubeReplicationControllerListProps.go delete mode 100644 pods/imports/k8s/KubeReplicationControllerList__checks.go delete mode 100644 pods/imports/k8s/KubeReplicationControllerList__no_checks.go delete mode 100644 pods/imports/k8s/KubeReplicationControllerProps.go delete mode 100644 pods/imports/k8s/KubeReplicationController__checks.go delete mode 100644 pods/imports/k8s/KubeReplicationController__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceQuota.go delete mode 100644 pods/imports/k8s/KubeResourceQuotaList.go delete mode 100644 pods/imports/k8s/KubeResourceQuotaListProps.go delete mode 100644 pods/imports/k8s/KubeResourceQuotaList__checks.go delete mode 100644 pods/imports/k8s/KubeResourceQuotaList__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceQuotaProps.go delete mode 100644 pods/imports/k8s/KubeResourceQuota__checks.go delete mode 100644 pods/imports/k8s/KubeResourceQuota__no_checks.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go delete mode 100644 pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go delete mode 100644 pods/imports/k8s/KubeRole.go delete mode 100644 pods/imports/k8s/KubeRoleBinding.go delete mode 100644 pods/imports/k8s/KubeRoleBindingList.go delete mode 100644 pods/imports/k8s/KubeRoleBindingListProps.go delete mode 100644 pods/imports/k8s/KubeRoleBindingList__checks.go delete mode 100644 pods/imports/k8s/KubeRoleBindingList__no_checks.go delete mode 100644 pods/imports/k8s/KubeRoleBindingProps.go delete mode 100644 pods/imports/k8s/KubeRoleBinding__checks.go delete mode 100644 pods/imports/k8s/KubeRoleBinding__no_checks.go delete mode 100644 pods/imports/k8s/KubeRoleList.go delete mode 100644 pods/imports/k8s/KubeRoleListProps.go delete mode 100644 pods/imports/k8s/KubeRoleList__checks.go delete mode 100644 pods/imports/k8s/KubeRoleList__no_checks.go delete mode 100644 pods/imports/k8s/KubeRoleProps.go delete mode 100644 pods/imports/k8s/KubeRole__checks.go delete mode 100644 pods/imports/k8s/KubeRole__no_checks.go delete mode 100644 pods/imports/k8s/KubeRuntimeClass.go delete mode 100644 pods/imports/k8s/KubeRuntimeClassList.go delete mode 100644 pods/imports/k8s/KubeRuntimeClassListProps.go delete mode 100644 pods/imports/k8s/KubeRuntimeClassList__checks.go delete mode 100644 pods/imports/k8s/KubeRuntimeClassList__no_checks.go delete mode 100644 pods/imports/k8s/KubeRuntimeClassProps.go delete mode 100644 pods/imports/k8s/KubeRuntimeClass__checks.go delete mode 100644 pods/imports/k8s/KubeRuntimeClass__no_checks.go delete mode 100644 pods/imports/k8s/KubeScale.go delete mode 100644 pods/imports/k8s/KubeScaleProps.go delete mode 100644 pods/imports/k8s/KubeScale__checks.go delete mode 100644 pods/imports/k8s/KubeScale__no_checks.go delete mode 100644 pods/imports/k8s/KubeSecret.go delete mode 100644 pods/imports/k8s/KubeSecretList.go delete mode 100644 pods/imports/k8s/KubeSecretListProps.go delete mode 100644 pods/imports/k8s/KubeSecretList__checks.go delete mode 100644 pods/imports/k8s/KubeSecretList__no_checks.go delete mode 100644 pods/imports/k8s/KubeSecretProps.go delete mode 100644 pods/imports/k8s/KubeSecret__checks.go delete mode 100644 pods/imports/k8s/KubeSecret__no_checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReview.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReview.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewProps.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReview__checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectReview__no_checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReview.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go delete mode 100644 pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go delete mode 100644 pods/imports/k8s/KubeService.go delete mode 100644 pods/imports/k8s/KubeServiceAccount.go delete mode 100644 pods/imports/k8s/KubeServiceAccountList.go delete mode 100644 pods/imports/k8s/KubeServiceAccountListProps.go delete mode 100644 pods/imports/k8s/KubeServiceAccountList__checks.go delete mode 100644 pods/imports/k8s/KubeServiceAccountList__no_checks.go delete mode 100644 pods/imports/k8s/KubeServiceAccountProps.go delete mode 100644 pods/imports/k8s/KubeServiceAccount__checks.go delete mode 100644 pods/imports/k8s/KubeServiceAccount__no_checks.go delete mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1.go delete mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1.go delete mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeServiceList.go delete mode 100644 pods/imports/k8s/KubeServiceListProps.go delete mode 100644 pods/imports/k8s/KubeServiceList__checks.go delete mode 100644 pods/imports/k8s/KubeServiceList__no_checks.go delete mode 100644 pods/imports/k8s/KubeServiceProps.go delete mode 100644 pods/imports/k8s/KubeService__checks.go delete mode 100644 pods/imports/k8s/KubeService__no_checks.go delete mode 100644 pods/imports/k8s/KubeStatefulSet.go delete mode 100644 pods/imports/k8s/KubeStatefulSetList.go delete mode 100644 pods/imports/k8s/KubeStatefulSetListProps.go delete mode 100644 pods/imports/k8s/KubeStatefulSetList__checks.go delete mode 100644 pods/imports/k8s/KubeStatefulSetList__no_checks.go delete mode 100644 pods/imports/k8s/KubeStatefulSetProps.go delete mode 100644 pods/imports/k8s/KubeStatefulSet__checks.go delete mode 100644 pods/imports/k8s/KubeStatefulSet__no_checks.go delete mode 100644 pods/imports/k8s/KubeStatus.go delete mode 100644 pods/imports/k8s/KubeStatusProps.go delete mode 100644 pods/imports/k8s/KubeStatus__checks.go delete mode 100644 pods/imports/k8s/KubeStatus__no_checks.go delete mode 100644 pods/imports/k8s/KubeStorageClass.go delete mode 100644 pods/imports/k8s/KubeStorageClassList.go delete mode 100644 pods/imports/k8s/KubeStorageClassListProps.go delete mode 100644 pods/imports/k8s/KubeStorageClassList__checks.go delete mode 100644 pods/imports/k8s/KubeStorageClassList__no_checks.go delete mode 100644 pods/imports/k8s/KubeStorageClassProps.go delete mode 100644 pods/imports/k8s/KubeStorageClass__checks.go delete mode 100644 pods/imports/k8s/KubeStorageClass__no_checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeSubjectAccessReview.go delete mode 100644 pods/imports/k8s/KubeSubjectAccessReviewProps.go delete mode 100644 pods/imports/k8s/KubeSubjectAccessReview__checks.go delete mode 100644 pods/imports/k8s/KubeSubjectAccessReview__no_checks.go delete mode 100644 pods/imports/k8s/KubeTokenRequest.go delete mode 100644 pods/imports/k8s/KubeTokenRequestProps.go delete mode 100644 pods/imports/k8s/KubeTokenRequest__checks.go delete mode 100644 pods/imports/k8s/KubeTokenRequest__no_checks.go delete mode 100644 pods/imports/k8s/KubeTokenReview.go delete mode 100644 pods/imports/k8s/KubeTokenReviewProps.go delete mode 100644 pods/imports/k8s/KubeTokenReview__checks.go delete mode 100644 pods/imports/k8s/KubeTokenReview__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicy.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyList.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfiguration.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationList.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go delete mode 100644 pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachment.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachmentList.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachmentListProps.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachmentList__checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachmentProps.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachment__checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttachment__no_checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go delete mode 100644 pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go delete mode 100644 pods/imports/k8s/LabelSelector.go delete mode 100644 pods/imports/k8s/LabelSelectorAttributes.go delete mode 100644 pods/imports/k8s/LabelSelectorRequirement.go delete mode 100644 pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go delete mode 100644 pods/imports/k8s/LeaseSpec.go delete mode 100644 pods/imports/k8s/Lifecycle.go delete mode 100644 pods/imports/k8s/LifecycleHandler.go delete mode 100644 pods/imports/k8s/LimitRangeItem.go delete mode 100644 pods/imports/k8s/LimitRangeSpec.go delete mode 100644 pods/imports/k8s/LimitResponse.go delete mode 100644 pods/imports/k8s/LimitResponseV1Beta3.go delete mode 100644 pods/imports/k8s/LimitedPriorityLevelConfiguration.go delete mode 100644 pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go delete mode 100644 pods/imports/k8s/ListMeta.go delete mode 100644 pods/imports/k8s/LocalObjectReference.go delete mode 100644 pods/imports/k8s/LocalVolumeSource.go delete mode 100644 pods/imports/k8s/ManagedFieldsEntry.go delete mode 100644 pods/imports/k8s/MatchCondition.go delete mode 100644 pods/imports/k8s/MatchConditionV1Alpha1.go delete mode 100644 pods/imports/k8s/MatchConditionV1Beta1.go delete mode 100644 pods/imports/k8s/MatchResources.go delete mode 100644 pods/imports/k8s/MatchResourcesV1Alpha1.go delete mode 100644 pods/imports/k8s/MatchResourcesV1Beta1.go delete mode 100644 pods/imports/k8s/MetricIdentifierV2.go delete mode 100644 pods/imports/k8s/MetricSpecV2.go delete mode 100644 pods/imports/k8s/MetricTargetV2.go delete mode 100644 pods/imports/k8s/MutatingWebhook.go delete mode 100644 pods/imports/k8s/NamedRuleWithOperations.go delete mode 100644 pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go delete mode 100644 pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go delete mode 100644 pods/imports/k8s/NamespaceSpec.go delete mode 100644 pods/imports/k8s/NetworkPolicyEgressRule.go delete mode 100644 pods/imports/k8s/NetworkPolicyIngressRule.go delete mode 100644 pods/imports/k8s/NetworkPolicyPeer.go delete mode 100644 pods/imports/k8s/NetworkPolicyPort.go delete mode 100644 pods/imports/k8s/NetworkPolicySpec.go delete mode 100644 pods/imports/k8s/NfsVolumeSource.go delete mode 100644 pods/imports/k8s/NodeAffinity.go delete mode 100644 pods/imports/k8s/NodeConfigSource.go delete mode 100644 pods/imports/k8s/NodeSelector.go delete mode 100644 pods/imports/k8s/NodeSelectorRequirement.go delete mode 100644 pods/imports/k8s/NodeSelectorTerm.go delete mode 100644 pods/imports/k8s/NodeSpec.go delete mode 100644 pods/imports/k8s/NonResourceAttributes.go delete mode 100644 pods/imports/k8s/NonResourcePolicyRule.go delete mode 100644 pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go delete mode 100644 pods/imports/k8s/ObjectFieldSelector.go delete mode 100644 pods/imports/k8s/ObjectMeta.go delete mode 100644 pods/imports/k8s/ObjectMetricSourceV2.go delete mode 100644 pods/imports/k8s/ObjectReference.go delete mode 100644 pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go delete mode 100644 pods/imports/k8s/Overhead.go delete mode 100644 pods/imports/k8s/OwnerReference.go delete mode 100644 pods/imports/k8s/ParamKind.go delete mode 100644 pods/imports/k8s/ParamKindV1Alpha1.go delete mode 100644 pods/imports/k8s/ParamKindV1Beta1.go delete mode 100644 pods/imports/k8s/ParamRef.go delete mode 100644 pods/imports/k8s/ParamRefV1Alpha1.go delete mode 100644 pods/imports/k8s/ParamRefV1Beta1.go delete mode 100644 pods/imports/k8s/ParentReferenceV1Beta1.go delete mode 100644 pods/imports/k8s/PersistentVolumeClaimSpec.go delete mode 100644 pods/imports/k8s/PersistentVolumeClaimTemplate.go delete mode 100644 pods/imports/k8s/PersistentVolumeClaimVolumeSource.go delete mode 100644 pods/imports/k8s/PersistentVolumeSpec.go delete mode 100644 pods/imports/k8s/PhotonPersistentDiskVolumeSource.go delete mode 100644 pods/imports/k8s/PodAffinity.go delete mode 100644 pods/imports/k8s/PodAffinityTerm.go delete mode 100644 pods/imports/k8s/PodAntiAffinity.go delete mode 100644 pods/imports/k8s/PodDisruptionBudgetSpec.go delete mode 100644 pods/imports/k8s/PodDnsConfig.go delete mode 100644 pods/imports/k8s/PodDnsConfigOption.go delete mode 100644 pods/imports/k8s/PodFailurePolicy.go delete mode 100644 pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go delete mode 100644 pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go delete mode 100644 pods/imports/k8s/PodFailurePolicyRule.go delete mode 100644 pods/imports/k8s/PodOs.go delete mode 100644 pods/imports/k8s/PodReadinessGate.go delete mode 100644 pods/imports/k8s/PodResourceClaim.go delete mode 100644 pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go delete mode 100644 pods/imports/k8s/PodSchedulingGate.go delete mode 100644 pods/imports/k8s/PodSecurityContext.go delete mode 100644 pods/imports/k8s/PodSpec.go delete mode 100644 pods/imports/k8s/PodTemplateSpec.go delete mode 100644 pods/imports/k8s/PodsMetricSourceV2.go delete mode 100644 pods/imports/k8s/PolicyRule.go delete mode 100644 pods/imports/k8s/PolicyRulesWithSubjects.go delete mode 100644 pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go delete mode 100644 pods/imports/k8s/PortworxVolumeSource.go delete mode 100644 pods/imports/k8s/Preconditions.go delete mode 100644 pods/imports/k8s/PreferredSchedulingTerm.go delete mode 100644 pods/imports/k8s/PriorityLevelConfigurationReference.go delete mode 100644 pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go delete mode 100644 pods/imports/k8s/PriorityLevelConfigurationSpec.go delete mode 100644 pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go delete mode 100644 pods/imports/k8s/Probe.go delete mode 100644 pods/imports/k8s/ProjectedVolumeSource.go delete mode 100644 pods/imports/k8s/Quantity.go delete mode 100644 pods/imports/k8s/Quantity__checks.go delete mode 100644 pods/imports/k8s/Quantity__no_checks.go delete mode 100644 pods/imports/k8s/QueuingConfiguration.go delete mode 100644 pods/imports/k8s/QueuingConfigurationV1Beta3.go delete mode 100644 pods/imports/k8s/QuobyteVolumeSource.go delete mode 100644 pods/imports/k8s/RbdPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/RbdVolumeSource.go delete mode 100644 pods/imports/k8s/ReplicaSetSpec.go delete mode 100644 pods/imports/k8s/ReplicationControllerSpec.go delete mode 100644 pods/imports/k8s/ResourceAttributes.go delete mode 100644 pods/imports/k8s/ResourceClaim.go delete mode 100644 pods/imports/k8s/ResourceClaimSpecV1Alpha3.go delete mode 100644 pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go delete mode 100644 pods/imports/k8s/ResourceFieldSelector.go delete mode 100644 pods/imports/k8s/ResourceMetricSourceV2.go delete mode 100644 pods/imports/k8s/ResourcePolicyRule.go delete mode 100644 pods/imports/k8s/ResourcePolicyRuleV1Beta3.go delete mode 100644 pods/imports/k8s/ResourcePoolV1Alpha3.go delete mode 100644 pods/imports/k8s/ResourceQuotaSpec.go delete mode 100644 pods/imports/k8s/ResourceRequirements.go delete mode 100644 pods/imports/k8s/ResourceSliceSpecV1Alpha3.go delete mode 100644 pods/imports/k8s/RoleRef.go delete mode 100644 pods/imports/k8s/RollingUpdateDaemonSet.go delete mode 100644 pods/imports/k8s/RollingUpdateDeployment.go delete mode 100644 pods/imports/k8s/RollingUpdateStatefulSetStrategy.go delete mode 100644 pods/imports/k8s/RuleWithOperations.go delete mode 100644 pods/imports/k8s/ScaleIoPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/ScaleIoVolumeSource.go delete mode 100644 pods/imports/k8s/ScaleSpec.go delete mode 100644 pods/imports/k8s/Scheduling.go delete mode 100644 pods/imports/k8s/ScopeSelector.go delete mode 100644 pods/imports/k8s/ScopedResourceSelectorRequirement.go delete mode 100644 pods/imports/k8s/SeLinuxOptions.go delete mode 100644 pods/imports/k8s/SeccompProfile.go delete mode 100644 pods/imports/k8s/SecretEnvSource.go delete mode 100644 pods/imports/k8s/SecretKeySelector.go delete mode 100644 pods/imports/k8s/SecretProjection.go delete mode 100644 pods/imports/k8s/SecretReference.go delete mode 100644 pods/imports/k8s/SecretVolumeSource.go delete mode 100644 pods/imports/k8s/SecurityContext.go delete mode 100644 pods/imports/k8s/SelectableField.go delete mode 100644 pods/imports/k8s/SelfSubjectAccessReviewSpec.go delete mode 100644 pods/imports/k8s/SelfSubjectRulesReviewSpec.go delete mode 100644 pods/imports/k8s/ServiceAccountSubjectV1Beta3.go delete mode 100644 pods/imports/k8s/ServiceAccountTokenProjection.go delete mode 100644 pods/imports/k8s/ServiceBackendPort.go delete mode 100644 pods/imports/k8s/ServiceCidrSpecV1Beta1.go delete mode 100644 pods/imports/k8s/ServicePort.go delete mode 100644 pods/imports/k8s/ServiceReference.go delete mode 100644 pods/imports/k8s/ServiceSpec.go delete mode 100644 pods/imports/k8s/SessionAffinityConfig.go delete mode 100644 pods/imports/k8s/SleepAction.go delete mode 100644 pods/imports/k8s/StatefulSetOrdinals.go delete mode 100644 pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go delete mode 100644 pods/imports/k8s/StatefulSetSpec.go delete mode 100644 pods/imports/k8s/StatefulSetUpdateStrategy.go delete mode 100644 pods/imports/k8s/StatusCause.go delete mode 100644 pods/imports/k8s/StatusDetails.go delete mode 100644 pods/imports/k8s/StorageOsPersistentVolumeSource.go delete mode 100644 pods/imports/k8s/StorageOsVolumeSource.go delete mode 100644 pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go delete mode 100644 pods/imports/k8s/Subject.go delete mode 100644 pods/imports/k8s/SubjectAccessReviewSpec.go delete mode 100644 pods/imports/k8s/SubjectV1Beta3.go delete mode 100644 pods/imports/k8s/SuccessPolicy.go delete mode 100644 pods/imports/k8s/SuccessPolicyRule.go delete mode 100644 pods/imports/k8s/Sysctl.go delete mode 100644 pods/imports/k8s/Taint.go delete mode 100644 pods/imports/k8s/TcpSocketAction.go delete mode 100644 pods/imports/k8s/TokenRequest.go delete mode 100644 pods/imports/k8s/TokenRequestSpec.go delete mode 100644 pods/imports/k8s/TokenReviewSpec.go delete mode 100644 pods/imports/k8s/Toleration.go delete mode 100644 pods/imports/k8s/TopologySelectorLabelRequirement.go delete mode 100644 pods/imports/k8s/TopologySelectorTerm.go delete mode 100644 pods/imports/k8s/TopologySpreadConstraint.go delete mode 100644 pods/imports/k8s/TypedLocalObjectReference.go delete mode 100644 pods/imports/k8s/TypedObjectReference.go delete mode 100644 pods/imports/k8s/UserSubjectV1Beta3.go delete mode 100644 pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go delete mode 100644 pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go delete mode 100644 pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go delete mode 100644 pods/imports/k8s/ValidatingAdmissionPolicySpec.go delete mode 100644 pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go delete mode 100644 pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go delete mode 100644 pods/imports/k8s/ValidatingWebhook.go delete mode 100644 pods/imports/k8s/Validation.go delete mode 100644 pods/imports/k8s/ValidationRule.go delete mode 100644 pods/imports/k8s/ValidationV1Alpha1.go delete mode 100644 pods/imports/k8s/ValidationV1Beta1.go delete mode 100644 pods/imports/k8s/Variable.go delete mode 100644 pods/imports/k8s/VariableV1Alpha1.go delete mode 100644 pods/imports/k8s/VariableV1Beta1.go delete mode 100644 pods/imports/k8s/Volume.go delete mode 100644 pods/imports/k8s/VolumeAttachmentSource.go delete mode 100644 pods/imports/k8s/VolumeAttachmentSpec.go delete mode 100644 pods/imports/k8s/VolumeDevice.go delete mode 100644 pods/imports/k8s/VolumeMount.go delete mode 100644 pods/imports/k8s/VolumeNodeAffinity.go delete mode 100644 pods/imports/k8s/VolumeNodeResources.go delete mode 100644 pods/imports/k8s/VolumeProjection.go delete mode 100644 pods/imports/k8s/VolumeResourceRequirements.go delete mode 100644 pods/imports/k8s/VsphereVirtualDiskVolumeSource.go delete mode 100644 pods/imports/k8s/WebhookClientConfig.go delete mode 100644 pods/imports/k8s/WebhookConversion.go delete mode 100644 pods/imports/k8s/WeightedPodAffinityTerm.go delete mode 100644 pods/imports/k8s/WindowsSecurityContextOptions.go delete mode 100644 pods/imports/k8s/internal/types.go delete mode 100644 pods/imports/k8s/jsii/jsii.go delete mode 100644 pods/imports/k8s/jsii/k8s-0.0.0.tgz delete mode 100644 pods/imports/k8s/main.go delete mode 100644 pods/imports/k8s/version delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitor.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorProps.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go delete mode 100644 pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go delete mode 100644 pods/imports/monitoringcoreoscom/internal/types.go delete mode 100644 pods/imports/monitoringcoreoscom/jsii/jsii.go delete mode 100644 pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz delete mode 100644 pods/imports/monitoringcoreoscom/main.go delete mode 100644 pods/imports/monitoringcoreoscom/version diff --git a/book/go.mod b/book/go.mod index a128209c3..428b3c87a 100644 --- a/book/go.mod +++ b/book/go.mod @@ -18,9 +18,9 @@ require ( github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.108.0 // indirect + github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/block-vision/sui-go-sdk v1.0.6 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cespare/cp v1.1.1 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -51,18 +51,18 @@ require ( github.com/rs/cors v1.11.1 // indirect github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/pflag v1.0.6 // indirect - github.com/stretchr/testify v1.10.0 // indirect + github.com/stretchr/testify v1.11.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/testcontainers/testcontainers-go v0.37.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/yuin/goldmark v1.4.13 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.25.0 // indirect + golang.org/x/mod v0.27.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/term v0.32.0 // indirect + golang.org/x/term v0.34.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.36.0 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect k8s.io/api v0.32.3 // indirect @@ -161,11 +161,11 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.11.0 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/sync v0.15.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.72.2 // indirect diff --git a/book/go.sum b/book/go.sum index 319969ad4..6b0574ddf 100644 --- a/book/go.sum +++ b/book/go.sum @@ -22,8 +22,8 @@ github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIc github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= @@ -35,8 +35,8 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -420,8 +420,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe h1:nbdqkIGOGfUAD54q1s2YBcBz/WcsxCO9HUQ4aGV5hUw= github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= @@ -482,8 +482,8 @@ golang.org/x/arch v0.11.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= @@ -495,8 +495,8 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -511,8 +511,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= @@ -521,8 +521,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -552,15 +552,15 @@ golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -573,8 +573,8 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 7a7cfefe0..450f1bda4 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -6,8 +6,9 @@ import ( "os" "strings" + v1 "k8s.io/api/core/v1" + "github.com/smartcontractkit/chainlink-testing-framework/pods" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components" @@ -66,14 +67,15 @@ func newAnvil(ctx context.Context, in *Input) (*Output, error) { Namespace: pods.S(ns), Pods: []*pods.PodConfig{ { - Name: pods.S(in.ContainerName), - Image: &in.Image, - Ports: []string{fmt.Sprintf("%s:%s", in.Port, in.Port)}, - Command: pods.S(strings.Join(entryPoint, " ")), - Limits: pods.ResourcesSmall(), - ContainerSecurityContext: &k8s.SecurityContext{ - RunAsUser: pods.I(999), - RunAsGroup: pods.I(999), + Name: pods.S(in.ContainerName), + Image: &in.Image, + Ports: []string{fmt.Sprintf("%s:%s", in.Port, in.Port)}, + Command: pods.S(strings.Join(entryPoint, " ")), + Requests: pods.ResourcesMedium(), + Limits: pods.ResourcesMedium(), + ContainerSecurityContext: &v1.SecurityContext{ + RunAsUser: pods.I64(999), + RunAsGroup: pods.I64(999), }, }, }, diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index b80a31852..40e2a7326 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -14,8 +14,10 @@ import ( "time" "github.com/aws/jsii-runtime-go" + "github.com/smartcontractkit/chainlink-testing-framework/pods" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" + + v1 "k8s.io/api/core/v1" "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" @@ -302,41 +304,42 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, Namespace: pods.S(ns), Pods: []*pods.PodConfig{ { - Name: pods.S(containerName), - Image: pods.S(in.Node.Image), - Env: &[]*k8s.EnvVar{}, - Limits: pods.ResourcesSmall(), - Ports: []string{"6688:6688", "6690:6690"}, - ContainerSecurityContext: &k8s.SecurityContext{ + Name: pods.S(containerName), + Image: pods.S(in.Node.Image), + Env: []v1.EnvVar{}, + Requests: pods.ResourcesMedium(), + Limits: pods.ResourcesMedium(), + Ports: []string{"6688:6688", "6690:6690"}, + ContainerSecurityContext: &v1.SecurityContext{ // these are specific things we need to staging cluster RunAsNonRoot: jsii.Bool(true), - RunAsUser: pods.I(14933), - RunAsGroup: pods.I(999), + RunAsUser: pods.I64(14933), + RunAsGroup: pods.I64(999), }, - ConfigMap: map[string]*string{ - "config.toml": pods.S(cfg), - "overrides.toml": pods.S(in.Node.TestConfigOverrides), - "user-overrides.toml": pods.S(in.Node.UserConfigOverrides), - "node_password": pods.S(DefaultPasswordTxt), - "apicredentials": pods.S(fmt.Sprintf(`%s - %s`, DefaultAPIUser, DefaultAPIPassword)), + ConfigMap: map[string]string{ + "config.toml": cfg, + "overrides.toml": in.Node.TestConfigOverrides, + "user-overrides.toml": in.Node.UserConfigOverrides, + "node_password": DefaultPasswordTxt, + "apicredentials": fmt.Sprintf(`%s + %s`, DefaultAPIUser, DefaultAPIPassword), }, - ConfigMapMountPath: map[string]*string{ - "config.toml": pods.S("/config/config"), - "overrides.toml": pods.S("/config/overrides"), - "user-overrides.toml": pods.S("/config/user-overrides"), - "node_password": pods.S("/config/node_password"), - "apicredentials": pods.S("/config/apicredentials"), + ConfigMapMountPath: map[string]string{ + "config.toml": "/config/config", + "overrides.toml": "/config/overrides", + "user-overrides.toml": "/config/user-overrides", + "node_password": "/config/node_password", + "apicredentials": "/config/apicredentials", }, - Secrets: map[string]*string{ - "secrets.toml": pods.S(secretsData), - "secrets-overrides.toml": pods.S(in.Node.TestSecretsOverrides), - "secrets-user-overrides.toml": pods.S(in.Node.UserSecretsOverrides), + Secrets: map[string]string{ + "secrets.toml": secretsData, + "secrets-overrides.toml": in.Node.TestSecretsOverrides, + "secrets-user-overrides.toml": in.Node.UserSecretsOverrides, }, - SecretsMountPath: map[string]*string{ - "secrets.toml": pods.S("/config/secrets"), - "secrets-overrides.toml": pods.S("/config/secrets-overrides"), - "secrets-user-overrides.toml": pods.S("/config/user-secrets-overrides"), + SecretsMountPath: map[string]string{ + "secrets.toml": "/config/secrets", + "secrets-overrides.toml": "/config/secrets-overrides", + "secrets-user-overrides.toml": "/config/user-secrets-overrides", }, Command: pods.S("chainlink -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials"), }, diff --git a/framework/components/dockercompose/go.sum b/framework/components/dockercompose/go.sum index 314cebc72..e86229bda 100644 --- a/framework/components/dockercompose/go.sum +++ b/framework/components/dockercompose/go.sum @@ -65,8 +65,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JY github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -89,8 +89,8 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= diff --git a/framework/components/fake/go.mod b/framework/components/fake/go.mod index 5312448eb..5caca9874 100644 --- a/framework/components/fake/go.mod +++ b/framework/components/fake/go.mod @@ -13,7 +13,7 @@ require ( github.com/gin-gonic/gin v1.10.1 github.com/go-resty/resty/v2 v2.16.5 github.com/smartcontractkit/chainlink-testing-framework/framework v0.0.0-00010101000000-000000000000 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.37.0 ) @@ -90,11 +90,11 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.11.0 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/framework/components/fake/go.sum b/framework/components/fake/go.sum index e2c38fb96..8d23ceea0 100644 --- a/framework/components/fake/go.sum +++ b/framework/components/fake/go.sum @@ -14,8 +14,8 @@ github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIc github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/block-vision/sui-go-sdk v1.0.6 h1:FysCc4TJC8v4BEBbCjJPDR4iR5eKqJT1dxGwsT67etg= @@ -25,8 +25,8 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= @@ -240,8 +240,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= @@ -293,29 +293,29 @@ golang.org/x/arch v0.11.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -327,22 +327,22 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index 6a0138167..fb31dab25 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -8,8 +8,9 @@ import ( "strings" "time" + v1 "k8s.io/api/core/v1" + "github.com/smartcontractkit/chainlink-testing-framework/pods" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" @@ -135,35 +136,36 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { Name: pods.S(in.Name), Image: pods.S(in.Image), Ports: []string{fmt.Sprintf("%d:%s", portToExpose, Port)}, - Env: &[]*k8s.EnvVar{ + Env: []v1.EnvVar{ { - Name: pods.S("POSTGRES_USER"), - Value: pods.S("chainlink"), + Name: "POSTGRES_USER", + Value: "chainlink", }, { - Name: pods.S("POSTGRES_PASSWORD"), - Value: pods.S("thispasswordislongenough"), + Name: "POSTGRES_PASSWORD", + Value: "thispasswordislongenough", }, { - Name: pods.S("POSTGRES_DB"), - Value: pods.S("chainlink"), + Name: "POSTGRES_DB", + Value: "chainlink", }, }, - Limits: pods.ResourcesMedium(), - ContainerSecurityContext: &k8s.SecurityContext{ - RunAsUser: pods.I(999), - RunAsGroup: pods.I(999), + Requests: pods.ResourcesLarge(), + Limits: pods.ResourcesLarge(), + ContainerSecurityContext: &v1.SecurityContext{ + RunAsUser: pods.I64(999), + RunAsGroup: pods.I64(999), }, - PodSecurityContext: &k8s.PodSecurityContext{ - FsGroup: pods.I(999), + PodSecurityContext: &v1.PodSecurityContext{ + FSGroup: pods.I64(999), }, - ConfigMap: map[string]*string{ - "init.sql": pods.S(initSQL), + ConfigMap: map[string]string{ + "init.sql": initSQL, }, - ConfigMapMountPath: map[string]*string{ - "init.sql": pods.S("/docker-entrypoint-initdb.d/init.sql"), + ConfigMapMountPath: map[string]string{ + "init.sql": "/docker-entrypoint-initdb.d/init.sql", }, - VolumeClaimTemplates: pods.SizedVolumeClaim(pods.S("4Gi")), + VolumeClaimTemplates: pods.SizedVolumeClaim("4Gi"), }, }, }) diff --git a/framework/examples/chip_ingress/go.sum b/framework/examples/chip_ingress/go.sum index 598413b85..030a566fa 100644 --- a/framework/examples/chip_ingress/go.sum +++ b/framework/examples/chip_ingress/go.sum @@ -65,8 +65,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JY github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -89,8 +89,8 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= diff --git a/framework/examples/myproject/go.mod b/framework/examples/myproject/go.mod index 620dbeedd..13fb224e5 100644 --- a/framework/examples/myproject/go.mod +++ b/framework/examples/myproject/go.mod @@ -21,16 +21,16 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.10 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.2 github.com/smartcontractkit/chainlink/v2 v2.20.0 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.37.0 ) require ( github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.108.0 // indirect + github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/bufbuild/protocompile v0.14.1 // indirect github.com/buger/goterm v1.0.4 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -302,17 +302,17 @@ require ( go.uber.org/zap v1.27.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect golang.org/x/arch v0.11.0 // indirect - golang.org/x/crypto v0.39.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.36.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/api v0.221.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect diff --git a/framework/examples/myproject/go.sum b/framework/examples/myproject/go.sum index eb8308c88..e84c2abda 100644 --- a/framework/examples/myproject/go.sum +++ b/framework/examples/myproject/go.sum @@ -121,8 +121,8 @@ github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59 h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= @@ -172,8 +172,8 @@ github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -1121,8 +1121,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -1316,8 +1316,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= @@ -1329,8 +1329,8 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1347,8 +1347,8 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= @@ -1361,8 +1361,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1400,17 +1400,17 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1423,8 +1423,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/examples/myproject_cll/go.mod b/framework/examples/myproject_cll/go.mod index 14bddb089..90168fc11 100644 --- a/framework/examples/myproject_cll/go.mod +++ b/framework/examples/myproject_cll/go.mod @@ -12,7 +12,7 @@ replace ( require ( github.com/smartcontractkit/chainlink-testing-framework/framework v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake v0.0.0-00010101000000-000000000000 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 ) require ( @@ -23,12 +23,12 @@ require ( github.com/StackExchange/wmi v1.2.1 // indirect github.com/avast/retry-go/v4 v4.6.1 // indirect github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.108.0 // indirect + github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/bits-and-blooms/bitset v1.17.0 // indirect github.com/block-vision/sui-go-sdk v1.0.6 // indirect github.com/bytedance/sonic v1.12.3 // indirect github.com/bytedance/sonic/loader v0.2.0 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect @@ -136,18 +136,18 @@ require ( go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.11.0 // indirect - golang.org/x/crypto v0.39.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.72.2 // indirect diff --git a/framework/examples/myproject_cll/go.sum b/framework/examples/myproject_cll/go.sum index 18562fc05..62daac8b3 100644 --- a/framework/examples/myproject_cll/go.sum +++ b/framework/examples/myproject_cll/go.sum @@ -20,8 +20,8 @@ github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIc github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= @@ -33,8 +33,8 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= @@ -345,8 +345,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= @@ -409,8 +409,8 @@ golang.org/x/arch v0.11.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= @@ -418,21 +418,21 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -444,14 +444,14 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -459,8 +459,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/go.mod b/framework/go.mod index 44d5bb8c4..0c82e84eb 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -12,7 +12,7 @@ require ( dario.cat/mergo v1.0.1 github.com/Masterminds/semver/v3 v3.4.0 github.com/avast/retry-go/v4 v4.6.1 - github.com/aws/jsii-runtime-go v1.108.0 + github.com/aws/jsii-runtime-go v1.126.0 github.com/block-vision/sui-go-sdk v1.0.6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/docker/docker v28.3.3+incompatible @@ -33,16 +33,17 @@ require ( github.com/rs/zerolog v1.33.0 github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.2 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.37.0 github.com/urfave/cli/v2 v2.27.7 go.opentelemetry.io/otel v1.35.0 go.opentelemetry.io/otel/sdk v1.34.0 go.opentelemetry.io/otel/trace v1.35.0 go.uber.org/multierr v1.11.0 - golang.org/x/sync v0.13.0 + golang.org/x/sync v0.16.0 google.golang.org/grpc v1.71.0 gopkg.in/guregu/null.v4 v4.0.0 + k8s.io/api v0.32.3 ) require ( @@ -70,7 +71,7 @@ require ( github.com/bytedance/sonic v1.11.6 // indirect github.com/bytedance/sonic/loader v0.1.1 // indirect github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect @@ -271,17 +272,17 @@ require ( go.uber.org/zap v1.27.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect golang.org/x/arch v0.8.0 // indirect - golang.org/x/crypto v0.37.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sys v0.32.0 // indirect - golang.org/x/term v0.31.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.30.0 // indirect + golang.org/x/tools v0.36.0 // indirect google.golang.org/api v0.221.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250124145028-65684f501c47 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250207221924-e9438ea467c6 // indirect @@ -290,7 +291,6 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect k8s.io/apimachinery v0.32.3 // indirect k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/framework/go.sum b/framework/go.sum index fab4c863a..a732eb332 100644 --- a/framework/go.sum +++ b/framework/go.sum @@ -78,8 +78,8 @@ github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= @@ -103,8 +103,8 @@ github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3z github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -774,8 +774,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= @@ -906,8 +906,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= @@ -919,8 +919,8 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -937,8 +937,8 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= @@ -951,8 +951,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -989,17 +989,17 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= -golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1012,8 +1012,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pods/README.md b/pods/README.md index 73615fc00..7da26ae09 100644 --- a/pods/README.md +++ b/pods/README.md @@ -29,20 +29,4 @@ Add new features to `pods.go`, add new tests to `pods_test.go` and make pre-comm Run `just test-deploy-cover` to check coverage. -Create additional directories for product-specific deployments if needed. - -### Importing CRDs and K8s manifests - -``` -devbox shell -# filter current cluster CRDs, grep 'monitoring' -just crds monitoring -# save it as YAML -just crd servicemonitors.monitoring.coreos.com crds/monitoring.coreos.com -# import as Go code -just import crds/monitoring.coreos.com.yml -``` - -### K8s bindings versions - -Check available `cdk8s` bindings [versions](https://github.com/cdk8s-team/cdk8s/tree/master/kubernetes-schemas). \ No newline at end of file +Create additional directories for product-specific deployments if needed. \ No newline at end of file diff --git a/pods/__snapshots__/pods_test.snap b/pods/__snapshots__/pods_test.snap index 4678b9e45..88bb8de54 100755 --- a/pods/__snapshots__/pods_test.snap +++ b/pods/__snapshots__/pods_test.snap @@ -3,51 +3,56 @@ apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-single-pod spec: + replicas: 1 selector: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-single-pod spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-single-pod spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- @@ -55,100 +60,110 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-multiple-pods spec: + replicas: 1 selector: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-multiple-pods spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-multiple-pods spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} /-/-/-/ apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-2-deployment namespace: test-multiple-pods spec: + replicas: 1 selector: matchLabels: app: test-pod-2 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-2 generated-by: pods namespace: test-multiple-pods spec: containers: - - image: nginx:latest - name: test-pod-2-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - image: nginx:latest + name: test-pod-2-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-2-svc namespace: test-multiple-pods spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-2 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- @@ -156,130 +171,143 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-custom-resources spec: + replicas: 1 selector: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-custom-resources spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 500m - memory: 2Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 2Gi + requests: + cpu: 250m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-custom-resources spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- [TestPods/test-configmaps - 1] apiVersion: v1 +data: + config.toml: test + config2.toml: test kind: ConfigMap metadata: + creationTimestamp: null name: test-pod-1-configmap namespace: test-configmaps -data: - config.toml: test - config2.toml: test /-/-/-/ apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-configmaps spec: + replicas: 1 selector: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-configmaps spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: - - mountPath: /config.toml - name: test-pod-1-configmap-volume-0 - subPath: config.toml - - mountPath: /config2.toml - name: test-pod-1-configmap-volume-1 - subPath: config2.toml - volumes: - - configMap: - items: - - key: config.toml - path: config.toml - name: test-pod-1-configmap + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volumeMounts: + - mountPath: /config.toml name: test-pod-1-configmap-volume-0 - - configMap: - items: - - key: config2.toml - path: config2.toml - name: test-pod-1-configmap + subPath: config.toml + - mountPath: /config2.toml name: test-pod-1-configmap-volume-1 + subPath: config2.toml + volumes: + - configMap: + items: + - key: config.toml + path: config.toml + name: test-pod-1-configmap + name: test-pod-1-configmap-volume-0 + - configMap: + items: + - key: config2.toml + path: config2.toml + name: test-pod-1-configmap + name: test-pod-1-configmap-volume-1 +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-configmaps spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- @@ -287,6 +315,7 @@ spec: apiVersion: v1 kind: Secret metadata: + creationTimestamp: null name: test-pod-1-secret namespace: test-secrets stringData: @@ -296,69 +325,76 @@ stringData: apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-secrets spec: + replicas: 1 selector: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-secrets spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: - - mountPath: /secret.toml - name: test-pod-1-secret-volume-0 - subPath: secret.toml - - mountPath: /secret2.toml - name: test-pod-1-secret-volume-1 - subPath: secret2.toml + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volumeMounts: + - mountPath: /secret.toml + name: test-pod-1-secret-volume-0 + subPath: secret.toml + - mountPath: /secret2.toml + name: test-pod-1-secret-volume-1 + subPath: secret2.toml volumes: - - name: test-pod-1-secret-volume-0 - secret: - items: - - key: secret.toml - path: secret.toml - secretName: test-pod-1-secret - - name: test-pod-1-secret-volume-1 - secret: - items: - - key: secret2.toml - path: secret2.toml - secretName: test-pod-1-secret + - name: test-pod-1-secret-volume-0 + secret: + items: + - key: secret.toml + path: secret.toml + secretName: test-pod-1-secret + - name: test-pod-1-secret-volume-1 + secret: + items: + - key: secret2.toml + path: secret2.toml + secretName: test-pod-1-secret +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-secrets spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- @@ -366,6 +402,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-instances spec: @@ -374,44 +411,47 @@ spec: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-instances spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-instances spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- @@ -515,51 +555,56 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: test-pod-1-deployment namespace: test-services spec: + replicas: 1 selector: matchLabels: app: test-pod-1 generated-by: pods + strategy: {} template: metadata: - annotations: {} + creationTimestamp: null labels: app: test-pod-1 generated-by: pods namespace: test-services spec: containers: - - image: nginx:latest - name: test-pod-1-container - ports: - - containerPort: 80 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - image: nginx:latest + name: test-pod-1-container + ports: + - containerPort: 80 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: test-pod-1-svc namespace: test-services spec: ports: - - name: port-0 - port: 80 - targetPort: 80 + - name: port-0 + port: 80 + targetPort: 80 selector: app: test-pod-1 generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- @@ -567,18 +612,22 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: + creationTimestamp: null name: anvil-deployment namespace: test-command spec: + replicas: 1 selector: matchLabels: app: anvil chain.link/component: cl generated-by: pods + strategy: {} template: metadata: annotations: custom-annotation: custom + creationTimestamp: null labels: app: anvil chain.link/component: cl @@ -586,39 +635,41 @@ spec: namespace: test-command spec: containers: - - command: - - anvil - - --host=0.0.0.0 - - -b=1 - image: ghcr.io/foundry-rs/foundry - name: anvil-container - ports: - - containerPort: 8545 - name: port-0 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: [] - volumes: [] + - command: + - anvil + - --host=0.0.0.0 + - -b=1 + image: ghcr.io/foundry-rs/foundry + name: anvil-container + ports: + - containerPort: 8545 + name: port-0 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +status: {} /-/-/-/ apiVersion: v1 kind: Service metadata: + creationTimestamp: null name: anvil-svc namespace: test-command spec: ports: - - name: port-0 - port: 8545 - targetPort: 8545 + - name: port-0 + port: 8545 + targetPort: 8545 selector: app: anvil chain.link/component: cl generated-by: pods type: LoadBalancer +status: + loadBalancer: {} --- diff --git a/pods/cdk8s.yaml b/pods/cdk8s.yaml deleted file mode 100644 index 617154f50..000000000 --- a/pods/cdk8s.yaml +++ /dev/null @@ -1,5 +0,0 @@ -language: go -app: go run . -imports: - - k8s@1.31.0 - - crds/monitoring.coreos.com.yml diff --git a/pods/client.go b/pods/client.go index bac353f49..386366d59 100644 --- a/pods/client.go +++ b/pods/client.go @@ -219,4 +219,4 @@ func (k *API) waitAllPodsReady(ctx context.Context, timeout time.Duration) (bool time.Sleep(retryInterval) } } -} +} \ No newline at end of file diff --git a/pods/defaults.go b/pods/defaults.go index e5b66bc60..9917934e0 100644 --- a/pods/defaults.go +++ b/pods/defaults.go @@ -1,123 +1,92 @@ package pods import ( - "fmt" "sort" - "github.com/aws/jsii-runtime-go" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func S(s string) *string { return jsii.String(s) } -func I(s int) *float64 { return jsii.Number(s) } - -func SortedKeys(m map[string]*string) []string { - keys := make([]string, 0, len(m)) - for key := range m { - keys = append(keys, key) +func Resources(cpu, mem string) map[string]string { + return map[string]string{ + "cpu": cpu, + "memory": mem, } - sort.Strings(keys) - return keys } -func CheckHostPort(host, port string) *k8s.Probe { - return &k8s.Probe{ - Exec: &k8s.ExecAction{ - Command: &[]*string{S("timeout"), S("1"), S("bash"), S("-ClientSet"), S("echo"), S(">"), S(fmt.Sprintf("/dev/tcp/%s/%s", host, port)), S("&&"), S("exit"), S("0"), S("||"), S("exit"), S("1")}, - }, - InitialDelaySeconds: I(5), - FailureThreshold: I(10), - PeriodSeconds: I(1), - TimeoutSeconds: I(2), - } +func S(s string) *string { + return &s } -// Resources is a helper function to define container resources -func Resources(cpu, mem string) map[string]k8s.Quantity { - return map[string]k8s.Quantity{ - "cpu": k8s.Quantity_FromString(S(cpu)), - "memory": k8s.Quantity_FromString(S(mem)), - } +func I(i int) *int32 { + val := int32(i) + return &val } -func ResourcesSmall() map[string]k8s.Quantity { - return map[string]k8s.Quantity{ - "cpu": k8s.Quantity_FromString(S("250m")), - "memory": k8s.Quantity_FromString(S("1Gi")), - } +func I64(i int64) *int64 { + return &i +} + +func Bool(b bool) *bool { + return &b } -func ResourcesMedium() map[string]k8s.Quantity { - return map[string]k8s.Quantity{ - "cpu": k8s.Quantity_FromString(S("4")), - "memory": k8s.Quantity_FromString(S("4Gi")), +// ResourcesSmall returns small resource limits/requests +func ResourcesSmall() map[string]string { + return map[string]string{ + "cpu": "250m", + "memory": "512Mi", } } -func CLUserContainerSecurityCtx() *k8s.SecurityContext { // coverage-ignore - return &k8s.SecurityContext{ - RunAsNonRoot: jsii.Bool(true), - RunAsUser: jsii.Number(14933), - RunAsGroup: jsii.Number(999), +// ResourcesMedium returns medium resource limits/requests +func ResourcesMedium() map[string]string { + return map[string]string{ + "cpu": "500m", + "memory": "1024Mi", } } -func PostgreSQL(name string, image string, requests, limits map[string]k8s.Quantity, dbSize *string) *PodConfig { // coverage-ignore - p := &PodConfig{ - Name: S(name), - Image: S(image), - Ports: []string{"5432:5432"}, - Env: &[]*k8s.EnvVar{ - { - Name: S("POSTGRES_USER"), - Value: S("chainlink"), - }, - { - Name: S("POSTGRES_PASSWORD"), - Value: S("thispasswordislongenough"), - }, - { - Name: S("POSTGRES_DB"), - Value: S("chainlink"), - }, - }, - Limits: requests, - Requests: limits, - // 999 is the default postgres user - ContainerSecurityContext: &k8s.SecurityContext{ - RunAsUser: jsii.Number(999), - RunAsGroup: jsii.Number(999), - }, - PodSecurityContext: &k8s.PodSecurityContext{ - FsGroup: jsii.Number(999), - }, - ConfigMap: map[string]*string{ - "init.sql": S(` -ALTER USER chainlink WITH SUPERUSER; -`), - }, - ConfigMapMountPath: map[string]*string{ - "init.sql": S("/docker-entrypoint-initdb.d/init.sql"), - }, +// ResourcesLarge returns large resource limits/requests +func ResourcesLarge() map[string]string { + return map[string]string{ + "cpu": "1", + "memory": "1Gi", } - if dbSize != nil { - p.VolumeClaimTemplates = SizedVolumeClaim(dbSize) +} + +// SortedKeys returns sorted keys of a map +func SortedKeys(m map[string]string) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) } - return p + sort.Strings(keys) + return keys } -func SizedVolumeClaim(size *string) []*k8s.KubePersistentVolumeClaimProps { // coverage-ignore - return []*k8s.KubePersistentVolumeClaimProps{ + +func SizedVolumeClaim(size string) []v1.PersistentVolumeClaim { + storageQuantity, err := resource.ParseQuantity(size) + if err != nil { + // Default to 10Gi if parsing fails + storageQuantity = resource.MustParse("10Gi") + } + + return []v1.PersistentVolumeClaim{ { - Metadata: &k8s.ObjectMeta{ - Name: S("data"), + ObjectMeta: metav1.ObjectMeta{ + Name: "data", }, - Spec: &k8s.PersistentVolumeClaimSpec{ - AccessModes: &[]*string{S("ReadWriteOnce")}, + Spec: v1.PersistentVolumeClaimSpec{ + AccessModes: []v1.PersistentVolumeAccessMode{ + v1.ReadWriteOnce, + }, StorageClassName: S("gp3"), - Resources: &k8s.VolumeResourceRequirements{ - Requests: &map[string]k8s.Quantity{ - "storage": k8s.Quantity_FromString(size), + Resources: v1.VolumeResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceStorage: storageQuantity, }, }, }, diff --git a/pods/environment/Justfile b/pods/environment/Justfile deleted file mode 100644 index a66a708c5..000000000 --- a/pods/environment/Justfile +++ /dev/null @@ -1,28 +0,0 @@ -# Print all the commands -default: - @just --list - -# Create a local Kind environment -kind-up: - kind create cluster --name pods --config kind.yml - kind load docker-image job-distributor:local --name pods - -# Destroy a local Kind environment -kind-down: - kind delete cluster --name pods - -# Switch K8s context to local Kind environment -ctx: - kubectl config use-context kind-pods - -# Start environment example -start: - go run environment.go - -# Stop environment example -stop: - kubectl delete ns pods - -# Forwards all services ports using Kubefwd -forward namespace: - sudo kubefwd -n {{namespace}} svc diff --git a/pods/environment/README.md b/pods/environment/README.md deleted file mode 100644 index 870ef25a8..000000000 --- a/pods/environment/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Real-world API Usage Example - -```bash -just kind-up && just ctx - -``` \ No newline at end of file diff --git a/pods/environment/environment.go b/pods/environment/environment.go deleted file mode 100644 index 4af70c2cc..000000000 --- a/pods/environment/environment.go +++ /dev/null @@ -1,142 +0,0 @@ -package main - -import ( - "fmt" - "strconv" - "time" - - "github.com/smartcontractkit/chainlink-testing-framework/pods" - p "github.com/smartcontractkit/chainlink-testing-framework/pods" - - "github.com/smartcontractkit/chainlink-testing-framework/framework/clclient" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components/clnode" -) - -func main() { - if err := NewEnvironment(); err != nil { - panic(err) - } - - time.Sleep(5 * time.Minute) - - c, err := clclient.New([]*clnode.Output{ - {Node: &clnode.NodeOut{APIAuthUser: clnode.DefaultAPIUser, APIAuthPassword: clnode.DefaultAPIPassword, ExternalURL: "http://localhost:6688"}}, - {Node: &clnode.NodeOut{APIAuthUser: clnode.DefaultAPIUser, APIAuthPassword: clnode.DefaultAPIPassword, ExternalURL: "http://localhost:6689"}}, - }) - if err != nil { - panic(err) - } - for _, n := range c { - _, resp, err := n.GetForwarders() - if err != nil { - panic(err) - } - fmt.Println(resp) - } -} - -func NewEnvironment() error { - ns := "pods" - chainlinkImg := "public.ecr.aws/chainlink/chainlink:v2.17.0" - pgImg := "postgres:15" - - cfg := &p.Config{ - Namespace: p.S(ns), - Pods: []*p.PodConfig{ - { - Name: p.S("anvil"), - Labels: map[string]string{"chain.link/component": "anvil"}, - Image: p.S("ghcr.io/foundry-rs/foundry:stable"), - Ports: []string{"8545:8545"}, - Command: p.S("anvil --host=0.0.0.0 -b=1 --mixed-mining"), - }, - }, - } - - _, err := p.Run(cfg) - if err != nil { - return err - } - - for i := 0; i < 2; i++ { - cfg.Pods = append(cfg.Pods, &p.PodConfig{ - Name: p.S(fmt.Sprintf("node-%d", i)), - Labels: map[string]string{"chain.link/component": "cl", "instance": strconv.Itoa(i)}, - ContainerSecurityContext: p.CLUserContainerSecurityCtx(), - Image: p.S(chainlinkImg), - Ports: []string{"6688:6688", "6690:6690"}, - ConfigMap: map[string]*string{ - "config.toml": p.S(` - [WebServer] - AllowOrigins = "*" - HTTPWriteTimeout = "3m0s" - HTTPPort = 6688 - SecureCookies = false - SessionTimeout = "999h0m0s" - [WebServer.TLS] - HTTPSPort = 0 - [Feature] - LogPoller = true - [OCR2] - Enabled = true - DatabaseTimeout = '1s' - [P2P.V2] - Enabled = true - ListenAddresses = ['0.0.0.0:5001'] - [[EVM]] - ChainID = "31337" - AutoCreateKey = true - FinalityDepth = 1 - MinContractPayment = "0" - [[EVM.Nodes]] - Name = "Anvil" - WSURL = "ws://anvil-svc:8545" - HTTPURL = "http://anvil-svc:8545" - `), - "apicredentials": p.S(fmt.Sprintf(`%s - %s`, clnode.DefaultAPIUser, clnode.DefaultAPIPassword)), - }, - ConfigMapMountPath: map[string]*string{ - "config.toml": p.S("/config.toml"), - "apicredentials": p.S("/apicredentials"), - }, - Secrets: map[string]*string{"secrets.toml": p.S(fmt.Sprintf(` - [Database] - URL = 'postgresql://chainlink:thispasswordislongenough@postgres-%d-svc:5432/chainlink?sslmode=disable' - [Password] - Keystore = 'thispasswordislongenough' - `, i))}, - SecretsMountPath: map[string]*string{"secrets.toml": p.S("/secrets.toml")}, - Command: p.S("chainlink -c /config.toml -s /secrets.toml node start -d -a /apicredentials"), - }) - cfg.Pods = append(cfg.Pods, p.PostgreSQL(fmt.Sprintf("postgres-%d", i), pgImg, p.ResourcesSmall(), p.ResourcesSmall(), p.S("10Gi"))) - } - - _, err = p.Run(cfg) - if err != nil { - return err - } - - return p.NewForwarder(pods.Client). - Forward([]p.PortForwardConfig{ - { - ServiceName: "anvil-svc", - LocalPort: 8545, - ContainerPort: 8545, - Namespace: ns, - }, - { - ServiceName: "node-0-svc", - LocalPort: 6688, - ContainerPort: 6688, - Namespace: ns, - }, - { - ServiceName: "node-1-svc", - LocalPort: 6689, - ContainerPort: 6688, - Namespace: ns, - }, - }, - ) -} diff --git a/pods/environment/go.mod b/pods/environment/go.mod deleted file mode 100644 index d0de8c7c2..000000000 --- a/pods/environment/go.mod +++ /dev/null @@ -1,158 +0,0 @@ -module github.com/smartcontractkit/chainlink-testing-framework/pods/example-env - -go 1.24.3 - -replace github.com/smartcontractkit/chainlink-testing-framework/pods => ../ - -require ( - github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 - github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 -) - -require ( - dario.cat/mergo v1.0.1 // indirect - github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/Masterminds/semver/v3 v3.3.1 // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/avast/retry-go/v4 v4.6.1 // indirect - github.com/aws/aws-sdk-go-v2 v1.31.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.27.39 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.37 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect - github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.23.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 // indirect - github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.108.0 // indirect - github.com/aws/smithy-go v1.21.0 // indirect - github.com/bits-and-blooms/bitset v1.17.0 // indirect - github.com/block-vision/sui-go-sdk v1.0.6 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/consensys/bavard v0.1.22 // indirect - github.com/consensys/gnark-crypto v0.14.0 // indirect - github.com/containerd/log v0.1.0 // indirect - github.com/containerd/platforms v1.0.0-rc.1 // indirect - github.com/cpuguy83/dockercfg v0.3.2 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect - github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect - github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.0.4+incompatible // indirect - github.com/docker/go-connections v0.5.0 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.8.2 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-ethereum v1.15.0 // indirect - github.com/ethereum/go-verkle v0.2.2 // indirect - github.com/fatih/color v1.18.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.6 // indirect - github.com/go-logr/logr v1.4.3 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.21.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.23.0 // indirect - github.com/go-playground/locales v0.14.1 // indirect - github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.22.1 // indirect - github.com/go-resty/resty/v2 v2.15.3 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.9 // indirect - github.com/google/go-cmp v0.7.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/websocket v1.5.1 // indirect - github.com/holiman/uint256 v1.3.2 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.11 // indirect - github.com/leodido/go-urn v1.4.0 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/magiconair/properties v1.8.10 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/patternmatcher v0.6.0 // indirect - github.com/moby/spdystream v0.5.0 // indirect - github.com/moby/sys/sequential v0.6.0 // indirect - github.com/moby/sys/user v0.3.0 // indirect - github.com/moby/sys/userns v0.1.0 // indirect - github.com/moby/term v0.5.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/morikuni/aec v1.0.0 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/rs/zerolog v1.33.0 // indirect - github.com/shirou/gopsutil/v4 v4.25.1 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.11.1 // indirect - github.com/supranational/blst v0.3.13 // indirect - github.com/testcontainers/testcontainers-go v0.37.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.1 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect - github.com/x448/float16 v0.8.4 // indirect - github.com/yuin/goldmark v1.4.13 // indirect - github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.8.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.26.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.7.0 // indirect - golang.org/x/tools v0.35.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect - gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect - gopkg.in/guregu/null.v4 v4.0.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 // indirect - k8s.io/client-go v0.32.3 // indirect - k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - rsc.io/tmplfunc v0.0.3 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) diff --git a/pods/environment/go.sum b/pods/environment/go.sum deleted file mode 100644 index 9cd1abadc..000000000 --- a/pods/environment/go.sum +++ /dev/null @@ -1,446 +0,0 @@ -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= -github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= -github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= -github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= -github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= -github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= -github.com/aws/aws-sdk-go-v2/config v1.27.39 h1:FCylu78eTGzW1ynHcongXK9YHtoXD5AiiUqq3YfJYjU= -github.com/aws/aws-sdk-go-v2/config v1.27.39/go.mod h1:wczj2hbyskP4LjMKBEZwPRO1shXY+GsQleab+ZXT2ik= -github.com/aws/aws-sdk-go-v2/credentials v1.17.37 h1:G2aOH01yW8X373JK419THj5QVqu9vKEwxSEsGxihoW0= -github.com/aws/aws-sdk-go-v2/credentials v1.17.37/go.mod h1:0ecCjlb7htYCptRD45lXJ6aJDQac6D2NlKGpZqyTG6A= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.3 h1:W2M3kQSuN1+FXgV2wMv1JMWPxw/37wBN87QHYDuTV0Y= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.3/go.mod h1:WyLS5qwXHtjKAONYZq/4ewdd+hcVsa3LBu77Ow5uj3k= -github.com/aws/aws-sdk-go-v2/service/sso v1.23.3 h1:rs4JCczF805+FDv2tRhZ1NU0RB2H6ryAvsWPanAr72Y= -github.com/aws/aws-sdk-go-v2/service/sso v1.23.3/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 h1:S7EPdMVZod8BGKQQPTBK+FcX9g7bKR7c4+HxWqHP7Vg= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= -github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8= -github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= -github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= -github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= -github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= -github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/block-vision/sui-go-sdk v1.0.6 h1:FysCc4TJC8v4BEBbCjJPDR4iR5eKqJT1dxGwsT67etg= -github.com/block-vision/sui-go-sdk v1.0.6/go.mod h1:FyK1vGE8lWm9QA1fdQpf1agfXQSMbPT8AV1BICgx6d8= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A= -github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E= -github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E= -github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= -github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= -github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= -github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= -github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= -github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= -github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.0.4+incompatible h1:JNNkBctYKurkw6FrHfKqY0nKIDf5nrbxjVBtS+cdcok= -github.com/docker/docker v28.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= -github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= -github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv09/1ME4= -github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= -github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= -github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= -github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= -github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= -github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= -github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= -github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= -github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= -github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= -github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= -github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA= -github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= -github.com/go-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8= -github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= -github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= -github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= -github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= -github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= -github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= -github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= -github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= -github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= -github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= -github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= -github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= -github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= -github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= -github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= -github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= -github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= -github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= -github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= -github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= -github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= -github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= -github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= -github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= -github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= -github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 h1:i8+fR76yn0yxAFAkdhy7BgIB2VJgwec9BqnSPp6fZ7M= -github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24/go.mod h1:gdW2dlrvHcTawMCtAIXQYZcZ9Ggx16L55kA7wONvzJ4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= -github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= -github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= -github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= -github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= -github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= -github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= -gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= -gopkg.in/guregu/null.v4 v4.0.0 h1:1Wm3S1WEA2I26Kq+6vcW+w0gcDo44YKYD7YIEJNHDjg= -gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= -gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= -k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pods/environment/kind.yml b/pods/environment/kind.yml deleted file mode 100644 index b14515232..000000000 --- a/pods/environment/kind.yml +++ /dev/null @@ -1,9 +0,0 @@ -kind: Cluster -apiVersion: kind.x-k8s.io/v1alpha4 -nodes: - - role: control-plane - image: kindest/node:v1.32.0 - - role: worker - image: kindest/node:v1.32.0 - - role: worker - image: kindest/node:v1.32.0 \ No newline at end of file diff --git a/pods/go.mod b/pods/go.mod index 23c8c1af0..8276dc026 100644 --- a/pods/go.mod +++ b/pods/go.mod @@ -3,20 +3,21 @@ module github.com/smartcontractkit/chainlink-testing-framework/pods go 1.24.0 require ( - github.com/aws/constructs-go/constructs/v10 v10.4.2 - github.com/aws/jsii-runtime-go v1.108.0 - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 + github.com/aws/jsii-runtime-go v1.126.0 + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 github.com/gkampitakis/go-snaps v0.5.11 github.com/google/uuid v1.6.0 github.com/rs/zerolog v1.33.0 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 k8s.io/api v0.32.3 k8s.io/apimachinery v0.32.3 k8s.io/client-go v0.32.3 + sigs.k8s.io/yaml v1.4.0 ) require ( - github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect + github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/fatih/color v1.18.0 // indirect @@ -58,15 +59,15 @@ require ( github.com/x448/float16 v0.8.4 // indirect github.com/yuin/goldmark v1.4.13 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/term v0.29.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.7.0 // indirect - golang.org/x/tools v0.30.0 // indirect + golang.org/x/tools v0.36.0 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -76,5 +77,4 @@ require ( k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/pods/go.sum b/pods/go.sum index 8cd7dab43..c65e63094 100644 --- a/pods/go.sum +++ b/pods/go.sum @@ -1,13 +1,13 @@ -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.108.0 h1:QpDNcb1w4aJ/cZ5okWXQCKvcD1LCR5TndgYIeNscjM4= -github.com/aws/jsii-runtime-go v1.108.0/go.mod h1:SA8nwFENRBvPlIVEKzb9VKAoplOYEo4HF31X5C3vQ9A= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49 h1:AS6CXSv8foNnJX9J4Wi66GCiKRVI/kRMPiYZb5PcfuE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.69.49/go.mod h1:P5WKg7wRU4ScR4l39NvI2r7GwxTdlRKIzddOksG8S8U= +github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= +github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= +github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -118,8 +118,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -144,35 +144,35 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -180,8 +180,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pods/imports/k8s/Affinity.go b/pods/imports/k8s/Affinity.go deleted file mode 100644 index 29ea37335..000000000 --- a/pods/imports/k8s/Affinity.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Affinity is a group of affinity scheduling rules. -type Affinity struct { - // Describes node affinity scheduling rules for the pod. - NodeAffinity *NodeAffinity `field:"optional" json:"nodeAffinity" yaml:"nodeAffinity"` - // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - PodAffinity *PodAffinity `field:"optional" json:"podAffinity" yaml:"podAffinity"` - // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - PodAntiAffinity *PodAntiAffinity `field:"optional" json:"podAntiAffinity" yaml:"podAntiAffinity"` -} - diff --git a/pods/imports/k8s/AggregationRule.go b/pods/imports/k8s/AggregationRule.go deleted file mode 100644 index 59313544c..000000000 --- a/pods/imports/k8s/AggregationRule.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole. -type AggregationRule struct { - // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. - // - // If any of the selectors match, then the ClusterRole's permissions will be added. - ClusterRoleSelectors *[]*LabelSelector `field:"optional" json:"clusterRoleSelectors" yaml:"clusterRoleSelectors"` -} - diff --git a/pods/imports/k8s/ApiServiceSpec.go b/pods/imports/k8s/ApiServiceSpec.go deleted file mode 100644 index aa063da97..000000000 --- a/pods/imports/k8s/ApiServiceSpec.go +++ /dev/null @@ -1,35 +0,0 @@ -package k8s - - -// APIServiceSpec contains information for locating and communicating with a server. -// -// Only https is supported, though you are able to disable certificate verification. -type ApiServiceSpec struct { - // GroupPriorityMinimum is the priority this group should have at least. - // - // Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s - GroupPriorityMinimum *float64 `field:"required" json:"groupPriorityMinimum" yaml:"groupPriorityMinimum"` - // VersionPriority controls the ordering of this API version inside of its group. - // - // Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version), then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. - VersionPriority *float64 `field:"required" json:"versionPriority" yaml:"versionPriority"` - // CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. - // - // If unspecified, system trust roots on the apiserver are used. - CaBundle *string `field:"optional" json:"caBundle" yaml:"caBundle"` - // Group is the API group name this server hosts. - Group *string `field:"optional" json:"group" yaml:"group"` - // InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. - // - // This is strongly discouraged. You should use the CABundle instead. - InsecureSkipTlsVerify *bool `field:"optional" json:"insecureSkipTlsVerify" yaml:"insecureSkipTlsVerify"` - // Service is a reference to the service for this API server. - // - // It must communicate on port 443. If the Service is nil, that means the handling for the API groupversion is handled locally on this server. The call will simply delegate to the normal handler chain to be fulfilled. - Service *ServiceReference `field:"optional" json:"service" yaml:"service"` - // Version is the API version this server hosts. - // - // For example, "v1". - Version *string `field:"optional" json:"version" yaml:"version"` -} - diff --git a/pods/imports/k8s/AppArmorProfile.go b/pods/imports/k8s/AppArmorProfile.go deleted file mode 100644 index 51be80289..000000000 --- a/pods/imports/k8s/AppArmorProfile.go +++ /dev/null @@ -1,18 +0,0 @@ -package k8s - - -// AppArmorProfile defines a pod or container's AppArmor settings. -type AppArmorProfile struct { - // type indicates which kind of AppArmor profile will be applied. - // - // Valid options are: - // Localhost - a profile pre-loaded on the node. - // RuntimeDefault - the container runtime's default profile. - // Unconfined - no AppArmor enforcement. - Type *string `field:"required" json:"type" yaml:"type"` - // localhostProfile indicates a profile loaded on the node that should be used. - // - // The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is "Localhost". - LocalhostProfile *string `field:"optional" json:"localhostProfile" yaml:"localhostProfile"` -} - diff --git a/pods/imports/k8s/AuditAnnotation.go b/pods/imports/k8s/AuditAnnotation.go deleted file mode 100644 index fc3933532..000000000 --- a/pods/imports/k8s/AuditAnnotation.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// AuditAnnotation describes how to produce an audit annotation for an API request. -type AuditAnnotation struct { - // key specifies the audit annotation key. - // - // The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. - // - // The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". - // - // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. - // - // Required. - Key *string `field:"required" json:"key" yaml:"key"` - // valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. - // - // The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. - // - // If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. - // - // Required. - ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` -} - diff --git a/pods/imports/k8s/AuditAnnotationV1Alpha1.go b/pods/imports/k8s/AuditAnnotationV1Alpha1.go deleted file mode 100644 index 0bd8677a4..000000000 --- a/pods/imports/k8s/AuditAnnotationV1Alpha1.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// AuditAnnotation describes how to produce an audit annotation for an API request. -type AuditAnnotationV1Alpha1 struct { - // key specifies the audit annotation key. - // - // The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. - // - // The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". - // - // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. - // - // Required. - Key *string `field:"required" json:"key" yaml:"key"` - // valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. - // - // The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. - // - // If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. - // - // Required. - ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` -} - diff --git a/pods/imports/k8s/AuditAnnotationV1Beta1.go b/pods/imports/k8s/AuditAnnotationV1Beta1.go deleted file mode 100644 index ae6a76918..000000000 --- a/pods/imports/k8s/AuditAnnotationV1Beta1.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// AuditAnnotation describes how to produce an audit annotation for an API request. -type AuditAnnotationV1Beta1 struct { - // key specifies the audit annotation key. - // - // The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. - // - // The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". - // - // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. - // - // Required. - Key *string `field:"required" json:"key" yaml:"key"` - // valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. - // - // The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. - // - // If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. - // - // Required. - ValueExpression *string `field:"required" json:"valueExpression" yaml:"valueExpression"` -} - diff --git a/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go b/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go deleted file mode 100644 index f6f3c3445..000000000 --- a/pods/imports/k8s/AwsElasticBlockStoreVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Represents a Persistent Disk resource in AWS. -// -// An AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling. -type AwsElasticBlockStoreVolumeSource struct { - // volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` - // fsType is the filesystem type of the volume that you want to mount. - // - // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // partition is the partition in the volume that you want to mount. - // - // If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - Partition *float64 `field:"optional" json:"partition" yaml:"partition"` - // readOnly value true will force the readOnly setting in VolumeMounts. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/AzureDiskVolumeSource.go b/pods/imports/k8s/AzureDiskVolumeSource.go deleted file mode 100644 index 546e1f626..000000000 --- a/pods/imports/k8s/AzureDiskVolumeSource.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. -type AzureDiskVolumeSource struct { - // diskName is the Name of the data disk in the blob storage. - DiskName *string `field:"required" json:"diskName" yaml:"diskName"` - // diskURI is the URI of data disk in the blob storage. - DiskUri *string `field:"required" json:"diskUri" yaml:"diskUri"` - // cachingMode is the Host Caching mode: None, Read Only, Read Write. - CachingMode *string `field:"optional" json:"cachingMode" yaml:"cachingMode"` - // fsType is Filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). - // - // defaults to shared. - Kind *string `field:"optional" json:"kind" yaml:"kind"` - // readOnly Defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/AzureFilePersistentVolumeSource.go b/pods/imports/k8s/AzureFilePersistentVolumeSource.go deleted file mode 100644 index 2fcf809c4..000000000 --- a/pods/imports/k8s/AzureFilePersistentVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. -type AzureFilePersistentVolumeSource struct { - // secretName is the name of secret that contains Azure Storage Account Name and Key. - SecretName *string `field:"required" json:"secretName" yaml:"secretName"` - // shareName is the azure Share Name. - ShareName *string `field:"required" json:"shareName" yaml:"shareName"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod. - SecretNamespace *string `field:"optional" json:"secretNamespace" yaml:"secretNamespace"` -} - diff --git a/pods/imports/k8s/AzureFileVolumeSource.go b/pods/imports/k8s/AzureFileVolumeSource.go deleted file mode 100644 index c6958d084..000000000 --- a/pods/imports/k8s/AzureFileVolumeSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. -type AzureFileVolumeSource struct { - // secretName is the name of secret that contains Azure Storage Account Name and Key. - SecretName *string `field:"required" json:"secretName" yaml:"secretName"` - // shareName is the azure share Name. - ShareName *string `field:"required" json:"shareName" yaml:"shareName"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/BasicDeviceV1Alpha3.go b/pods/imports/k8s/BasicDeviceV1Alpha3.go deleted file mode 100644 index 3042d4fe5..000000000 --- a/pods/imports/k8s/BasicDeviceV1Alpha3.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// BasicDevice defines one device instance. -type BasicDeviceV1Alpha3 struct { - // Attributes defines the set of attributes for this device. - // - // The name of each attribute must be unique in that set. - // - // The maximum number of attributes and capacities combined is 32. - Attributes *map[string]*DeviceAttributeV1Alpha3 `field:"optional" json:"attributes" yaml:"attributes"` - // Capacity defines the set of capacities for this device. - // - // The name of each capacity must be unique in that set. - // - // The maximum number of attributes and capacities combined is 32. - Capacity *map[string]Quantity `field:"optional" json:"capacity" yaml:"capacity"` -} - diff --git a/pods/imports/k8s/BoundObjectReference.go b/pods/imports/k8s/BoundObjectReference.go deleted file mode 100644 index 191fa39da..000000000 --- a/pods/imports/k8s/BoundObjectReference.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// BoundObjectReference is a reference to an object that a token is bound to. -type BoundObjectReference struct { - // API version of the referent. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // Kind of the referent. - // - // Valid kinds are 'Pod' and 'Secret'. - Kind *string `field:"optional" json:"kind" yaml:"kind"` - // Name of the referent. - Name *string `field:"optional" json:"name" yaml:"name"` - // UID of the referent. - Uid *string `field:"optional" json:"uid" yaml:"uid"` -} - diff --git a/pods/imports/k8s/Capabilities.go b/pods/imports/k8s/Capabilities.go deleted file mode 100644 index cb5fbedeb..000000000 --- a/pods/imports/k8s/Capabilities.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// Adds and removes POSIX capabilities from running containers. -type Capabilities struct { - // Added capabilities. - Add *[]*string `field:"optional" json:"add" yaml:"add"` - // Removed capabilities. - Drop *[]*string `field:"optional" json:"drop" yaml:"drop"` -} - diff --git a/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go b/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go deleted file mode 100644 index 2c1ab5143..000000000 --- a/pods/imports/k8s/CelDeviceSelectorV1Alpha3.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// CELDeviceSelector contains a CEL expression for selecting a device. -type CelDeviceSelectorV1Alpha3 struct { - // Expression is a CEL expression which evaluates a single device. - // - // It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort. - // - // The expression's input is an object named "device", which carries the following properties: - // - driver (string): the name of the driver which defines this device. - // - attributes (map[string]object): the device's attributes, grouped by prefix - // (e.g. device.attributes["dra.example.com"] evaluates to an object with all - // of the attributes which were prefixed by "dra.example.com". - // - capacity (map[string]object): the device's capacities, grouped by prefix. - // - // Example: Consider a device with driver="dra.example.com", which exposes two attributes named "model" and "ext.example.com/family" and which exposes one capacity named "modules". This input to this expression would have the following fields: - // - // device.driver - // device.attributes["dra.example.com"].model - // device.attributes["ext.example.com"].family - // device.capacity["dra.example.com"].modules - // - // The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers. - // - // The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity. - // - // If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort. - // - // A robust expression should check for the existence of attributes before referencing them. - // - // For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example: - // - // cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool) - Expression *string `field:"required" json:"expression" yaml:"expression"` -} - diff --git a/pods/imports/k8s/CephFsPersistentVolumeSource.go b/pods/imports/k8s/CephFsPersistentVolumeSource.go deleted file mode 100644 index 6105e9df2..000000000 --- a/pods/imports/k8s/CephFsPersistentVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. -type CephFsPersistentVolumeSource struct { - // monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. - Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` - // path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /. - Path *string `field:"optional" json:"path" yaml:"path"` - // readOnly is Optional: Defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. - SecretFile *string `field:"optional" json:"secretFile" yaml:"secretFile"` - // secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. - // - // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` - // user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/CephFsVolumeSource.go b/pods/imports/k8s/CephFsVolumeSource.go deleted file mode 100644 index e88ee329c..000000000 --- a/pods/imports/k8s/CephFsVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. -type CephFsVolumeSource struct { - // monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. - Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` - // path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /. - Path *string `field:"optional" json:"path" yaml:"path"` - // readOnly is Optional: Defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. - SecretFile *string `field:"optional" json:"secretFile" yaml:"secretFile"` - // secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. - // - // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` - // user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it. - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/CertificateSigningRequestSpec.go b/pods/imports/k8s/CertificateSigningRequestSpec.go deleted file mode 100644 index 389696961..000000000 --- a/pods/imports/k8s/CertificateSigningRequestSpec.go +++ /dev/null @@ -1,79 +0,0 @@ -package k8s - - -// CertificateSigningRequestSpec contains the certificate request. -type CertificateSigningRequestSpec struct { - // request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. - // - // When serialized as JSON or YAML, the data is additionally base64-encoded. - Request *string `field:"required" json:"request" yaml:"request"` - // signerName indicates the requested signer, and is a qualified name. - // - // List/watch requests for CertificateSigningRequests can filter on this field using a "spec.signerName=NAME" fieldSelector. - // - // Well-known Kubernetes signers are: - // 1. "kubernetes.io/kube-apiserver-client": issues client certificates that can be used to authenticate to kube-apiserver. - // Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the "csrsigning" controller in kube-controller-manager. - // 2. "kubernetes.io/kube-apiserver-client-kubelet": issues client certificates that kubelets use to authenticate to kube-apiserver. - // Requests for this signer can be auto-approved by the "csrapproving" controller in kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager. - // 3. "kubernetes.io/kubelet-serving" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely. - // Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager. - // - // More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers - // - // Custom signerNames can also be specified. The signer defines: - // 1. Trust distribution: how trust (CA bundles) are distributed. - // 2. Permitted subjects: and behavior when a disallowed subject is requested. - // 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested. - // 4. Required, permitted, or forbidden key usages / extended key usages. - // 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin. - // 6. Whether or not requests for CA certificates are allowed. - SignerName *string `field:"required" json:"signerName" yaml:"signerName"` - // expirationSeconds is the requested duration of validity of the issued certificate. - // - // The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration. - // - // The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager. - // - // Certificate signers may not honor this field for various reasons: - // - // 1. Old signer that is unaware of the field (such as the in-tree - // implementations prior to v1.22) - // 2. Signer whose configured maximum is shorter than the requested duration - // 3. Signer whose configured minimum is longer than the requested duration - // - // The minimum valid value for expirationSeconds is 600, i.e. 10 minutes. - ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` - // extra contains extra attributes of the user that created the CertificateSigningRequest. - // - // Populated by the API server on creation and immutable. - Extra *map[string]*[]*string `field:"optional" json:"extra" yaml:"extra"` - // groups contains group membership of the user that created the CertificateSigningRequest. - // - // Populated by the API server on creation and immutable. - Groups *[]*string `field:"optional" json:"groups" yaml:"groups"` - // uid contains the uid of the user that created the CertificateSigningRequest. - // - // Populated by the API server on creation and immutable. - Uid *string `field:"optional" json:"uid" yaml:"uid"` - // usages specifies a set of key usages requested in the issued certificate. - // - // Requests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth". - // - // Requests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth". - // - // Valid values are: - // "signing", "digital signature", "content commitment", - // "key encipherment", "key agreement", "data encipherment", - // "cert sign", "crl sign", "encipher only", "decipher only", "any", - // "server auth", "client auth", - // "code signing", "email protection", "s/mime", - // "ipsec end system", "ipsec tunnel", "ipsec user", - // "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc". - Usages *[]*string `field:"optional" json:"usages" yaml:"usages"` - // username contains the name of the user that created the CertificateSigningRequest. - // - // Populated by the API server on creation and immutable. - Username *string `field:"optional" json:"username" yaml:"username"` -} - diff --git a/pods/imports/k8s/CinderPersistentVolumeSource.go b/pods/imports/k8s/CinderPersistentVolumeSource.go deleted file mode 100644 index 083f44a2a..000000000 --- a/pods/imports/k8s/CinderPersistentVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Represents a cinder volume resource in Openstack. -// -// A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. -type CinderPersistentVolumeSource struct { - // volumeID used to identify the volume in cinder. - // - // More info: https://examples.k8s.io/mysql-cinder-pd/README.md - VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` - // fsType Filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // readOnly is Optional: Defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack. - SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/CinderVolumeSource.go b/pods/imports/k8s/CinderVolumeSource.go deleted file mode 100644 index 24cd1a4b2..000000000 --- a/pods/imports/k8s/CinderVolumeSource.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// Represents a cinder volume resource in Openstack. -// -// A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. -type CinderVolumeSource struct { - // volumeID used to identify the volume in cinder. - // - // More info: https://examples.k8s.io/mysql-cinder-pd/README.md - VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. - SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/ClientIpConfig.go b/pods/imports/k8s/ClientIpConfig.go deleted file mode 100644 index 5bcb01d3a..000000000 --- a/pods/imports/k8s/ClientIpConfig.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ClientIPConfig represents the configurations of Client IP based session affinity. -type ClientIpConfig struct { - // timeoutSeconds specifies the seconds of ClientIP type session sticky time. - // - // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). - TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` -} - diff --git a/pods/imports/k8s/ClusterTrustBundleProjection.go b/pods/imports/k8s/ClusterTrustBundleProjection.go deleted file mode 100644 index c31d3918c..000000000 --- a/pods/imports/k8s/ClusterTrustBundleProjection.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// ClusterTrustBundleProjection describes how to select a set of ClusterTrustBundle objects and project their contents into the pod filesystem. -type ClusterTrustBundleProjection struct { - // Relative path from the volume root to write the bundle. - Path *string `field:"required" json:"path" yaml:"path"` - // Select all ClusterTrustBundles that match this label selector. - // - // Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". - LabelSelector *LabelSelector `field:"optional" json:"labelSelector" yaml:"labelSelector"` - // Select a single ClusterTrustBundle by object name. - // - // Mutually-exclusive with signerName and labelSelector. - Name *string `field:"optional" json:"name" yaml:"name"` - // If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. - // - // If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` - // Select all ClusterTrustBundles that match this signer name. - // - // Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. - SignerName *string `field:"optional" json:"signerName" yaml:"signerName"` -} - diff --git a/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go b/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go deleted file mode 100644 index 01f7f62af..000000000 --- a/pods/imports/k8s/ClusterTrustBundleSpecV1Alpha1.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ClusterTrustBundleSpec contains the signer and trust anchors. -type ClusterTrustBundleSpecV1Alpha1 struct { - // trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates. - // - // The data must consist only of PEM certificate blocks that parse as valid X.509 certificates. Each certificate must include a basic constraints extension with the CA bit set. The API server will reject objects that contain duplicate certificates, or that use PEM block headers. - // - // Users of ClusterTrustBundles, including Kubelet, are free to reorder and deduplicate certificate blocks in this file according to their own logic, as well as to drop PEM block headers and inter-block data. - TrustBundle *string `field:"required" json:"trustBundle" yaml:"trustBundle"` - // signerName indicates the associated signer, if any. - // - // In order to create or update a ClusterTrustBundle that sets signerName, you must have the following cluster-scoped permission: group=certificates.k8s.io resource=signers resourceName= verb=attest. - // - // If signerName is not empty, then the ClusterTrustBundle object must be named with the signer name as a prefix (translating slashes to colons). For example, for the signer name `example.com/foo`, valid ClusterTrustBundle object names include `example.com:foo:abc` and `example.com:foo:v1`. - // - // If signerName is empty, then the ClusterTrustBundle object's name must not have such a prefix. - // - // List/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector. - SignerName *string `field:"optional" json:"signerName" yaml:"signerName"` -} - diff --git a/pods/imports/k8s/ComponentCondition.go b/pods/imports/k8s/ComponentCondition.go deleted file mode 100644 index 5fd4a2609..000000000 --- a/pods/imports/k8s/ComponentCondition.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// Information about the condition of a component. -type ComponentCondition struct { - // Status of the condition for a component. - // - // Valid values for "Healthy": "True", "False", or "Unknown". - Status *string `field:"required" json:"status" yaml:"status"` - // Type of condition for a component. - // - // Valid value: "Healthy". - Type *string `field:"required" json:"type" yaml:"type"` - // Condition error code for a component. - // - // For example, a health check error code. - Error *string `field:"optional" json:"error" yaml:"error"` - // Message about the condition for a component. - // - // For example, information about a health check. - Message *string `field:"optional" json:"message" yaml:"message"` -} - diff --git a/pods/imports/k8s/ConfigMapEnvSource.go b/pods/imports/k8s/ConfigMapEnvSource.go deleted file mode 100644 index 2248baee4..000000000 --- a/pods/imports/k8s/ConfigMapEnvSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. -// -// The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables. -type ConfigMapEnvSource struct { - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the ConfigMap must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/ConfigMapKeySelector.go b/pods/imports/k8s/ConfigMapKeySelector.go deleted file mode 100644 index 0599999a5..000000000 --- a/pods/imports/k8s/ConfigMapKeySelector.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Selects a key from a ConfigMap. -type ConfigMapKeySelector struct { - // The key to select. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the ConfigMap or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/ConfigMapNodeConfigSource.go b/pods/imports/k8s/ConfigMapNodeConfigSource.go deleted file mode 100644 index 044080201..000000000 --- a/pods/imports/k8s/ConfigMapNodeConfigSource.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node. -// -// This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration -type ConfigMapNodeConfigSource struct { - // KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases. - KubeletConfigKey *string `field:"required" json:"kubeletConfigKey" yaml:"kubeletConfigKey"` - // Name is the metadata.name of the referenced ConfigMap. This field is required in all cases. - Name *string `field:"required" json:"name" yaml:"name"` - // Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases. - Namespace *string `field:"required" json:"namespace" yaml:"namespace"` - // ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. - ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` - // UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. - Uid *string `field:"optional" json:"uid" yaml:"uid"` -} - diff --git a/pods/imports/k8s/ConfigMapProjection.go b/pods/imports/k8s/ConfigMapProjection.go deleted file mode 100644 index 96b6987d8..000000000 --- a/pods/imports/k8s/ConfigMapProjection.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// Adapts a ConfigMap into a projected volume. -// -// The contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode. -type ConfigMapProjection struct { - // items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. - // - // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // optional specify whether the ConfigMap or its keys must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/ConfigMapVolumeSource.go b/pods/imports/k8s/ConfigMapVolumeSource.go deleted file mode 100644 index 0346e6aa5..000000000 --- a/pods/imports/k8s/ConfigMapVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Adapts a ConfigMap into a volume. -// -// The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling. -type ConfigMapVolumeSource struct { - // defaultMode is optional: mode bits used to set permissions on created files by default. - // - // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - // Default: 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - // - DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` - // items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. - // - // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // optional specify whether the ConfigMap or its keys must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/Container.go b/pods/imports/k8s/Container.go deleted file mode 100644 index b8bbca8dd..000000000 --- a/pods/imports/k8s/Container.go +++ /dev/null @@ -1,111 +0,0 @@ -package k8s - - -// A single application container that you want to run within a pod. -type Container struct { - // Name of the container specified as a DNS_LABEL. - // - // Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - Name *string `field:"required" json:"name" yaml:"name"` - // Arguments to the entrypoint. - // - // The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - Args *[]*string `field:"optional" json:"args" yaml:"args"` - // Entrypoint array. - // - // Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - Command *[]*string `field:"optional" json:"command" yaml:"command"` - // List of environment variables to set in the container. - // - // Cannot be updated. - Env *[]*EnvVar `field:"optional" json:"env" yaml:"env"` - // List of sources to populate environment variables in the container. - // - // The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - EnvFrom *[]*EnvFromSource `field:"optional" json:"envFrom" yaml:"envFrom"` - // Container image name. - // - // More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. - Image *string `field:"optional" json:"image" yaml:"image"` - // Image pull policy. - // - // One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images - // Default: Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images - // - ImagePullPolicy *string `field:"optional" json:"imagePullPolicy" yaml:"imagePullPolicy"` - // Actions that the management system should take in response to container lifecycle events. - // - // Cannot be updated. - Lifecycle *Lifecycle `field:"optional" json:"lifecycle" yaml:"lifecycle"` - // Periodic probe of container liveness. - // - // Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - LivenessProbe *Probe `field:"optional" json:"livenessProbe" yaml:"livenessProbe"` - // List of ports to expose from the container. - // - // Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. - Ports *[]*ContainerPort `field:"optional" json:"ports" yaml:"ports"` - // Periodic probe of container service readiness. - // - // Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - ReadinessProbe *Probe `field:"optional" json:"readinessProbe" yaml:"readinessProbe"` - // Resources resize policy for the container. - ResizePolicy *[]*ContainerResizePolicy `field:"optional" json:"resizePolicy" yaml:"resizePolicy"` - // Compute Resources required by this container. - // - // Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - Resources *ResourceRequirements `field:"optional" json:"resources" yaml:"resources"` - // RestartPolicy defines the restart behavior of individual containers in a pod. - // - // This field may only be set for init containers, and the only allowed value is "Always". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as "Always" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy "Always" will be shut down. This lifecycle differs from normal init containers and is often referred to as a "sidecar" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed. - RestartPolicy *string `field:"optional" json:"restartPolicy" yaml:"restartPolicy"` - // SecurityContext defines the security options the container should be run with. - // - // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - SecurityContext *SecurityContext `field:"optional" json:"securityContext" yaml:"securityContext"` - // StartupProbe indicates that the Pod has successfully initialized. - // - // If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - StartupProbe *Probe `field:"optional" json:"startupProbe" yaml:"startupProbe"` - // Whether this container should allocate a buffer for stdin in the container runtime. - // - // If this is not set, reads from stdin in the container will always result in EOF. Default is false. - // Default: false. - // - Stdin *bool `field:"optional" json:"stdin" yaml:"stdin"` - // Whether the container runtime should close the stdin channel after it has been opened by a single attach. - // - // When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - // Default: false. - // - StdinOnce *bool `field:"optional" json:"stdinOnce" yaml:"stdinOnce"` - // Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. - // - // Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. - // Default: dev/termination-log. Cannot be updated. - // - TerminationMessagePath *string `field:"optional" json:"terminationMessagePath" yaml:"terminationMessagePath"` - // Indicate how the termination message should be populated. - // - // File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - // Default: File. Cannot be updated. - // - TerminationMessagePolicy *string `field:"optional" json:"terminationMessagePolicy" yaml:"terminationMessagePolicy"` - // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. - // - // Default is false. - // Default: false. - // - Tty *bool `field:"optional" json:"tty" yaml:"tty"` - // volumeDevices is the list of block devices to be used by the container. - VolumeDevices *[]*VolumeDevice `field:"optional" json:"volumeDevices" yaml:"volumeDevices"` - // Pod volumes to mount into the container's filesystem. - // - // Cannot be updated. - VolumeMounts *[]*VolumeMount `field:"optional" json:"volumeMounts" yaml:"volumeMounts"` - // Container's working directory. - // - // If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - WorkingDir *string `field:"optional" json:"workingDir" yaml:"workingDir"` -} - diff --git a/pods/imports/k8s/ContainerPort.go b/pods/imports/k8s/ContainerPort.go deleted file mode 100644 index 98da3dc0e..000000000 --- a/pods/imports/k8s/ContainerPort.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// ContainerPort represents a network port in a single container. -type ContainerPort struct { - // Number of port to expose on the pod's IP address. - // - // This must be a valid port number, 0 < x < 65536. - ContainerPort *float64 `field:"required" json:"containerPort" yaml:"containerPort"` - // What host IP to bind the external port to. - HostIp *string `field:"optional" json:"hostIp" yaml:"hostIp"` - // Number of port to expose on the host. - // - // If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - HostPort *float64 `field:"optional" json:"hostPort" yaml:"hostPort"` - // If specified, this must be an IANA_SVC_NAME and unique within the pod. - // - // Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - Name *string `field:"optional" json:"name" yaml:"name"` - // Protocol for port. - // - // Must be UDP, TCP, or SCTP. Defaults to "TCP". - // Default: TCP". - // - Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` -} - diff --git a/pods/imports/k8s/ContainerResizePolicy.go b/pods/imports/k8s/ContainerResizePolicy.go deleted file mode 100644 index 4eeae531c..000000000 --- a/pods/imports/k8s/ContainerResizePolicy.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ContainerResizePolicy represents resource resize policy for the container. -type ContainerResizePolicy struct { - // Name of the resource to which this resource resize policy applies. - // - // Supported values: cpu, memory. - ResourceName *string `field:"required" json:"resourceName" yaml:"resourceName"` - // Restart policy to apply when specified resource is resized. - // - // If not specified, it defaults to NotRequired. - RestartPolicy *string `field:"required" json:"restartPolicy" yaml:"restartPolicy"` -} - diff --git a/pods/imports/k8s/ContainerResourceMetricSourceV2.go b/pods/imports/k8s/ContainerResourceMetricSourceV2.go deleted file mode 100644 index db49cb36b..000000000 --- a/pods/imports/k8s/ContainerResourceMetricSourceV2.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set. -type ContainerResourceMetricSourceV2 struct { - // container is the name of the container in the pods of the scaling target. - Container *string `field:"required" json:"container" yaml:"container"` - // name is the name of the resource in question. - Name *string `field:"required" json:"name" yaml:"name"` - // target specifies the target value for the given metric. - Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` -} - diff --git a/pods/imports/k8s/CronJobSpec.go b/pods/imports/k8s/CronJobSpec.go deleted file mode 100644 index e7190ac25..000000000 --- a/pods/imports/k8s/CronJobSpec.go +++ /dev/null @@ -1,39 +0,0 @@ -package k8s - - -// CronJobSpec describes how the job execution will look like and when it will actually run. -type CronJobSpec struct { - // Specifies the job that will be created when executing a CronJob. - JobTemplate *JobTemplateSpec `field:"required" json:"jobTemplate" yaml:"jobTemplate"` - // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. - Schedule *string `field:"required" json:"schedule" yaml:"schedule"` - // Specifies how to treat concurrent executions of a Job. Valid values are:. - // - // - "Allow" (default): allows CronJobs to run concurrently; - "Forbid": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - "Replace": cancels currently running job and replaces it with a new one. - ConcurrencyPolicy *string `field:"optional" json:"concurrencyPolicy" yaml:"concurrencyPolicy"` - // The number of failed finished jobs to retain. - // - // Value must be non-negative integer. Defaults to 1. - // Default: 1. - // - FailedJobsHistoryLimit *float64 `field:"optional" json:"failedJobsHistoryLimit" yaml:"failedJobsHistoryLimit"` - // Optional deadline in seconds for starting the job if it misses scheduled time for any reason. - // - // Missed jobs executions will be counted as failed ones. - StartingDeadlineSeconds *float64 `field:"optional" json:"startingDeadlineSeconds" yaml:"startingDeadlineSeconds"` - // The number of successful finished jobs to retain. - // - // Value must be non-negative integer. Defaults to 3. - // Default: 3. - // - SuccessfulJobsHistoryLimit *float64 `field:"optional" json:"successfulJobsHistoryLimit" yaml:"successfulJobsHistoryLimit"` - // This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. - // - // Defaults to false. - // Default: false. - // - Suspend *bool `field:"optional" json:"suspend" yaml:"suspend"` - // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones. - TimeZone *string `field:"optional" json:"timeZone" yaml:"timeZone"` -} - diff --git a/pods/imports/k8s/CrossVersionObjectReference.go b/pods/imports/k8s/CrossVersionObjectReference.go deleted file mode 100644 index 7bf4231ad..000000000 --- a/pods/imports/k8s/CrossVersionObjectReference.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// CrossVersionObjectReference contains enough information to let you identify the referred resource. -type CrossVersionObjectReference struct { - // kind is the kind of the referent; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Kind *string `field:"required" json:"kind" yaml:"kind"` - // name is the name of the referent; - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"required" json:"name" yaml:"name"` - // apiVersion is the API version of the referent. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` -} - diff --git a/pods/imports/k8s/CrossVersionObjectReferenceV2.go b/pods/imports/k8s/CrossVersionObjectReferenceV2.go deleted file mode 100644 index 9dce02e2f..000000000 --- a/pods/imports/k8s/CrossVersionObjectReferenceV2.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// CrossVersionObjectReference contains enough information to let you identify the referred resource. -type CrossVersionObjectReferenceV2 struct { - // kind is the kind of the referent; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Kind *string `field:"required" json:"kind" yaml:"kind"` - // name is the name of the referent; - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"required" json:"name" yaml:"name"` - // apiVersion is the API version of the referent. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` -} - diff --git a/pods/imports/k8s/CsiDriverSpec.go b/pods/imports/k8s/CsiDriverSpec.go deleted file mode 100644 index a90a349df..000000000 --- a/pods/imports/k8s/CsiDriverSpec.go +++ /dev/null @@ -1,82 +0,0 @@ -package k8s - - -// CSIDriverSpec is the specification of a CSIDriver. -type CsiDriverSpec struct { - // attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. - // - // The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called. - // - // This field is immutable. - AttachRequired *bool `field:"optional" json:"attachRequired" yaml:"attachRequired"` - // fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. - // - // Refer to the specific FSGroupPolicy values for additional details. - // - // This field was immutable in Kubernetes < 1.29 and now is mutable. - // - // Defaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce. - // Default: ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce. - // - FsGroupPolicy *string `field:"optional" json:"fsGroupPolicy" yaml:"fsGroupPolicy"` - // podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false. - // - // The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. - // - // The following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": "true" if the volume is an ephemeral inline volume - // defined by a CSIVolumeSource, otherwise "false" - // - // "csi.storage.k8s.io/ephemeral" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the "Persistent" and "Ephemeral" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver. - // - // This field was immutable in Kubernetes < 1.29 and now is mutable. - // Default: false. - // - PodInfoOnMount *bool `field:"optional" json:"podInfoOnMount" yaml:"podInfoOnMount"` - // requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. - // - // This field defaults to false. - // - // Note: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container. - RequiresRepublish *bool `field:"optional" json:"requiresRepublish" yaml:"requiresRepublish"` - // seLinuxMount specifies if the CSI driver supports "-o context" mount option. - // - // When "true", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with "-o context=xyz" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context. - // - // When "false", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem. - // - // Default is "false". - // Default: false". - // - SeLinuxMount *bool `field:"optional" json:"seLinuxMount" yaml:"seLinuxMount"` - // storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true. - // - // The check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object. - // - // Alternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published. - // - // This field was immutable in Kubernetes <= 1.22 and now is mutable. - StorageCapacity *bool `field:"optional" json:"storageCapacity" yaml:"storageCapacity"` - // tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. - // - // Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { - // "": { - // "token": , - // "expirationTimestamp": , - // }, - // ... - // } - // - // Note: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically. - TokenRequests *[]*TokenRequest `field:"optional" json:"tokenRequests" yaml:"tokenRequests"` - // volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. - // - // The default if the list is empty is "Persistent", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. - // - // The other mode is "Ephemeral". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. - // - // For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. - // - // This field is beta. This field is immutable. - VolumeLifecycleModes *[]*string `field:"optional" json:"volumeLifecycleModes" yaml:"volumeLifecycleModes"` -} - diff --git a/pods/imports/k8s/CsiNodeDriver.go b/pods/imports/k8s/CsiNodeDriver.go deleted file mode 100644 index 9b78f4449..000000000 --- a/pods/imports/k8s/CsiNodeDriver.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// CSINodeDriver holds information about the specification of one CSI driver installed on a node. -type CsiNodeDriver struct { - // name represents the name of the CSI driver that this object refers to. - // - // This MUST be the same name returned by the CSI GetPluginName() call for that driver. - Name *string `field:"required" json:"name" yaml:"name"` - // nodeID of the node from the driver point of view. - // - // This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as "node1", but the storage system may refer to the same node as "nodeA". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. "nodeA" instead of "node1". This field is required. - NodeId *string `field:"required" json:"nodeId" yaml:"nodeId"` - // allocatable represents the volume resources of a node that are available for scheduling. - // - // This field is beta. - Allocatable *VolumeNodeResources `field:"optional" json:"allocatable" yaml:"allocatable"` - // topologyKeys is the list of keys supported by the driver. - // - // When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. "company.com/zone", "company.com/region"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology. - TopologyKeys *[]*string `field:"optional" json:"topologyKeys" yaml:"topologyKeys"` -} - diff --git a/pods/imports/k8s/CsiNodeSpec.go b/pods/imports/k8s/CsiNodeSpec.go deleted file mode 100644 index 73f35e4e0..000000000 --- a/pods/imports/k8s/CsiNodeSpec.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// CSINodeSpec holds information about the specification of all CSI drivers installed on a node. -type CsiNodeSpec struct { - // drivers is a list of information of all CSI Drivers existing on a node. - // - // If all drivers in the list are uninstalled, this can become empty. - Drivers *[]*CsiNodeDriver `field:"required" json:"drivers" yaml:"drivers"` -} - diff --git a/pods/imports/k8s/CsiPersistentVolumeSource.go b/pods/imports/k8s/CsiPersistentVolumeSource.go deleted file mode 100644 index d8a2c813e..000000000 --- a/pods/imports/k8s/CsiPersistentVolumeSource.go +++ /dev/null @@ -1,47 +0,0 @@ -package k8s - - -// Represents storage that is managed by an external CSI volume driver (Beta feature). -type CsiPersistentVolumeSource struct { - // driver is the name of the driver to use for this volume. - // - // Required. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. - // - // Required. - VolumeHandle *string `field:"required" json:"volumeHandle" yaml:"volumeHandle"` - // controllerExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerExpandVolume call. - // - // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. - ControllerExpandSecretRef *SecretReference `field:"optional" json:"controllerExpandSecretRef" yaml:"controllerExpandSecretRef"` - // controllerPublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerPublishVolume and ControllerUnpublishVolume calls. - // - // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. - ControllerPublishSecretRef *SecretReference `field:"optional" json:"controllerPublishSecretRef" yaml:"controllerPublishSecretRef"` - // fsType to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // nodeExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeExpandVolume call. - // - // This field is optional, may be omitted if no secret is required. If the secret object contains more than one secret, all secrets are passed. - NodeExpandSecretRef *SecretReference `field:"optional" json:"nodeExpandSecretRef" yaml:"nodeExpandSecretRef"` - // nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. - // - // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. - NodePublishSecretRef *SecretReference `field:"optional" json:"nodePublishSecretRef" yaml:"nodePublishSecretRef"` - // nodeStageSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume and NodeStageVolume and NodeUnstageVolume calls. - // - // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed. - NodeStageSecretRef *SecretReference `field:"optional" json:"nodeStageSecretRef" yaml:"nodeStageSecretRef"` - // readOnly value to pass to ControllerPublishVolumeRequest. - // - // Defaults to false (read/write). - // Default: false (read/write). - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // volumeAttributes of the volume to publish. - VolumeAttributes *map[string]*string `field:"optional" json:"volumeAttributes" yaml:"volumeAttributes"` -} - diff --git a/pods/imports/k8s/CsiVolumeSource.go b/pods/imports/k8s/CsiVolumeSource.go deleted file mode 100644 index 3e3592069..000000000 --- a/pods/imports/k8s/CsiVolumeSource.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// Represents a source location of a volume to mount, managed by an external CSI driver. -type CsiVolumeSource struct { - // driver is the name of the CSI driver that handles this volume. - // - // Consult with your admin for the correct name as registered in the cluster. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // fsType to mount. - // - // Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. - // - // This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. - NodePublishSecretRef *LocalObjectReference `field:"optional" json:"nodePublishSecretRef" yaml:"nodePublishSecretRef"` - // readOnly specifies a read-only configuration for the volume. - // - // Defaults to false (read/write). - // Default: false (read/write). - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // volumeAttributes stores driver-specific properties that are passed to the CSI driver. - // - // Consult your driver's documentation for supported values. - VolumeAttributes *map[string]*string `field:"optional" json:"volumeAttributes" yaml:"volumeAttributes"` -} - diff --git a/pods/imports/k8s/CustomResourceColumnDefinition.go b/pods/imports/k8s/CustomResourceColumnDefinition.go deleted file mode 100644 index 17a8b328c..000000000 --- a/pods/imports/k8s/CustomResourceColumnDefinition.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// CustomResourceColumnDefinition specifies a column for server side printing. -type CustomResourceColumnDefinition struct { - // jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column. - JsonPath *string `field:"required" json:"jsonPath" yaml:"jsonPath"` - // name is a human readable name for the column. - Name *string `field:"required" json:"name" yaml:"name"` - // type is an OpenAPI type definition for this column. - // - // See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. - Type *string `field:"required" json:"type" yaml:"type"` - // description is a human readable description of this column. - Description *string `field:"optional" json:"description" yaml:"description"` - // format is an optional OpenAPI type definition for this column. - // - // The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. - Format *string `field:"optional" json:"format" yaml:"format"` - // priority is an integer defining the relative importance of this column compared to others. - // - // Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0. - Priority *float64 `field:"optional" json:"priority" yaml:"priority"` -} - diff --git a/pods/imports/k8s/CustomResourceConversion.go b/pods/imports/k8s/CustomResourceConversion.go deleted file mode 100644 index 605f53aa5..000000000 --- a/pods/imports/k8s/CustomResourceConversion.go +++ /dev/null @@ -1,16 +0,0 @@ -package k8s - - -// CustomResourceConversion describes how to convert different versions of a CR. -type CustomResourceConversion struct { - // strategy specifies how custom resources are converted between versions. - // - // Allowed values are: - `"None"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - `"Webhook"`: API Server will call to an external webhook to do the conversion. Additional information - // is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set. - Strategy *string `field:"required" json:"strategy" yaml:"strategy"` - // webhook describes how to call the conversion webhook. - // - // Required when `strategy` is set to `"Webhook"`. - Webhook *WebhookConversion `field:"optional" json:"webhook" yaml:"webhook"` -} - diff --git a/pods/imports/k8s/CustomResourceDefinitionNames.go b/pods/imports/k8s/CustomResourceDefinitionNames.go deleted file mode 100644 index c73d91729..000000000 --- a/pods/imports/k8s/CustomResourceDefinitionNames.go +++ /dev/null @@ -1,33 +0,0 @@ -package k8s - - -// CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition. -type CustomResourceDefinitionNames struct { - // kind is the serialized kind of the resource. - // - // It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // plural is the plural name of the resource to serve. - // - // The custom resources are served under `/apis///.../`. Must match the name of the CustomResourceDefinition (in the form `.`). Must be all lowercase. - Plural *string `field:"required" json:"plural" yaml:"plural"` - // categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`. - Categories *[]*string `field:"optional" json:"categories" yaml:"categories"` - // listKind is the serialized kind of the list for this resource. - // - // Defaults to "`kind`List". - // Default: kind`List". - // - ListKind *string `field:"optional" json:"listKind" yaml:"listKind"` - // shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get `. - // - // It must be all lowercase. - ShortNames *[]*string `field:"optional" json:"shortNames" yaml:"shortNames"` - // singular is the singular name of the resource. - // - // It must be all lowercase. Defaults to lowercased `kind`. - // Default: lowercased `kind`. - // - Singular *string `field:"optional" json:"singular" yaml:"singular"` -} - diff --git a/pods/imports/k8s/CustomResourceDefinitionSpec.go b/pods/imports/k8s/CustomResourceDefinitionSpec.go deleted file mode 100644 index f84d089c0..000000000 --- a/pods/imports/k8s/CustomResourceDefinitionSpec.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// CustomResourceDefinitionSpec describes how a user wants their resource to appear. -type CustomResourceDefinitionSpec struct { - // group is the API group of the defined custom resource. - // - // The custom resources are served under `/apis//...`. Must match the name of the CustomResourceDefinition (in the form `.`). - Group *string `field:"required" json:"group" yaml:"group"` - // names specify the resource and kind names for the custom resource. - Names *CustomResourceDefinitionNames `field:"required" json:"names" yaml:"names"` - // scope indicates whether the defined custom resource is cluster- or namespace-scoped. - // - // Allowed values are `Cluster` and `Namespaced`. - Scope *string `field:"required" json:"scope" yaml:"scope"` - // versions is the list of all API versions of the defined custom resource. - // - // Version names are used to compute the order in which served versions are listed in API discovery. If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version), then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. - Versions *[]*CustomResourceDefinitionVersion `field:"required" json:"versions" yaml:"versions"` - // conversion defines conversion settings for the CRD. - Conversion *CustomResourceConversion `field:"optional" json:"conversion" yaml:"conversion"` - // preserveUnknownFields indicates that object fields which are not specified in the OpenAPI schema should be preserved when persisting to storage. - // - // apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details. - PreserveUnknownFields *bool `field:"optional" json:"preserveUnknownFields" yaml:"preserveUnknownFields"` -} - diff --git a/pods/imports/k8s/CustomResourceDefinitionVersion.go b/pods/imports/k8s/CustomResourceDefinitionVersion.go deleted file mode 100644 index c5818e7d2..000000000 --- a/pods/imports/k8s/CustomResourceDefinitionVersion.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// CustomResourceDefinitionVersion describes a version for CRD. -type CustomResourceDefinitionVersion struct { - // name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis///...` if `served` is true. - Name *string `field:"required" json:"name" yaml:"name"` - // served is a flag enabling/disabling this version from being served via REST APIs. - Served *bool `field:"required" json:"served" yaml:"served"` - // storage indicates this version should be used when persisting custom resources to storage. - // - // There must be exactly one version with storage=true. - Storage *bool `field:"required" json:"storage" yaml:"storage"` - // additionalPrinterColumns specifies additional columns returned in Table output. - // - // See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If no columns are specified, a single column displaying the age of the custom resource is used. - AdditionalPrinterColumns *[]*CustomResourceColumnDefinition `field:"optional" json:"additionalPrinterColumns" yaml:"additionalPrinterColumns"` - // deprecated indicates this version of the custom resource API is deprecated. - // - // When set to true, API requests to this version receive a warning header in the server response. Defaults to false. - // Default: false. - // - Deprecated *bool `field:"optional" json:"deprecated" yaml:"deprecated"` - // deprecationWarning overrides the default warning returned to API clients. - // - // May only be set when `deprecated` is true. The default warning indicates this version is deprecated and recommends use of the newest served version of equal or greater stability, if one exists. - DeprecationWarning *string `field:"optional" json:"deprecationWarning" yaml:"deprecationWarning"` - // schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource. - Schema *CustomResourceValidation `field:"optional" json:"schema" yaml:"schema"` - // selectableFields specifies paths to fields that may be used as field selectors. - // - // A maximum of 8 selectable fields are allowed. See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors - SelectableFields *[]*SelectableField `field:"optional" json:"selectableFields" yaml:"selectableFields"` - // subresources specify what subresources this version of the defined custom resource have. - Subresources *CustomResourceSubresources `field:"optional" json:"subresources" yaml:"subresources"` -} - diff --git a/pods/imports/k8s/CustomResourceSubresourceScale.go b/pods/imports/k8s/CustomResourceSubresourceScale.go deleted file mode 100644 index 61e26617f..000000000 --- a/pods/imports/k8s/CustomResourceSubresourceScale.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources. -type CustomResourceSubresourceScale struct { - // specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET. - SpecReplicasPath *string `field:"required" json:"specReplicasPath" yaml:"specReplicasPath"` - // statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status`. If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource will default to 0. - StatusReplicasPath *string `field:"required" json:"statusReplicasPath" yaml:"statusReplicasPath"` - // labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string. - LabelSelectorPath *string `field:"optional" json:"labelSelectorPath" yaml:"labelSelectorPath"` -} - diff --git a/pods/imports/k8s/CustomResourceSubresources.go b/pods/imports/k8s/CustomResourceSubresources.go deleted file mode 100644 index b59194479..000000000 --- a/pods/imports/k8s/CustomResourceSubresources.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// CustomResourceSubresources defines the status and scale subresources for CustomResources. -type CustomResourceSubresources struct { - // scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object. - Scale *CustomResourceSubresourceScale `field:"optional" json:"scale" yaml:"scale"` - // status indicates the custom resource should serve a `/status` subresource. - // - // When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object. - Status interface{} `field:"optional" json:"status" yaml:"status"` -} - diff --git a/pods/imports/k8s/CustomResourceValidation.go b/pods/imports/k8s/CustomResourceValidation.go deleted file mode 100644 index 6297a04a0..000000000 --- a/pods/imports/k8s/CustomResourceValidation.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// CustomResourceValidation is a list of validation methods for CustomResources. -type CustomResourceValidation struct { - // openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning. - OpenApiv3Schema *JsonSchemaProps `field:"optional" json:"openApiv3Schema" yaml:"openApiv3Schema"` -} - diff --git a/pods/imports/k8s/DaemonSetSpec.go b/pods/imports/k8s/DaemonSetSpec.go deleted file mode 100644 index df10d0c35..000000000 --- a/pods/imports/k8s/DaemonSetSpec.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// DaemonSetSpec is the specification of a daemon set. -type DaemonSetSpec struct { - // A label query over pods that are managed by the daemon set. - // - // Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors - Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` - // An object that describes the pod that will be created. - // - // The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). The only allowed template.spec.restartPolicy value is "Always". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template - Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` - // The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. - // - // Defaults to 0 (pod will be considered available as soon as it is ready). - // Default: 0 (pod will be considered available as soon as it is ready). - // - MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` - // The number of old history to retain to allow rollback. - // - // This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. - // Default: 10. - // - RevisionHistoryLimit *float64 `field:"optional" json:"revisionHistoryLimit" yaml:"revisionHistoryLimit"` - // An update strategy to replace existing DaemonSet pods with new pods. - UpdateStrategy *DaemonSetUpdateStrategy `field:"optional" json:"updateStrategy" yaml:"updateStrategy"` -} - diff --git a/pods/imports/k8s/DaemonSetUpdateStrategy.go b/pods/imports/k8s/DaemonSetUpdateStrategy.go deleted file mode 100644 index 202cbe1fe..000000000 --- a/pods/imports/k8s/DaemonSetUpdateStrategy.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet. -type DaemonSetUpdateStrategy struct { - // Rolling update config params. - // - // Present only if type = "RollingUpdate". - RollingUpdate *RollingUpdateDaemonSet `field:"optional" json:"rollingUpdate" yaml:"rollingUpdate"` - // Type of daemon set update. - // - // Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate. - // Default: RollingUpdate. - // - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/DeleteOptions.go b/pods/imports/k8s/DeleteOptions.go deleted file mode 100644 index 7b50aaef2..000000000 --- a/pods/imports/k8s/DeleteOptions.go +++ /dev/null @@ -1,35 +0,0 @@ -package k8s - - -// DeleteOptions may be provided when deleting an API object. -type DeleteOptions struct { - // APIVersion defines the versioned schema of this representation of an object. - // - // Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // When present, indicates that modifications should not be persisted. - // - // An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - DryRun *[]*string `field:"optional" json:"dryRun" yaml:"dryRun"` - // The duration in seconds before the object should be deleted. - // - // Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - // Default: a per object value if not specified. zero means delete immediately. - // - GracePeriodSeconds *float64 `field:"optional" json:"gracePeriodSeconds" yaml:"gracePeriodSeconds"` - // Kind is a string value representing the REST resource this object represents. - // - // Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Kind IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind `field:"optional" json:"kind" yaml:"kind"` - // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the "orphan" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - OrphanDependents *bool `field:"optional" json:"orphanDependents" yaml:"orphanDependents"` - // Must be fulfilled before a deletion is carried out. - // - // If not possible, a 409 Conflict status will be returned. - Preconditions *Preconditions `field:"optional" json:"preconditions" yaml:"preconditions"` - // Whether and how garbage collection will be performed. - // - // Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - PropagationPolicy *string `field:"optional" json:"propagationPolicy" yaml:"propagationPolicy"` -} - diff --git a/pods/imports/k8s/DeploymentSpec.go b/pods/imports/k8s/DeploymentSpec.go deleted file mode 100644 index de1378083..000000000 --- a/pods/imports/k8s/DeploymentSpec.go +++ /dev/null @@ -1,43 +0,0 @@ -package k8s - - -// DeploymentSpec is the specification of the desired behavior of the Deployment. -type DeploymentSpec struct { - // Label selector for pods. - // - // Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels. - Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` - // Template describes the pods that will be created. - // - // The only allowed template.spec.restartPolicy value is "Always". - Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` - // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. - // - // Defaults to 0 (pod will be considered available as soon as it is ready). - // Default: 0 (pod will be considered available as soon as it is ready). - // - MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` - // Indicates that the deployment is paused. - Paused *bool `field:"optional" json:"paused" yaml:"paused"` - // The maximum time in seconds for a deployment to make progress before it is considered to be failed. - // - // The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s. - // Default: 600s. - // - ProgressDeadlineSeconds *float64 `field:"optional" json:"progressDeadlineSeconds" yaml:"progressDeadlineSeconds"` - // Number of desired pods. - // - // This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. - // Default: 1. - // - Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` - // The number of old ReplicaSets to retain to allow rollback. - // - // This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. - // Default: 10. - // - RevisionHistoryLimit *float64 `field:"optional" json:"revisionHistoryLimit" yaml:"revisionHistoryLimit"` - // The deployment strategy to use to replace existing pods with new ones. - Strategy *DeploymentStrategy `field:"optional" json:"strategy" yaml:"strategy"` -} - diff --git a/pods/imports/k8s/DeploymentStrategy.go b/pods/imports/k8s/DeploymentStrategy.go deleted file mode 100644 index 1c337029a..000000000 --- a/pods/imports/k8s/DeploymentStrategy.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// DeploymentStrategy describes how to replace existing pods with new ones. -type DeploymentStrategy struct { - // Rolling update config params. - // - // Present only if DeploymentStrategyType = RollingUpdate. - RollingUpdate *RollingUpdateDeployment `field:"optional" json:"rollingUpdate" yaml:"rollingUpdate"` - // Type of deployment. - // - // Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. - // Default: RollingUpdate. - // - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/DeviceAttributeV1Alpha3.go b/pods/imports/k8s/DeviceAttributeV1Alpha3.go deleted file mode 100644 index 8a618e130..000000000 --- a/pods/imports/k8s/DeviceAttributeV1Alpha3.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// DeviceAttribute must have exactly one field set. -type DeviceAttributeV1Alpha3 struct { - // BoolValue is a true/false value. - Bool *bool `field:"optional" json:"bool" yaml:"bool"` - // IntValue is a number. - Int *float64 `field:"optional" json:"int" yaml:"int"` - // StringValue is a string. - // - // Must not be longer than 64 characters. - String *string `field:"optional" json:"string" yaml:"string"` - // VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters. - Version *string `field:"optional" json:"version" yaml:"version"` -} - diff --git a/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go b/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go deleted file mode 100644 index 7b3ac5bfc..000000000 --- a/pods/imports/k8s/DeviceClaimConfigurationV1Alpha3.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim. -type DeviceClaimConfigurationV1Alpha3 struct { - // Opaque provides driver-specific configuration parameters. - Opaque *OpaqueDeviceConfigurationV1Alpha3 `field:"optional" json:"opaque" yaml:"opaque"` - // Requests lists the names of requests where the configuration applies. - // - // If empty, it applies to all requests. - Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` -} - diff --git a/pods/imports/k8s/DeviceClaimV1Alpha3.go b/pods/imports/k8s/DeviceClaimV1Alpha3.go deleted file mode 100644 index f706b3047..000000000 --- a/pods/imports/k8s/DeviceClaimV1Alpha3.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// DeviceClaim defines how to request devices with a ResourceClaim. -type DeviceClaimV1Alpha3 struct { - // This field holds configuration for multiple potential drivers which could satisfy requests in this claim. - // - // It is ignored while allocating the claim. - Config *[]*DeviceClaimConfigurationV1Alpha3 `field:"optional" json:"config" yaml:"config"` - // These constraints must be satisfied by the set of devices that get allocated for the claim. - Constraints *[]*DeviceConstraintV1Alpha3 `field:"optional" json:"constraints" yaml:"constraints"` - // Requests represent individual requests for distinct devices which must all be satisfied. - // - // If empty, nothing needs to be allocated. - Requests *[]*DeviceRequestV1Alpha3 `field:"optional" json:"requests" yaml:"requests"` -} - diff --git a/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go b/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go deleted file mode 100644 index 6a47728a3..000000000 --- a/pods/imports/k8s/DeviceClassConfigurationV1Alpha3.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// DeviceClassConfiguration is used in DeviceClass. -type DeviceClassConfigurationV1Alpha3 struct { - // Opaque provides driver-specific configuration parameters. - Opaque *OpaqueDeviceConfigurationV1Alpha3 `field:"optional" json:"opaque" yaml:"opaque"` -} - diff --git a/pods/imports/k8s/DeviceClassSpecV1Alpha3.go b/pods/imports/k8s/DeviceClassSpecV1Alpha3.go deleted file mode 100644 index 7df0e70f2..000000000 --- a/pods/imports/k8s/DeviceClassSpecV1Alpha3.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it. -type DeviceClassSpecV1Alpha3 struct { - // Config defines configuration parameters that apply to each device that is claimed via this class. - // - // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver. - // - // They are passed to the driver, but are not considered while allocating the claim. - Config *[]*DeviceClassConfigurationV1Alpha3 `field:"optional" json:"config" yaml:"config"` - // Each selector must be satisfied by a device which is claimed via this class. - Selectors *[]*DeviceSelectorV1Alpha3 `field:"optional" json:"selectors" yaml:"selectors"` - // Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. - // - // It is ignored when the claim does not use a control plane controller for allocation. - // - // Setting this field is optional. If unset, all Nodes are candidates. - // - // This is an alpha field and requires enabling the DRAControlPlaneController feature gate. - SuitableNodes *NodeSelector `field:"optional" json:"suitableNodes" yaml:"suitableNodes"` -} - diff --git a/pods/imports/k8s/DeviceConstraintV1Alpha3.go b/pods/imports/k8s/DeviceConstraintV1Alpha3.go deleted file mode 100644 index 77f28459e..000000000 --- a/pods/imports/k8s/DeviceConstraintV1Alpha3.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// DeviceConstraint must have exactly one field set besides Requests. -type DeviceConstraintV1Alpha3 struct { - // MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices. - // - // For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen. - // - // Must include the domain qualifier. - MatchAttribute *string `field:"optional" json:"matchAttribute" yaml:"matchAttribute"` - // Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. - // - // If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim. - Requests *[]*string `field:"optional" json:"requests" yaml:"requests"` -} - diff --git a/pods/imports/k8s/DeviceRequestV1Alpha3.go b/pods/imports/k8s/DeviceRequestV1Alpha3.go deleted file mode 100644 index 632ff5cde..000000000 --- a/pods/imports/k8s/DeviceRequestV1Alpha3.go +++ /dev/null @@ -1,47 +0,0 @@ -package k8s - - -// DeviceRequest is a request for devices required for a claim. -// -// This is typically a request for a single resource like a device, but can also ask for several identical devices. -// -// A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request. -type DeviceRequestV1Alpha3 struct { - // DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request. - // - // A class is required. Which classes are available depends on the cluster. - // - // Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference. - DeviceClassName *string `field:"required" json:"deviceClassName" yaml:"deviceClassName"` - // Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim. - // - // Must be a DNS label. - Name *string `field:"required" json:"name" yaml:"name"` - // AdminAccess indicates that this is a claim for administrative access to the device(s). - // - // Claims with AdminAccess are expected to be used for monitoring or other management services for a device. They ignore all ordinary claims to the device with respect to access modes and any resource allocations. - AdminAccess *bool `field:"optional" json:"adminAccess" yaml:"adminAccess"` - // AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:. - // - // - ExactCount: This request is for a specific number of devices. - // This is the default. The exact number is provided in the - // count field. - // - // - All: This request is for all of the matching devices in a pool. - // Allocation will fail if some devices are already allocated, - // unless adminAccess is requested. - // - // If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field. - // - // More modes may get added in the future. Clients must refuse to handle requests with unknown modes. - AllocationMode *string `field:"optional" json:"allocationMode" yaml:"allocationMode"` - // Count is used only when the count mode is "ExactCount". - // - // Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one. - Count *float64 `field:"optional" json:"count" yaml:"count"` - // Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. - // - // All selectors must be satisfied for a device to be considered. - Selectors *[]*DeviceSelectorV1Alpha3 `field:"optional" json:"selectors" yaml:"selectors"` -} - diff --git a/pods/imports/k8s/DeviceSelectorV1Alpha3.go b/pods/imports/k8s/DeviceSelectorV1Alpha3.go deleted file mode 100644 index d93e529c5..000000000 --- a/pods/imports/k8s/DeviceSelectorV1Alpha3.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// DeviceSelector must have exactly one field set. -type DeviceSelectorV1Alpha3 struct { - // CEL contains a CEL expression for selecting a device. - Cel *CelDeviceSelectorV1Alpha3 `field:"optional" json:"cel" yaml:"cel"` -} - diff --git a/pods/imports/k8s/DeviceV1Alpha3.go b/pods/imports/k8s/DeviceV1Alpha3.go deleted file mode 100644 index 69b0fd200..000000000 --- a/pods/imports/k8s/DeviceV1Alpha3.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Device represents one individual hardware instance that can be selected based on its attributes. -// -// Besides the name, exactly one field must be set. -type DeviceV1Alpha3 struct { - // Name is unique identifier among all devices managed by the driver in the pool. - // - // It must be a DNS label. - Name *string `field:"required" json:"name" yaml:"name"` - // Basic defines one device instance. - Basic *BasicDeviceV1Alpha3 `field:"optional" json:"basic" yaml:"basic"` -} - diff --git a/pods/imports/k8s/DownwardApiProjection.go b/pods/imports/k8s/DownwardApiProjection.go deleted file mode 100644 index 6448c6b05..000000000 --- a/pods/imports/k8s/DownwardApiProjection.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// Represents downward API info for projecting into a projected volume. -// -// Note that this is identical to a downwardAPI volume source without the default mode. -type DownwardApiProjection struct { - // Items is a list of DownwardAPIVolume file. - Items *[]*DownwardApiVolumeFile `field:"optional" json:"items" yaml:"items"` -} - diff --git a/pods/imports/k8s/DownwardApiVolumeFile.go b/pods/imports/k8s/DownwardApiVolumeFile.go deleted file mode 100644 index 33a57b662..000000000 --- a/pods/imports/k8s/DownwardApiVolumeFile.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// DownwardAPIVolumeFile represents information to create the file containing the pod field. -type DownwardApiVolumeFile struct { - // Required: Path is the relative path name of the file to be created. - // - // Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' - Path *string `field:"required" json:"path" yaml:"path"` - // Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. - FieldRef *ObjectFieldSelector `field:"optional" json:"fieldRef" yaml:"fieldRef"` - // Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - // - // YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - Mode *float64 `field:"optional" json:"mode" yaml:"mode"` - // Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - ResourceFieldRef *ResourceFieldSelector `field:"optional" json:"resourceFieldRef" yaml:"resourceFieldRef"` -} - diff --git a/pods/imports/k8s/DownwardApiVolumeSource.go b/pods/imports/k8s/DownwardApiVolumeSource.go deleted file mode 100644 index 4790b5b17..000000000 --- a/pods/imports/k8s/DownwardApiVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// DownwardAPIVolumeSource represents a volume containing downward API info. -// -// Downward API volumes support ownership management and SELinux relabeling. -type DownwardApiVolumeSource struct { - // Optional: mode bits to use on created files by default. - // - // Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - // Default: 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - // - DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` - // Items is a list of downward API volume file. - Items *[]*DownwardApiVolumeFile `field:"optional" json:"items" yaml:"items"` -} - diff --git a/pods/imports/k8s/EmptyDirVolumeSource.go b/pods/imports/k8s/EmptyDirVolumeSource.go deleted file mode 100644 index 4303b7ee6..000000000 --- a/pods/imports/k8s/EmptyDirVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Represents an empty directory for a pod. -// -// Empty directory volumes support ownership management and SELinux relabeling. -type EmptyDirVolumeSource struct { - // medium represents what type of storage medium should back this directory. - // - // The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - Medium *string `field:"optional" json:"medium" yaml:"medium"` - // sizeLimit is the total amount of local storage required for this EmptyDir volume. - // - // The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - SizeLimit Quantity `field:"optional" json:"sizeLimit" yaml:"sizeLimit"` -} - diff --git a/pods/imports/k8s/Endpoint.go b/pods/imports/k8s/Endpoint.go deleted file mode 100644 index 8e13f3cba..000000000 --- a/pods/imports/k8s/Endpoint.go +++ /dev/null @@ -1,31 +0,0 @@ -package k8s - - -// Endpoint represents a single logical "backend" implementing a service. -type Endpoint struct { - // addresses of this endpoint. - // - // The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267 - Addresses *[]*string `field:"required" json:"addresses" yaml:"addresses"` - // conditions contains information about the current status of the endpoint. - Conditions *EndpointConditions `field:"optional" json:"conditions" yaml:"conditions"` - // deprecatedTopology contains topology information part of the v1beta1 API. - // - // This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead. - DeprecatedTopology *map[string]*string `field:"optional" json:"deprecatedTopology" yaml:"deprecatedTopology"` - // hints contains information associated with how an endpoint should be consumed. - Hints *EndpointHints `field:"optional" json:"hints" yaml:"hints"` - // hostname of this endpoint. - // - // This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation. - Hostname *string `field:"optional" json:"hostname" yaml:"hostname"` - // nodeName represents the name of the Node hosting this endpoint. - // - // This can be used to determine endpoints local to a Node. - NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` - // targetRef is a reference to a Kubernetes object that represents this endpoint. - TargetRef *ObjectReference `field:"optional" json:"targetRef" yaml:"targetRef"` - // zone is the name of the Zone this endpoint exists in. - Zone *string `field:"optional" json:"zone" yaml:"zone"` -} - diff --git a/pods/imports/k8s/EndpointAddress.go b/pods/imports/k8s/EndpointAddress.go deleted file mode 100644 index 6de4516b4..000000000 --- a/pods/imports/k8s/EndpointAddress.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// EndpointAddress is a tuple that describes single IP address. -type EndpointAddress struct { - // The IP of this endpoint. - // - // May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16). - Ip *string `field:"required" json:"ip" yaml:"ip"` - // The Hostname of this endpoint. - Hostname *string `field:"optional" json:"hostname" yaml:"hostname"` - // Optional: Node hosting this endpoint. - // - // This can be used to determine endpoints local to a node. - NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` - // Reference to object providing the endpoint. - TargetRef *ObjectReference `field:"optional" json:"targetRef" yaml:"targetRef"` -} - diff --git a/pods/imports/k8s/EndpointConditions.go b/pods/imports/k8s/EndpointConditions.go deleted file mode 100644 index 3dacb5d04..000000000 --- a/pods/imports/k8s/EndpointConditions.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// EndpointConditions represents the current condition of an endpoint. -type EndpointConditions struct { - // ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. - // - // A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be "true" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag. - Ready *bool `field:"optional" json:"ready" yaml:"ready"` - // serving is identical to ready except that it is set regardless of the terminating state of endpoints. - // - // This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. - Serving *bool `field:"optional" json:"serving" yaml:"serving"` - // terminating indicates that this endpoint is terminating. - // - // A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. - Terminating *bool `field:"optional" json:"terminating" yaml:"terminating"` -} - diff --git a/pods/imports/k8s/EndpointHints.go b/pods/imports/k8s/EndpointHints.go deleted file mode 100644 index 99b3f4109..000000000 --- a/pods/imports/k8s/EndpointHints.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// EndpointHints provides hints describing how an endpoint should be consumed. -type EndpointHints struct { - // forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. - ForZones *[]*ForZone `field:"optional" json:"forZones" yaml:"forZones"` -} - diff --git a/pods/imports/k8s/EndpointPort.go b/pods/imports/k8s/EndpointPort.go deleted file mode 100644 index 997091edc..000000000 --- a/pods/imports/k8s/EndpointPort.go +++ /dev/null @@ -1,32 +0,0 @@ -package k8s - - -// EndpointPort is a tuple that describes a single port. -type EndpointPort struct { - // The port number of the endpoint. - Port *float64 `field:"required" json:"port" yaml:"port"` - // The application protocol for this port. - // - // This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: - // - // * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). - // - // * Kubernetes-defined prefixed names: - // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- - // * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 - // * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 - // - // * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. - AppProtocol *string `field:"optional" json:"appProtocol" yaml:"appProtocol"` - // The name of this port. - // - // This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined. - Name *string `field:"optional" json:"name" yaml:"name"` - // The IP protocol for this port. - // - // Must be UDP, TCP, or SCTP. Default is TCP. - // Default: TCP. - // - Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` -} - diff --git a/pods/imports/k8s/EndpointSubset.go b/pods/imports/k8s/EndpointSubset.go deleted file mode 100644 index 38f153b25..000000000 --- a/pods/imports/k8s/EndpointSubset.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// EndpointSubset is a group of addresses with a common set of ports. -// -// The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given: -// -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// } -// -// The resulting set of endpoints can be viewed as: -// -// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], -// b: [ 10.10.1.1:309, 10.10.2.2:309 ] -type EndpointSubset struct { - // IP addresses which offer the related ports that are marked as ready. - // - // These endpoints should be considered safe for load balancers and clients to utilize. - Addresses *[]*EndpointAddress `field:"optional" json:"addresses" yaml:"addresses"` - // IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check. - NotReadyAddresses *[]*EndpointAddress `field:"optional" json:"notReadyAddresses" yaml:"notReadyAddresses"` - // Port numbers available on the related IP addresses. - Ports *[]*EndpointPort `field:"optional" json:"ports" yaml:"ports"` -} - diff --git a/pods/imports/k8s/EnvFromSource.go b/pods/imports/k8s/EnvFromSource.go deleted file mode 100644 index 2dfd01eda..000000000 --- a/pods/imports/k8s/EnvFromSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// EnvFromSource represents the source of a set of ConfigMaps. -type EnvFromSource struct { - // The ConfigMap to select from. - ConfigMapRef *ConfigMapEnvSource `field:"optional" json:"configMapRef" yaml:"configMapRef"` - // An optional identifier to prepend to each key in the ConfigMap. - // - // Must be a C_IDENTIFIER. - Prefix *string `field:"optional" json:"prefix" yaml:"prefix"` - // The Secret to select from. - SecretRef *SecretEnvSource `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/EnvVar.go b/pods/imports/k8s/EnvVar.go deleted file mode 100644 index e35720e28..000000000 --- a/pods/imports/k8s/EnvVar.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// EnvVar represents an environment variable present in a Container. -type EnvVar struct { - // Name of the environment variable. - // - // Must be a C_IDENTIFIER. - Name *string `field:"required" json:"name" yaml:"name"` - // Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. - // - // If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". - // Default: . - // - Value *string `field:"optional" json:"value" yaml:"value"` - // Source for the environment variable's value. - // - // Cannot be used if value is not empty. - ValueFrom *EnvVarSource `field:"optional" json:"valueFrom" yaml:"valueFrom"` -} - diff --git a/pods/imports/k8s/EnvVarSource.go b/pods/imports/k8s/EnvVarSource.go deleted file mode 100644 index 8995ac277..000000000 --- a/pods/imports/k8s/EnvVarSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// EnvVarSource represents a source for the value of an EnvVar. -type EnvVarSource struct { - // Selects a key of a ConfigMap. - ConfigMapKeyRef *ConfigMapKeySelector `field:"optional" json:"configMapKeyRef" yaml:"configMapKeyRef"` - // Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - FieldRef *ObjectFieldSelector `field:"optional" json:"fieldRef" yaml:"fieldRef"` - // Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - ResourceFieldRef *ResourceFieldSelector `field:"optional" json:"resourceFieldRef" yaml:"resourceFieldRef"` - // Selects a key of a secret in the pod's namespace. - SecretKeyRef *SecretKeySelector `field:"optional" json:"secretKeyRef" yaml:"secretKeyRef"` -} - diff --git a/pods/imports/k8s/EphemeralContainer.go b/pods/imports/k8s/EphemeralContainer.go deleted file mode 100644 index 27a647cc1..000000000 --- a/pods/imports/k8s/EphemeralContainer.go +++ /dev/null @@ -1,111 +0,0 @@ -package k8s - - -// An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. -// -// Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation. -// -// To add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted. -type EphemeralContainer struct { - // Name of the ephemeral container specified as a DNS_LABEL. - // - // This name must be unique among all containers, init containers and ephemeral containers. - Name *string `field:"required" json:"name" yaml:"name"` - // Arguments to the entrypoint. - // - // The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - Args *[]*string `field:"optional" json:"args" yaml:"args"` - // Entrypoint array. - // - // Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - Command *[]*string `field:"optional" json:"command" yaml:"command"` - // List of environment variables to set in the container. - // - // Cannot be updated. - Env *[]*EnvVar `field:"optional" json:"env" yaml:"env"` - // List of sources to populate environment variables in the container. - // - // The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - EnvFrom *[]*EnvFromSource `field:"optional" json:"envFrom" yaml:"envFrom"` - // Container image name. - // - // More info: https://kubernetes.io/docs/concepts/containers/images - Image *string `field:"optional" json:"image" yaml:"image"` - // Image pull policy. - // - // One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images - // Default: Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images - // - ImagePullPolicy *string `field:"optional" json:"imagePullPolicy" yaml:"imagePullPolicy"` - // Lifecycle is not allowed for ephemeral containers. - Lifecycle *Lifecycle `field:"optional" json:"lifecycle" yaml:"lifecycle"` - // Probes are not allowed for ephemeral containers. - LivenessProbe *Probe `field:"optional" json:"livenessProbe" yaml:"livenessProbe"` - // Ports are not allowed for ephemeral containers. - Ports *[]*ContainerPort `field:"optional" json:"ports" yaml:"ports"` - // Probes are not allowed for ephemeral containers. - ReadinessProbe *Probe `field:"optional" json:"readinessProbe" yaml:"readinessProbe"` - // Resources resize policy for the container. - ResizePolicy *[]*ContainerResizePolicy `field:"optional" json:"resizePolicy" yaml:"resizePolicy"` - // Resources are not allowed for ephemeral containers. - // - // Ephemeral containers use spare resources already allocated to the pod. - Resources *ResourceRequirements `field:"optional" json:"resources" yaml:"resources"` - // Restart policy for the container to manage the restart behavior of each container within a pod. - // - // This may only be set for init containers. You cannot set this field on ephemeral containers. - RestartPolicy *string `field:"optional" json:"restartPolicy" yaml:"restartPolicy"` - // Optional: SecurityContext defines the security options the ephemeral container should be run with. - // - // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. - SecurityContext *SecurityContext `field:"optional" json:"securityContext" yaml:"securityContext"` - // Probes are not allowed for ephemeral containers. - StartupProbe *Probe `field:"optional" json:"startupProbe" yaml:"startupProbe"` - // Whether this container should allocate a buffer for stdin in the container runtime. - // - // If this is not set, reads from stdin in the container will always result in EOF. Default is false. - // Default: false. - // - Stdin *bool `field:"optional" json:"stdin" yaml:"stdin"` - // Whether the container runtime should close the stdin channel after it has been opened by a single attach. - // - // When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - // Default: false. - // - StdinOnce *bool `field:"optional" json:"stdinOnce" yaml:"stdinOnce"` - // If set, the name of the container from PodSpec that this ephemeral container targets. - // - // The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec. - // - // The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined. - TargetContainerName *string `field:"optional" json:"targetContainerName" yaml:"targetContainerName"` - // Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. - // - // Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. - // Default: dev/termination-log. Cannot be updated. - // - TerminationMessagePath *string `field:"optional" json:"terminationMessagePath" yaml:"terminationMessagePath"` - // Indicate how the termination message should be populated. - // - // File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - // Default: File. Cannot be updated. - // - TerminationMessagePolicy *string `field:"optional" json:"terminationMessagePolicy" yaml:"terminationMessagePolicy"` - // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. - // - // Default is false. - // Default: false. - // - Tty *bool `field:"optional" json:"tty" yaml:"tty"` - // volumeDevices is the list of block devices to be used by the container. - VolumeDevices *[]*VolumeDevice `field:"optional" json:"volumeDevices" yaml:"volumeDevices"` - // Pod volumes to mount into the container's filesystem. - // - // Subpath mounts are not allowed for ephemeral containers. Cannot be updated. - VolumeMounts *[]*VolumeMount `field:"optional" json:"volumeMounts" yaml:"volumeMounts"` - // Container's working directory. - // - // If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - WorkingDir *string `field:"optional" json:"workingDir" yaml:"workingDir"` -} - diff --git a/pods/imports/k8s/EphemeralVolumeSource.go b/pods/imports/k8s/EphemeralVolumeSource.go deleted file mode 100644 index b511fa131..000000000 --- a/pods/imports/k8s/EphemeralVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Represents an ephemeral volume that is handled by a normal storage driver. -type EphemeralVolumeSource struct { - // Will be used to create a stand-alone PVC to provision the volume. - // - // The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). - // - // An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. - // - // This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. - // - // Required, must not be nil. - VolumeClaimTemplate *PersistentVolumeClaimTemplate `field:"optional" json:"volumeClaimTemplate" yaml:"volumeClaimTemplate"` -} - diff --git a/pods/imports/k8s/EventSeries.go b/pods/imports/k8s/EventSeries.go deleted file mode 100644 index 78e60f705..000000000 --- a/pods/imports/k8s/EventSeries.go +++ /dev/null @@ -1,14 +0,0 @@ -package k8s - -import ( - "time" -) - -// EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. How often to update the EventSeries is up to the event reporters. The default event reporter in "k8s.io/client-go/tools/events/event_broadcaster.go" shows how this struct is updated on heartbeats and can guide customized reporter implementations. -type EventSeries struct { - // count is the number of occurrences in this series up to the last heartbeat time. - Count *float64 `field:"required" json:"count" yaml:"count"` - // lastObservedTime is the time when last Event from the series was seen before last heartbeat. - LastObservedTime *time.Time `field:"required" json:"lastObservedTime" yaml:"lastObservedTime"` -} - diff --git a/pods/imports/k8s/EventSource.go b/pods/imports/k8s/EventSource.go deleted file mode 100644 index fe94438b5..000000000 --- a/pods/imports/k8s/EventSource.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// EventSource contains information for an event. -type EventSource struct { - // Component from which the event is generated. - Component *string `field:"optional" json:"component" yaml:"component"` - // Node name on which the event is generated. - Host *string `field:"optional" json:"host" yaml:"host"` -} - diff --git a/pods/imports/k8s/ExecAction.go b/pods/imports/k8s/ExecAction.go deleted file mode 100644 index 07ec99d0c..000000000 --- a/pods/imports/k8s/ExecAction.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ExecAction describes a "run in container" action. -type ExecAction struct { - // Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. - // - // The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - Command *[]*string `field:"optional" json:"command" yaml:"command"` -} - diff --git a/pods/imports/k8s/ExemptPriorityLevelConfiguration.go b/pods/imports/k8s/ExemptPriorityLevelConfiguration.go deleted file mode 100644 index 27deebab0..000000000 --- a/pods/imports/k8s/ExemptPriorityLevelConfiguration.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. -// -// In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. -type ExemptPriorityLevelConfiguration struct { - // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. - // - // This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. - // - // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) - LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` - // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. - // - // This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: - // - // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) - // - // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. - NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` -} - diff --git a/pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go b/pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go deleted file mode 100644 index 135649bd7..000000000 --- a/pods/imports/k8s/ExemptPriorityLevelConfigurationV1Beta3.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. -// -// In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. -type ExemptPriorityLevelConfigurationV1Beta3 struct { - // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. - // - // This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. - // - // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) - LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` - // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. - // - // This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: - // - // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) - // - // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. - NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` -} - diff --git a/pods/imports/k8s/ExternalDocumentation.go b/pods/imports/k8s/ExternalDocumentation.go deleted file mode 100644 index f9de8759c..000000000 --- a/pods/imports/k8s/ExternalDocumentation.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// ExternalDocumentation allows referencing an external resource for extended documentation. -type ExternalDocumentation struct { - Description *string `field:"optional" json:"description" yaml:"description"` - Url *string `field:"optional" json:"url" yaml:"url"` -} - diff --git a/pods/imports/k8s/ExternalMetricSourceV2.go b/pods/imports/k8s/ExternalMetricSourceV2.go deleted file mode 100644 index 5c8276a30..000000000 --- a/pods/imports/k8s/ExternalMetricSourceV2.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). -type ExternalMetricSourceV2 struct { - // metric identifies the target metric by name and selector. - Metric *MetricIdentifierV2 `field:"required" json:"metric" yaml:"metric"` - // target specifies the target value for the given metric. - Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` -} - diff --git a/pods/imports/k8s/FcVolumeSource.go b/pods/imports/k8s/FcVolumeSource.go deleted file mode 100644 index 4804a0144..000000000 --- a/pods/imports/k8s/FcVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Represents a Fibre Channel volume. -// -// Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling. -type FcVolumeSource struct { - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // lun is Optional: FC target lun number. - Lun *float64 `field:"optional" json:"lun" yaml:"lun"` - // readOnly is Optional: Defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // targetWWNs is Optional: FC target worldwide names (WWNs). - TargetWwNs *[]*string `field:"optional" json:"targetWwNs" yaml:"targetWwNs"` - // wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - Wwids *[]*string `field:"optional" json:"wwids" yaml:"wwids"` -} - diff --git a/pods/imports/k8s/FieldSelectorAttributes.go b/pods/imports/k8s/FieldSelectorAttributes.go deleted file mode 100644 index 359e58e45..000000000 --- a/pods/imports/k8s/FieldSelectorAttributes.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// FieldSelectorAttributes indicates a field limited access. -// -// Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid. -type FieldSelectorAttributes struct { - // rawSelector is the serialization of a field selector that would be included in a query parameter. - // - // Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present. - RawSelector *string `field:"optional" json:"rawSelector" yaml:"rawSelector"` - // requirements is the parsed interpretation of a field selector. - // - // All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood. - Requirements *[]*FieldSelectorRequirement `field:"optional" json:"requirements" yaml:"requirements"` -} - diff --git a/pods/imports/k8s/FieldSelectorRequirement.go b/pods/imports/k8s/FieldSelectorRequirement.go deleted file mode 100644 index 047f838e5..000000000 --- a/pods/imports/k8s/FieldSelectorRequirement.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// FieldSelectorRequirement is a selector that contains values, a key, and an operator that relates the key and values. -type FieldSelectorRequirement struct { - // key is the field selector key that the requirement applies to. - Key *string `field:"required" json:"key" yaml:"key"` - // operator represents a key's relationship to a set of values. - // - // Valid operators are In, NotIn, Exists, DoesNotExist. The list of operators may grow in the future. - Operator *string `field:"required" json:"operator" yaml:"operator"` - // values is an array of string values. - // - // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. - Values *[]*string `field:"optional" json:"values" yaml:"values"` -} - diff --git a/pods/imports/k8s/FlexPersistentVolumeSource.go b/pods/imports/k8s/FlexPersistentVolumeSource.go deleted file mode 100644 index 07b6e2961..000000000 --- a/pods/imports/k8s/FlexPersistentVolumeSource.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin. -type FlexPersistentVolumeSource struct { - // driver is the name of the driver to use for this volume. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // fsType is the Filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // options is Optional: this field holds extra command options if any. - Options *map[string]*string `field:"optional" json:"options" yaml:"options"` - // readOnly is Optional: defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. - // - // This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. - SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/FlexVolumeSource.go b/pods/imports/k8s/FlexVolumeSource.go deleted file mode 100644 index acfb1329c..000000000 --- a/pods/imports/k8s/FlexVolumeSource.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. -type FlexVolumeSource struct { - // driver is the name of the driver to use for this volume. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // options is Optional: this field holds extra command options if any. - Options *map[string]*string `field:"optional" json:"options" yaml:"options"` - // readOnly is Optional: defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. - // - // This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. - SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/FlockerVolumeSource.go b/pods/imports/k8s/FlockerVolumeSource.go deleted file mode 100644 index f1f0e8364..000000000 --- a/pods/imports/k8s/FlockerVolumeSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Represents a Flocker volume mounted by the Flocker agent. -// -// One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling. -type FlockerVolumeSource struct { - // datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated. - DatasetName *string `field:"optional" json:"datasetName" yaml:"datasetName"` - // datasetUUID is the UUID of the dataset. - // - // This is unique identifier of a Flocker dataset. - DatasetUuid *string `field:"optional" json:"datasetUuid" yaml:"datasetUuid"` -} - diff --git a/pods/imports/k8s/FlowDistinguisherMethod.go b/pods/imports/k8s/FlowDistinguisherMethod.go deleted file mode 100644 index 4e512e612..000000000 --- a/pods/imports/k8s/FlowDistinguisherMethod.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// FlowDistinguisherMethod specifies the method of a flow distinguisher. -type FlowDistinguisherMethod struct { - // `type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". - // - // Required. - Type *string `field:"required" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go b/pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go deleted file mode 100644 index 244b7e704..000000000 --- a/pods/imports/k8s/FlowDistinguisherMethodV1Beta3.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// FlowDistinguisherMethod specifies the method of a flow distinguisher. -type FlowDistinguisherMethodV1Beta3 struct { - // `type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". - // - // Required. - Type *string `field:"required" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/FlowSchemaSpec.go b/pods/imports/k8s/FlowSchemaSpec.go deleted file mode 100644 index c9be559b0..000000000 --- a/pods/imports/k8s/FlowSchemaSpec.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// FlowSchemaSpec describes how the FlowSchema's specification looks like. -type FlowSchemaSpec struct { - // `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. - // - // If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required. - PriorityLevelConfiguration *PriorityLevelConfigurationReference `field:"required" json:"priorityLevelConfiguration" yaml:"priorityLevelConfiguration"` - // `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. - // - // `nil` specifies that the distinguisher is disabled and thus will always be the empty string. - DistinguisherMethod *FlowDistinguisherMethod `field:"optional" json:"distinguisherMethod" yaml:"distinguisherMethod"` - // `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. - // - // The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. - MatchingPrecedence *float64 `field:"optional" json:"matchingPrecedence" yaml:"matchingPrecedence"` - // `rules` describes which requests will match this flow schema. - // - // This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. - Rules *[]*PolicyRulesWithSubjects `field:"optional" json:"rules" yaml:"rules"` -} - diff --git a/pods/imports/k8s/FlowSchemaSpecV1Beta3.go b/pods/imports/k8s/FlowSchemaSpecV1Beta3.go deleted file mode 100644 index c1fdf2fe4..000000000 --- a/pods/imports/k8s/FlowSchemaSpecV1Beta3.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// FlowSchemaSpec describes how the FlowSchema's specification looks like. -type FlowSchemaSpecV1Beta3 struct { - // `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. - // - // If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required. - PriorityLevelConfiguration *PriorityLevelConfigurationReferenceV1Beta3 `field:"required" json:"priorityLevelConfiguration" yaml:"priorityLevelConfiguration"` - // `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. - // - // `nil` specifies that the distinguisher is disabled and thus will always be the empty string. - DistinguisherMethod *FlowDistinguisherMethodV1Beta3 `field:"optional" json:"distinguisherMethod" yaml:"distinguisherMethod"` - // `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. - // - // The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. - MatchingPrecedence *float64 `field:"optional" json:"matchingPrecedence" yaml:"matchingPrecedence"` - // `rules` describes which requests will match this flow schema. - // - // This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. - Rules *[]*PolicyRulesWithSubjectsV1Beta3 `field:"optional" json:"rules" yaml:"rules"` -} - diff --git a/pods/imports/k8s/ForZone.go b/pods/imports/k8s/ForZone.go deleted file mode 100644 index ca1d44e83..000000000 --- a/pods/imports/k8s/ForZone.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// ForZone provides information about which zones should consume this endpoint. -type ForZone struct { - // name represents the name of the zone. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/GcePersistentDiskVolumeSource.go b/pods/imports/k8s/GcePersistentDiskVolumeSource.go deleted file mode 100644 index 394f237a7..000000000 --- a/pods/imports/k8s/GcePersistentDiskVolumeSource.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// Represents a Persistent Disk resource in Google Compute Engine. -// -// A GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling. -type GcePersistentDiskVolumeSource struct { - // pdName is unique name of the PD resource in GCE. - // - // Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - PdName *string `field:"required" json:"pdName" yaml:"pdName"` - // fsType is filesystem type of the volume that you want to mount. - // - // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // partition is the partition in the volume that you want to mount. - // - // If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - Partition *float64 `field:"optional" json:"partition" yaml:"partition"` - // readOnly here will force the ReadOnly setting in VolumeMounts. - // - // Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - // Default: false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/GitRepoVolumeSource.go b/pods/imports/k8s/GitRepoVolumeSource.go deleted file mode 100644 index 7e23dc3f7..000000000 --- a/pods/imports/k8s/GitRepoVolumeSource.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// Represents a volume that is populated with the contents of a git repository. -// -// Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling. -// -// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. -type GitRepoVolumeSource struct { - // repository is the URL. - Repository *string `field:"required" json:"repository" yaml:"repository"` - // directory is the target directory name. - // - // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. - Directory *string `field:"optional" json:"directory" yaml:"directory"` - // revision is the commit hash for the specified revision. - Revision *string `field:"optional" json:"revision" yaml:"revision"` -} - diff --git a/pods/imports/k8s/GlusterfsPersistentVolumeSource.go b/pods/imports/k8s/GlusterfsPersistentVolumeSource.go deleted file mode 100644 index 7b9a3ddb0..000000000 --- a/pods/imports/k8s/GlusterfsPersistentVolumeSource.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// Represents a Glusterfs mount that lasts the lifetime of a pod. -// -// Glusterfs volumes do not support ownership management or SELinux relabeling. -type GlusterfsPersistentVolumeSource struct { - // endpoints is the endpoint name that details Glusterfs topology. - // - // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - Endpoints *string `field:"required" json:"endpoints" yaml:"endpoints"` - // path is the Glusterfs volume path. - // - // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - Path *string `field:"required" json:"path" yaml:"path"` - // endpointsNamespace is the namespace that contains Glusterfs endpoint. - // - // If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - EndpointsNamespace *string `field:"optional" json:"endpointsNamespace" yaml:"endpointsNamespace"` - // readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - // - // Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - // Default: false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/GlusterfsVolumeSource.go b/pods/imports/k8s/GlusterfsVolumeSource.go deleted file mode 100644 index c7a92c922..000000000 --- a/pods/imports/k8s/GlusterfsVolumeSource.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// Represents a Glusterfs mount that lasts the lifetime of a pod. -// -// Glusterfs volumes do not support ownership management or SELinux relabeling. -type GlusterfsVolumeSource struct { - // endpoints is the endpoint name that details Glusterfs topology. - // - // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - Endpoints *string `field:"required" json:"endpoints" yaml:"endpoints"` - // path is the Glusterfs volume path. - // - // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - Path *string `field:"required" json:"path" yaml:"path"` - // readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - // - // Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - // Default: false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/GroupSubjectV1Beta3.go b/pods/imports/k8s/GroupSubjectV1Beta3.go deleted file mode 100644 index e65de083c..000000000 --- a/pods/imports/k8s/GroupSubjectV1Beta3.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// GroupSubject holds detailed information for group-kind subject. -type GroupSubjectV1Beta3 struct { - // name is the user group that matches, or "*" to match all user groups. - // - // See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/GroupVersionResourceV1Alpha1.go b/pods/imports/k8s/GroupVersionResourceV1Alpha1.go deleted file mode 100644 index d07fe86a2..000000000 --- a/pods/imports/k8s/GroupVersionResourceV1Alpha1.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// The names of the group, the version, and the resource. -type GroupVersionResourceV1Alpha1 struct { - // The name of the group. - Group *string `field:"optional" json:"group" yaml:"group"` - // The name of the resource. - Resource *string `field:"optional" json:"resource" yaml:"resource"` - // The name of the version. - Version *string `field:"optional" json:"version" yaml:"version"` -} - diff --git a/pods/imports/k8s/GrpcAction.go b/pods/imports/k8s/GrpcAction.go deleted file mode 100644 index 0039e025f..000000000 --- a/pods/imports/k8s/GrpcAction.go +++ /dev/null @@ -1,14 +0,0 @@ -package k8s - - -type GrpcAction struct { - // Port number of the gRPC service. - // - // Number must be in the range 1 to 65535. - Port *float64 `field:"required" json:"port" yaml:"port"` - // Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - // - // If this is not specified, the default behavior is defined by gRPC. - Service *string `field:"optional" json:"service" yaml:"service"` -} - diff --git a/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go b/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go deleted file mode 100644 index ab1bc472e..000000000 --- a/pods/imports/k8s/HorizontalPodAutoscalerBehaviorV2.go +++ /dev/null @@ -1,18 +0,0 @@ -package k8s - - -// HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). -type HorizontalPodAutoscalerBehaviorV2 struct { - // scaleDown is scaling policy for scaling Down. - // - // If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used). - ScaleDown *HpaScalingRulesV2 `field:"optional" json:"scaleDown" yaml:"scaleDown"` - // scaleUp is scaling policy for scaling Up. - // - // If not set, the default value is the higher of: - // * increase no more than 4 pods per 60 seconds - // * double the number of pods per 60 seconds - // No stabilization is used. - ScaleUp *HpaScalingRulesV2 `field:"optional" json:"scaleUp" yaml:"scaleUp"` -} - diff --git a/pods/imports/k8s/HorizontalPodAutoscalerSpec.go b/pods/imports/k8s/HorizontalPodAutoscalerSpec.go deleted file mode 100644 index b112c5a6d..000000000 --- a/pods/imports/k8s/HorizontalPodAutoscalerSpec.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// specification of a horizontal pod autoscaler. -type HorizontalPodAutoscalerSpec struct { - // maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; - // - // cannot be smaller than MinReplicas. - MaxReplicas *float64 `field:"required" json:"maxReplicas" yaml:"maxReplicas"` - // reference to scaled resource; - // - // horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource. - ScaleTargetRef *CrossVersionObjectReference `field:"required" json:"scaleTargetRef" yaml:"scaleTargetRef"` - // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. - // - // It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. - MinReplicas *float64 `field:"optional" json:"minReplicas" yaml:"minReplicas"` - // targetCPUUtilizationPercentage is the target average CPU utilization (represented as a percentage of requested CPU) over all the pods; - // - // if not specified the default autoscaling policy will be used. - TargetCpuUtilizationPercentage *float64 `field:"optional" json:"targetCpuUtilizationPercentage" yaml:"targetCpuUtilizationPercentage"` -} - diff --git a/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go b/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go deleted file mode 100644 index 60752d51b..000000000 --- a/pods/imports/k8s/HorizontalPodAutoscalerSpecV2.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. -type HorizontalPodAutoscalerSpecV2 struct { - // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. - // - // It cannot be less that minReplicas. - MaxReplicas *float64 `field:"required" json:"maxReplicas" yaml:"maxReplicas"` - // scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count. - ScaleTargetRef *CrossVersionObjectReferenceV2 `field:"required" json:"scaleTargetRef" yaml:"scaleTargetRef"` - // behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). - // - // If not set, the default HPAScalingRules for scale up and scale down are used. - Behavior *HorizontalPodAutoscalerBehaviorV2 `field:"optional" json:"behavior" yaml:"behavior"` - // metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). - // - // The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization. - Metrics *[]*MetricSpecV2 `field:"optional" json:"metrics" yaml:"metrics"` - // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. - // - // It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. - MinReplicas *float64 `field:"optional" json:"minReplicas" yaml:"minReplicas"` -} - diff --git a/pods/imports/k8s/HostAlias.go b/pods/imports/k8s/HostAlias.go deleted file mode 100644 index 045b360fd..000000000 --- a/pods/imports/k8s/HostAlias.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. -type HostAlias struct { - // IP address of the host file entry. - Ip *string `field:"required" json:"ip" yaml:"ip"` - // Hostnames for the above IP address. - Hostnames *[]*string `field:"optional" json:"hostnames" yaml:"hostnames"` -} - diff --git a/pods/imports/k8s/HostPathVolumeSource.go b/pods/imports/k8s/HostPathVolumeSource.go deleted file mode 100644 index 5f3130e1b..000000000 --- a/pods/imports/k8s/HostPathVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Represents a host path mapped into a pod. -// -// Host path volumes do not support ownership management or SELinux relabeling. -type HostPathVolumeSource struct { - // path of the directory on the host. - // - // If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - Path *string `field:"required" json:"path" yaml:"path"` - // type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath. - // Default: More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - // - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/HpaScalingPolicyV2.go b/pods/imports/k8s/HpaScalingPolicyV2.go deleted file mode 100644 index ca37143c1..000000000 --- a/pods/imports/k8s/HpaScalingPolicyV2.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// HPAScalingPolicy is a single policy which must hold true for a specified past interval. -type HpaScalingPolicyV2 struct { - // periodSeconds specifies the window of time for which the policy should hold true. - // - // PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). - PeriodSeconds *float64 `field:"required" json:"periodSeconds" yaml:"periodSeconds"` - // type is used to specify the scaling policy. - Type *string `field:"required" json:"type" yaml:"type"` - // value contains the amount of change which is permitted by the policy. - // - // It must be greater than zero. - Value *float64 `field:"required" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/HpaScalingRulesV2.go b/pods/imports/k8s/HpaScalingRulesV2.go deleted file mode 100644 index d8ab04ea3..000000000 --- a/pods/imports/k8s/HpaScalingRulesV2.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// HPAScalingRules configures the scaling behavior for one direction. -// -// These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen. -type HpaScalingRulesV2 struct { - // policies is a list of potential scaling polices which can be used during scaling. - // - // At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid. - Policies *[]*HpaScalingPolicyV2 `field:"optional" json:"policies" yaml:"policies"` - // selectPolicy is used to specify which policy should be used. - // - // If not set, the default value Max is used. - SelectPolicy *string `field:"optional" json:"selectPolicy" yaml:"selectPolicy"` - // stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. - // - // StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). - StabilizationWindowSeconds *float64 `field:"optional" json:"stabilizationWindowSeconds" yaml:"stabilizationWindowSeconds"` -} - diff --git a/pods/imports/k8s/HttpGetAction.go b/pods/imports/k8s/HttpGetAction.go deleted file mode 100644 index 7c258e914..000000000 --- a/pods/imports/k8s/HttpGetAction.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// HTTPGetAction describes an action based on HTTP Get requests. -type HttpGetAction struct { - // Name or number of the port to access on the container. - // - // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - Port IntOrString `field:"required" json:"port" yaml:"port"` - // Host name to connect to, defaults to the pod IP. - // - // You probably want to set "Host" in httpHeaders instead. - Host *string `field:"optional" json:"host" yaml:"host"` - // Custom headers to set in the request. - // - // HTTP allows repeated headers. - HttpHeaders *[]*HttpHeader `field:"optional" json:"httpHeaders" yaml:"httpHeaders"` - // Path to access on the HTTP server. - Path *string `field:"optional" json:"path" yaml:"path"` - // Scheme to use for connecting to the host. - // - // Defaults to HTTP. - // Default: HTTP. - // - Scheme *string `field:"optional" json:"scheme" yaml:"scheme"` -} - diff --git a/pods/imports/k8s/HttpHeader.go b/pods/imports/k8s/HttpHeader.go deleted file mode 100644 index 052186b6e..000000000 --- a/pods/imports/k8s/HttpHeader.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// HTTPHeader describes a custom header to be used in HTTP probes. -type HttpHeader struct { - // The header field name. - // - // This will be canonicalized upon output, so case-variant names will be understood as the same header. - Name *string `field:"required" json:"name" yaml:"name"` - // The header field value. - Value *string `field:"required" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/HttpIngressPath.go b/pods/imports/k8s/HttpIngressPath.go deleted file mode 100644 index 494029a95..000000000 --- a/pods/imports/k8s/HttpIngressPath.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// HTTPIngressPath associates a path with a backend. -// -// Incoming urls matching the path are forwarded to the backend. -type HttpIngressPath struct { - // backend defines the referenced service endpoint to which the traffic will be forwarded to. - Backend *IngressBackend `field:"required" json:"backend" yaml:"backend"` - // pathType determines the interpretation of the path matching. - // - // PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is - // done on a path element by element basis. A path element refers is the - // list of labels in the path split by the '/' separator. A request is a - // match for path p if every p is an element-wise prefix of p of the - // request path. Note that if the last element of the path is a substring - // of the last element in request path, it is not a match (e.g. /foo/bar - // matches /foo/bar/baz, but does not match /foo/barbaz). - // * ImplementationSpecific: Interpretation of the Path matching is up to - // the IngressClass. Implementations can treat this as a separate PathType - // or treat it identically to Prefix or Exact path types. - // Implementations are required to support all path types. - PathType *string `field:"required" json:"pathType" yaml:"pathType"` - // path is matched against the path of an incoming request. - // - // Currently it can contain characters disallowed from the conventional "path" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value "Exact" or "Prefix". - Path *string `field:"optional" json:"path" yaml:"path"` -} - diff --git a/pods/imports/k8s/HttpIngressRuleValue.go b/pods/imports/k8s/HttpIngressRuleValue.go deleted file mode 100644 index 6e0820f4e..000000000 --- a/pods/imports/k8s/HttpIngressRuleValue.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// HTTPIngressRuleValue is a list of http selectors pointing to backends. -// -// In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'. -type HttpIngressRuleValue struct { - // paths is a collection of paths that map requests to backends. - Paths *[]*HttpIngressPath `field:"required" json:"paths" yaml:"paths"` -} - diff --git a/pods/imports/k8s/ImageVolumeSource.go b/pods/imports/k8s/ImageVolumeSource.go deleted file mode 100644 index 6ffe8ed23..000000000 --- a/pods/imports/k8s/ImageVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// ImageVolumeSource represents a image volume resource. -type ImageVolumeSource struct { - // Policy for pulling OCI objects. - // - // Possible values are: Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. - // Default: Always if :latest tag is specified, or IfNotPresent otherwise. - // - PullPolicy *string `field:"optional" json:"pullPolicy" yaml:"pullPolicy"` - // Required: Image or artifact reference to be used. - // - // Behaves in the same way as pod.spec.containers[*].image. Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. - Reference *string `field:"optional" json:"reference" yaml:"reference"` -} - diff --git a/pods/imports/k8s/IngressBackend.go b/pods/imports/k8s/IngressBackend.go deleted file mode 100644 index 9adc75b1c..000000000 --- a/pods/imports/k8s/IngressBackend.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// IngressBackend describes all endpoints for a given service and port. -type IngressBackend struct { - // resource is an ObjectRef to another Kubernetes resource in the namespace of the Ingress object. - // - // If resource is specified, a service.Name and service.Port must not be specified. This is a mutually exclusive setting with "Service". - Resource *TypedLocalObjectReference `field:"optional" json:"resource" yaml:"resource"` - // service references a service as a backend. - // - // This is a mutually exclusive setting with "Resource". - Service *IngressServiceBackend `field:"optional" json:"service" yaml:"service"` -} - diff --git a/pods/imports/k8s/IngressClassParametersReference.go b/pods/imports/k8s/IngressClassParametersReference.go deleted file mode 100644 index 287109612..000000000 --- a/pods/imports/k8s/IngressClassParametersReference.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// IngressClassParametersReference identifies an API object. -// -// This can be used to specify a cluster or namespace-scoped resource. -type IngressClassParametersReference struct { - // kind is the type of resource being referenced. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // name is the name of resource being referenced. - Name *string `field:"required" json:"name" yaml:"name"` - // apiGroup is the group for the resource being referenced. - // - // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` - // namespace is the namespace of the resource being referenced. - // - // This field is required when scope is set to "Namespace" and must be unset when scope is set to "Cluster". - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // scope represents if this refers to a cluster or namespace scoped resource. - // - // This may be set to "Cluster" (default) or "Namespace". - Scope *string `field:"optional" json:"scope" yaml:"scope"` -} - diff --git a/pods/imports/k8s/IngressClassSpec.go b/pods/imports/k8s/IngressClassSpec.go deleted file mode 100644 index 186e5dd26..000000000 --- a/pods/imports/k8s/IngressClassSpec.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// IngressClassSpec provides information about the class of an Ingress. -type IngressClassSpec struct { - // controller refers to the name of the controller that should handle this class. - // - // This allows for different "flavors" that are controlled by the same controller. For example, you may have different parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. "acme.io/ingress-controller". This field is immutable. - Controller *string `field:"optional" json:"controller" yaml:"controller"` - // parameters is a link to a custom resource containing additional configuration for the controller. - // - // This is optional if the controller does not require extra parameters. - Parameters *IngressClassParametersReference `field:"optional" json:"parameters" yaml:"parameters"` -} - diff --git a/pods/imports/k8s/IngressRule.go b/pods/imports/k8s/IngressRule.go deleted file mode 100644 index caa4459a4..000000000 --- a/pods/imports/k8s/IngressRule.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// IngressRule represents the rules mapping the paths under a specified host to the related backend services. -// -// Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue. -type IngressRule struct { - // host is the fully qualified domain name of a network host, as defined by RFC 3986. - // - // Note the following deviations from the "host" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to - // the IP in the Spec of the parent Ingress. - // 2. The `:` delimiter is not respected because ports are not allowed. - // Currently the port of an Ingress is implicitly :80 for http and - // :443 for https. - // Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue. - // - // host can be "precise" which is a domain name without the terminating dot of a network host (e.g. "foo.bar.com") or "wildcard", which is a domain name prefixed with a single wildcard label (e.g. "*.foo.com"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == "*"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule. - Host *string `field:"optional" json:"host" yaml:"host"` - Http *HttpIngressRuleValue `field:"optional" json:"http" yaml:"http"` -} - diff --git a/pods/imports/k8s/IngressServiceBackend.go b/pods/imports/k8s/IngressServiceBackend.go deleted file mode 100644 index 56f0dda39..000000000 --- a/pods/imports/k8s/IngressServiceBackend.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// IngressServiceBackend references a Kubernetes Service as a Backend. -type IngressServiceBackend struct { - // name is the referenced service. - // - // The service must exist in the same namespace as the Ingress object. - Name *string `field:"required" json:"name" yaml:"name"` - // port of the referenced service. - // - // A port name or port number is required for a IngressServiceBackend. - Port *ServiceBackendPort `field:"optional" json:"port" yaml:"port"` -} - diff --git a/pods/imports/k8s/IngressSpec.go b/pods/imports/k8s/IngressSpec.go deleted file mode 100644 index 6f2a5ef5a..000000000 --- a/pods/imports/k8s/IngressSpec.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// IngressSpec describes the Ingress the user wishes to exist. -type IngressSpec struct { - // defaultBackend is the backend that should handle requests that don't match any rule. - // - // If Rules are not specified, DefaultBackend must be specified. If DefaultBackend is not set, the handling of requests that do not match any of the rules will be up to the Ingress controller. - DefaultBackend *IngressBackend `field:"optional" json:"defaultBackend" yaml:"defaultBackend"` - // ingressClassName is the name of an IngressClass cluster resource. - // - // Ingress controller implementations use this field to know whether they should be serving this Ingress resource, by a transitive connection (controller -> IngressClass -> Ingress resource). Although the `kubernetes.io/ingress.class` annotation (simple constant name) was never formally defined, it was widely supported by Ingress controllers to create a direct binding between Ingress controller and Ingress resources. Newly created Ingress resources should prefer using the field. However, even though the annotation is officially deprecated, for backwards compatibility reasons, ingress controllers should still honor that annotation if present. - IngressClassName *string `field:"optional" json:"ingressClassName" yaml:"ingressClassName"` - // rules is a list of host rules used to configure the Ingress. - // - // If unspecified, or no rule matches, all traffic is sent to the default backend. - Rules *[]*IngressRule `field:"optional" json:"rules" yaml:"rules"` - // tls represents the TLS configuration. - // - // Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI. - Tls *[]*IngressTls `field:"optional" json:"tls" yaml:"tls"` -} - diff --git a/pods/imports/k8s/IngressTls.go b/pods/imports/k8s/IngressTls.go deleted file mode 100644 index 3ce4ba5a0..000000000 --- a/pods/imports/k8s/IngressTls.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// IngressTLS describes the transport layer security associated with an ingress. -type IngressTls struct { - // hosts is a list of hosts included in the TLS certificate. - // - // The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified. - // Default: the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified. - // - Hosts *[]*string `field:"optional" json:"hosts" yaml:"hosts"` - // secretName is the name of the secret used to terminate TLS traffic on port 443. - // - // Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the "Host" header is used for routing. - SecretName *string `field:"optional" json:"secretName" yaml:"secretName"` -} - diff --git a/pods/imports/k8s/IntOrString.go b/pods/imports/k8s/IntOrString.go deleted file mode 100644 index 72e30d857..000000000 --- a/pods/imports/k8s/IntOrString.go +++ /dev/null @@ -1,63 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" -) - -type IntOrString interface { - Value() interface{} -} - -// The jsii proxy struct for IntOrString -type jsiiProxy_IntOrString struct { - _ byte // padding -} - -func (j *jsiiProxy_IntOrString) Value() interface{} { - var returns interface{} - _jsii_.Get( - j, - "value", - &returns, - ) - return returns -} - - -func IntOrString_FromNumber(value *float64) IntOrString { - _init_.Initialize() - - if err := validateIntOrString_FromNumberParameters(value); err != nil { - panic(err) - } - var returns IntOrString - - _jsii_.StaticInvoke( - "k8s.IntOrString", - "fromNumber", - []interface{}{value}, - &returns, - ) - - return returns -} - -func IntOrString_FromString(value *string) IntOrString { - _init_.Initialize() - - if err := validateIntOrString_FromStringParameters(value); err != nil { - panic(err) - } - var returns IntOrString - - _jsii_.StaticInvoke( - "k8s.IntOrString", - "fromString", - []interface{}{value}, - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/IntOrString__checks.go b/pods/imports/k8s/IntOrString__checks.go deleted file mode 100644 index 0b0e648a2..000000000 --- a/pods/imports/k8s/IntOrString__checks.go +++ /dev/null @@ -1,24 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" -) - -func validateIntOrString_FromNumberParameters(value *float64) error { - if value == nil { - return fmt.Errorf("parameter value is required, but nil was provided") - } - - return nil -} - -func validateIntOrString_FromStringParameters(value *string) error { - if value == nil { - return fmt.Errorf("parameter value is required, but nil was provided") - } - - return nil -} - diff --git a/pods/imports/k8s/IntOrString__no_checks.go b/pods/imports/k8s/IntOrString__no_checks.go deleted file mode 100644 index d18d4efae..000000000 --- a/pods/imports/k8s/IntOrString__no_checks.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateIntOrString_FromNumberParameters(value *float64) error { - return nil -} - -func validateIntOrString_FromStringParameters(value *string) error { - return nil -} - diff --git a/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go b/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go deleted file mode 100644 index 964e72583..000000000 --- a/pods/imports/k8s/IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Kind is a string value representing the REST resource this object represents. -// -// Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -type IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind string - -const ( - // DeleteOptions. - IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind_DELETE_OPTIONS IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind = "DELETE_OPTIONS" -) - diff --git a/pods/imports/k8s/IpAddressSpecV1Beta1.go b/pods/imports/k8s/IpAddressSpecV1Beta1.go deleted file mode 100644 index 5b0be72dd..000000000 --- a/pods/imports/k8s/IpAddressSpecV1Beta1.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// IPAddressSpec describe the attributes in an IP Address. -type IpAddressSpecV1Beta1 struct { - // ParentRef references the resource that an IPAddress is attached to. - // - // An IPAddress must reference a parent object. - ParentRef *ParentReferenceV1Beta1 `field:"required" json:"parentRef" yaml:"parentRef"` -} - diff --git a/pods/imports/k8s/IpBlock.go b/pods/imports/k8s/IpBlock.go deleted file mode 100644 index 6287c707d..000000000 --- a/pods/imports/k8s/IpBlock.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// IPBlock describes a particular CIDR (Ex. -// -// "192.168.1.0/24","2001:db8::/64") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule. -type IpBlock struct { - // cidr is a string representing the IPBlock Valid examples are "192.168.1.0/24" or "2001:db8::/64". - Cidr *string `field:"required" json:"cidr" yaml:"cidr"` - // except is a slice of CIDRs that should not be included within an IPBlock Valid examples are "192.168.1.0/24" or "2001:db8::/64" Except values will be rejected if they are outside the cidr range. - Except *[]*string `field:"optional" json:"except" yaml:"except"` -} - diff --git a/pods/imports/k8s/IscsiPersistentVolumeSource.go b/pods/imports/k8s/IscsiPersistentVolumeSource.go deleted file mode 100644 index 2f2731246..000000000 --- a/pods/imports/k8s/IscsiPersistentVolumeSource.go +++ /dev/null @@ -1,47 +0,0 @@ -package k8s - - -// ISCSIPersistentVolumeSource represents an ISCSI disk. -// -// ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. -type IscsiPersistentVolumeSource struct { - // iqn is Target iSCSI Qualified Name. - Iqn *string `field:"required" json:"iqn" yaml:"iqn"` - // lun is iSCSI Target Lun number. - Lun *float64 `field:"required" json:"lun" yaml:"lun"` - // targetPortal is iSCSI Target Portal. - // - // The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - TargetPortal *string `field:"required" json:"targetPortal" yaml:"targetPortal"` - // chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication. - ChapAuthDiscovery *bool `field:"optional" json:"chapAuthDiscovery" yaml:"chapAuthDiscovery"` - // chapAuthSession defines whether support iSCSI Session CHAP authentication. - ChapAuthSession *bool `field:"optional" json:"chapAuthSession" yaml:"chapAuthSession"` - // fsType is the filesystem type of the volume that you want to mount. - // - // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // initiatorName is the custom iSCSI Initiator Name. - // - // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. - InitiatorName *string `field:"optional" json:"initiatorName" yaml:"initiatorName"` - // iscsiInterface is the interface Name that uses an iSCSI transport. - // - // Defaults to 'default' (tcp). - // Default: default' (tcp). - // - IscsiInterface *string `field:"optional" json:"iscsiInterface" yaml:"iscsiInterface"` - // portals is the iSCSI Target Portal List. - // - // The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - Portals *[]*string `field:"optional" json:"portals" yaml:"portals"` - // readOnly here will force the ReadOnly setting in VolumeMounts. - // - // Defaults to false. - // Default: false. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is the CHAP Secret for iSCSI target and initiator authentication. - SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/IscsiVolumeSource.go b/pods/imports/k8s/IscsiVolumeSource.go deleted file mode 100644 index d46e3a7ee..000000000 --- a/pods/imports/k8s/IscsiVolumeSource.go +++ /dev/null @@ -1,47 +0,0 @@ -package k8s - - -// Represents an ISCSI disk. -// -// ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. -type IscsiVolumeSource struct { - // iqn is the target iSCSI Qualified Name. - Iqn *string `field:"required" json:"iqn" yaml:"iqn"` - // lun represents iSCSI Target Lun number. - Lun *float64 `field:"required" json:"lun" yaml:"lun"` - // targetPortal is iSCSI Target Portal. - // - // The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - TargetPortal *string `field:"required" json:"targetPortal" yaml:"targetPortal"` - // chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication. - ChapAuthDiscovery *bool `field:"optional" json:"chapAuthDiscovery" yaml:"chapAuthDiscovery"` - // chapAuthSession defines whether support iSCSI Session CHAP authentication. - ChapAuthSession *bool `field:"optional" json:"chapAuthSession" yaml:"chapAuthSession"` - // fsType is the filesystem type of the volume that you want to mount. - // - // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // initiatorName is the custom iSCSI Initiator Name. - // - // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. - InitiatorName *string `field:"optional" json:"initiatorName" yaml:"initiatorName"` - // iscsiInterface is the interface Name that uses an iSCSI transport. - // - // Defaults to 'default' (tcp). - // Default: default' (tcp). - // - IscsiInterface *string `field:"optional" json:"iscsiInterface" yaml:"iscsiInterface"` - // portals is the iSCSI Target Portal List. - // - // The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - Portals *[]*string `field:"optional" json:"portals" yaml:"portals"` - // readOnly here will force the ReadOnly setting in VolumeMounts. - // - // Defaults to false. - // Default: false. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is the CHAP Secret for iSCSI target and initiator authentication. - SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` -} - diff --git a/pods/imports/k8s/JobSpec.go b/pods/imports/k8s/JobSpec.go deleted file mode 100644 index b08f5720d..000000000 --- a/pods/imports/k8s/JobSpec.go +++ /dev/null @@ -1,88 +0,0 @@ -package k8s - - -// JobSpec describes how the job execution will look like. -type JobSpec struct { - // Describes the pod that will be created when executing a job. - // - // The only allowed template.spec.restartPolicy values are "Never" or "OnFailure". More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ - Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` - // Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; - // - // value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again. - ActiveDeadlineSeconds *float64 `field:"optional" json:"activeDeadlineSeconds" yaml:"activeDeadlineSeconds"` - // Specifies the number of retries before marking this job failed. - // - // Defaults to 6. - // Default: 6. - // - BackoffLimit *float64 `field:"optional" json:"backoffLimit" yaml:"backoffLimit"` - // Specifies the limit for the number of retries within an index before marking this index as failed. - // - // When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). - BackoffLimitPerIndex *float64 `field:"optional" json:"backoffLimitPerIndex" yaml:"backoffLimitPerIndex"` - // completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`. - // - // `NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other. - // - // `Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`. - // - // More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job. - CompletionMode *string `field:"optional" json:"completionMode" yaml:"completionMode"` - // Specifies the desired number of successfully finished pods the job should be run with. - // - // Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ - Completions *float64 `field:"optional" json:"completions" yaml:"completions"` - // ManagedBy field indicates the controller that manages a Job. - // - // The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first "/" must be a valid subdomain as defined by RFC 1123. All characters trailing the first "/" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable. - // - // This field is alpha-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (disabled by default). - ManagedBy *string `field:"optional" json:"managedBy" yaml:"managedBy"` - // manualSelector controls generation of pod labels and pod selectors. - // - // Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector - ManualSelector *bool `field:"optional" json:"manualSelector" yaml:"manualSelector"` - // Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. - // - // Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). - MaxFailedIndexes *float64 `field:"optional" json:"maxFailedIndexes" yaml:"maxFailedIndexes"` - // Specifies the maximum desired number of pods the job should run at any given time. - // - // The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ - Parallelism *float64 `field:"optional" json:"parallelism" yaml:"parallelism"` - // Specifies the policy of handling failed pods. - // - // In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure. - PodFailurePolicy *PodFailurePolicy `field:"optional" json:"podFailurePolicy" yaml:"podFailurePolicy"` - // podReplacementPolicy specifies when to create replacement Pods. - // - // Possible values are: - TerminatingOrFailed means that we recreate pods - // when they are terminating (has a metadata.deletionTimestamp) or failed. - // - Failed means to wait until a previously created Pod is fully terminated (has phase - // Failed or Succeeded) before creating a replacement Pod. - // - // When using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default. - PodReplacementPolicy *string `field:"optional" json:"podReplacementPolicy" yaml:"podReplacementPolicy"` - // A label query over pods that should match the pod count. - // - // Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` - // successPolicy specifies the policy when the Job can be declared as succeeded. - // - // If empty, the default behavior applies - the Job is declared as succeeded only when the number of succeeded pods equals to the completions. When the field is specified, it must be immutable and works only for the Indexed Jobs. Once the Job meets the SuccessPolicy, the lingering pods are terminated. - // - // This field is beta-level. To use this field, you must enable the `JobSuccessPolicy` feature gate (enabled by default). - SuccessPolicy *SuccessPolicy `field:"optional" json:"successPolicy" yaml:"successPolicy"` - // suspend specifies whether the Job controller should create Pods or not. - // - // If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false. - // Default: false. - // - Suspend *bool `field:"optional" json:"suspend" yaml:"suspend"` - // ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). - // - // If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. - TtlSecondsAfterFinished *float64 `field:"optional" json:"ttlSecondsAfterFinished" yaml:"ttlSecondsAfterFinished"` -} - diff --git a/pods/imports/k8s/JobTemplateSpec.go b/pods/imports/k8s/JobTemplateSpec.go deleted file mode 100644 index 71c255cf0..000000000 --- a/pods/imports/k8s/JobTemplateSpec.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// JobTemplateSpec describes the data a Job should have when created from a template. -type JobTemplateSpec struct { - // Standard object's metadata of the jobs created from this template. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the job. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *JobSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/JsonSchemaProps.go b/pods/imports/k8s/JsonSchemaProps.go deleted file mode 100644 index 78fc1af16..000000000 --- a/pods/imports/k8s/JsonSchemaProps.go +++ /dev/null @@ -1,107 +0,0 @@ -package k8s - - -// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). -type JsonSchemaProps struct { - AdditionalItems interface{} `field:"optional" json:"additionalItems" yaml:"additionalItems"` - AdditionalProperties interface{} `field:"optional" json:"additionalProperties" yaml:"additionalProperties"` - AllOf *[]*JsonSchemaProps `field:"optional" json:"allOf" yaml:"allOf"` - AnyOf *[]*JsonSchemaProps `field:"optional" json:"anyOf" yaml:"anyOf"` - // default is a default value for undefined object fields. - // - // Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false. - Default interface{} `field:"optional" json:"default" yaml:"default"` - Definitions *map[string]*JsonSchemaProps `field:"optional" json:"definitions" yaml:"definitions"` - Dependencies *map[string]interface{} `field:"optional" json:"dependencies" yaml:"dependencies"` - Description *string `field:"optional" json:"description" yaml:"description"` - Enum *[]interface{} `field:"optional" json:"enum" yaml:"enum"` - Example interface{} `field:"optional" json:"example" yaml:"example"` - ExclusiveMaximum *bool `field:"optional" json:"exclusiveMaximum" yaml:"exclusiveMaximum"` - ExclusiveMinimum *bool `field:"optional" json:"exclusiveMinimum" yaml:"exclusiveMinimum"` - ExternalDocs *ExternalDocumentation `field:"optional" json:"externalDocs" yaml:"externalDocs"` - // format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:. - // - // - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041" - isbn10: an ISBN10 number string like "0321751043" - isbn13: an ISBN13 number string like "978-0321751041" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\d{3}[- ]?\d{2}[- ]?\d{4}$ - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559" - byte: base64 encoded binary data - password: any kind of string - date: a date string like "2006-01-02" as defined by full-date in RFC3339 - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339. - Format *string `field:"optional" json:"format" yaml:"format"` - Id *string `field:"optional" json:"id" yaml:"id"` - Items interface{} `field:"optional" json:"items" yaml:"items"` - Maximum *float64 `field:"optional" json:"maximum" yaml:"maximum"` - MaxItems *float64 `field:"optional" json:"maxItems" yaml:"maxItems"` - MaxLength *float64 `field:"optional" json:"maxLength" yaml:"maxLength"` - MaxProperties *float64 `field:"optional" json:"maxProperties" yaml:"maxProperties"` - Minimum *float64 `field:"optional" json:"minimum" yaml:"minimum"` - MinItems *float64 `field:"optional" json:"minItems" yaml:"minItems"` - MinLength *float64 `field:"optional" json:"minLength" yaml:"minLength"` - MinProperties *float64 `field:"optional" json:"minProperties" yaml:"minProperties"` - MultipleOf *float64 `field:"optional" json:"multipleOf" yaml:"multipleOf"` - Not **JsonSchemaProps `field:"optional" json:"not" yaml:"not"` - Nullable *bool `field:"optional" json:"nullable" yaml:"nullable"` - OneOf *[]*JsonSchemaProps `field:"optional" json:"oneOf" yaml:"oneOf"` - Pattern *string `field:"optional" json:"pattern" yaml:"pattern"` - PatternProperties *map[string]*JsonSchemaProps `field:"optional" json:"patternProperties" yaml:"patternProperties"` - Properties *map[string]*JsonSchemaProps `field:"optional" json:"properties" yaml:"properties"` - Ref *string `field:"optional" json:"ref" yaml:"ref"` - Required *[]*string `field:"optional" json:"required" yaml:"required"` - Schema *string `field:"optional" json:"schema" yaml:"schema"` - Title *string `field:"optional" json:"title" yaml:"title"` - Type *string `field:"optional" json:"type" yaml:"type"` - UniqueItems *bool `field:"optional" json:"uniqueItems" yaml:"uniqueItems"` - // x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata). - XKubernetesEmbeddedResource *bool `field:"optional" json:"xKubernetesEmbeddedResource" yaml:"xKubernetesEmbeddedResource"` - // x-kubernetes-int-or-string specifies that this value is either an integer or a string. - // - // If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns: - // - // 1) anyOf: - // - type: integer - // - type: string - // 2) allOf: - // - anyOf: - // - type: integer - // - type: string - // - ... zero or more - XKubernetesIntOrString *bool `field:"optional" json:"xKubernetesIntOrString" yaml:"xKubernetesIntOrString"` - // x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map. - // - // This tag MUST only be used on lists that have the "x-kubernetes-list-type" extension set to "map". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported). - // - // The properties specified must either be required or have a default value, to ensure those properties are present for all list items. - XKubernetesListMapKeys *[]*string `field:"optional" json:"xKubernetesListMapKeys" yaml:"xKubernetesListMapKeys"` - // x-kubernetes-list-type annotates an array to further describe its topology. - // - // This extension must only be used on lists and may have 3 possible values: - // - // 1) `atomic`: the list is treated as a single entity, like a scalar. - // Atomic lists will be entirely replaced when updated. This extension - // may be used on any type of list (struct, scalar, ...). - // 2) `set`: - // Sets are lists that must not have multiple items with the same value. Each - // value must be a scalar, an object with x-kubernetes-map-type `atomic` or an - // array with x-kubernetes-list-type `atomic`. - // 3) `map`: - // These lists are like maps in that their elements have a non-index key - // used to identify them. Order is preserved upon merge. The map tag - // must only be used on a list with elements of type object. - // Defaults to atomic for arrays. - // Default: atomic for arrays. - // - XKubernetesListType *string `field:"optional" json:"xKubernetesListType" yaml:"xKubernetesListType"` - // x-kubernetes-map-type annotates an object to further describe its topology. - // - // This extension must only be used when type is object and may have 2 possible values: - // - // 1) `granular`: - // These maps are actual maps (key-value pairs) and each fields are independent - // from each other (they can each be manipulated by separate actors). This is - // the default behaviour for all maps. - // 2) `atomic`: the list is treated as a single entity, like a scalar. - // Atomic maps will be entirely replaced when updated. - XKubernetesMapType *string `field:"optional" json:"xKubernetesMapType" yaml:"xKubernetesMapType"` - // x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. - // - // This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden. - XKubernetesPreserveUnknownFields *bool `field:"optional" json:"xKubernetesPreserveUnknownFields" yaml:"xKubernetesPreserveUnknownFields"` - // x-kubernetes-validations describes a list of validation rules written in the CEL expression language. - XKubernetesValidations *[]*ValidationRule `field:"optional" json:"xKubernetesValidations" yaml:"xKubernetesValidations"` -} - diff --git a/pods/imports/k8s/KeyToPath.go b/pods/imports/k8s/KeyToPath.go deleted file mode 100644 index f03a15c69..000000000 --- a/pods/imports/k8s/KeyToPath.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Maps a string key to a path within a volume. -type KeyToPath struct { - // key is the key to project. - Key *string `field:"required" json:"key" yaml:"key"` - // path is the relative path of the file to map the key to. - // - // May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - Path *string `field:"required" json:"path" yaml:"path"` - // mode is Optional: mode bits used to set permissions on this file. - // - // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - Mode *float64 `field:"optional" json:"mode" yaml:"mode"` -} - diff --git a/pods/imports/k8s/KubeApiService.go b/pods/imports/k8s/KubeApiService.go deleted file mode 100644 index 324ffbaec..000000000 --- a/pods/imports/k8s/KubeApiService.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// APIService represents a server for a particular GroupVersion. -// -// Name must be "version.group". -type KubeApiService interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeApiService -type jsiiProxy_KubeApiService struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeApiService) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiService) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiService) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiService) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiService) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiService) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiService) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" API object. -func NewKubeApiService(scope constructs.Construct, id *string, props *KubeApiServiceProps) KubeApiService { - _init_.Initialize() - - if err := validateNewKubeApiServiceParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeApiService{} - - _jsii_.Create( - "k8s.KubeApiService", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" API object. -func NewKubeApiService_Override(k KubeApiService, scope constructs.Construct, id *string, props *KubeApiServiceProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeApiService", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeApiService_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeApiService_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeApiService", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeApiService_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeApiService_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeApiService", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeApiService_Manifest(props *KubeApiServiceProps) interface{} { - _init_.Initialize() - - if err := validateKubeApiService_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeApiService", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeApiService_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeApiService_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeApiService", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeApiService_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeApiService", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeApiService) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeApiService) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeApiService) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeApiService) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeApiServiceList.go b/pods/imports/k8s/KubeApiServiceList.go deleted file mode 100644 index 50688f95b..000000000 --- a/pods/imports/k8s/KubeApiServiceList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// APIServiceList is a list of APIService objects. -type KubeApiServiceList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeApiServiceList -type jsiiProxy_KubeApiServiceList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeApiServiceList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiServiceList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiServiceList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiServiceList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiServiceList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiServiceList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeApiServiceList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" API object. -func NewKubeApiServiceList(scope constructs.Construct, id *string, props *KubeApiServiceListProps) KubeApiServiceList { - _init_.Initialize() - - if err := validateNewKubeApiServiceListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeApiServiceList{} - - _jsii_.Create( - "k8s.KubeApiServiceList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" API object. -func NewKubeApiServiceList_Override(k KubeApiServiceList, scope constructs.Construct, id *string, props *KubeApiServiceListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeApiServiceList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeApiServiceList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeApiServiceList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeApiServiceList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeApiServiceList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeApiServiceList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeApiServiceList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeApiServiceList_Manifest(props *KubeApiServiceListProps) interface{} { - _init_.Initialize() - - if err := validateKubeApiServiceList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeApiServiceList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeApiServiceList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeApiServiceList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeApiServiceList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeApiServiceList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeApiServiceList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeApiServiceList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeApiServiceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeApiServiceList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeApiServiceList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeApiServiceListProps.go b/pods/imports/k8s/KubeApiServiceListProps.go deleted file mode 100644 index 294cc20ee..000000000 --- a/pods/imports/k8s/KubeApiServiceListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// APIServiceList is a list of APIService objects. -type KubeApiServiceListProps struct { - // Items is the list of APIService. - Items *[]*KubeApiServiceProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeApiServiceList__checks.go b/pods/imports/k8s/KubeApiServiceList__checks.go deleted file mode 100644 index 3a644762e..000000000 --- a/pods/imports/k8s/KubeApiServiceList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeApiServiceList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeApiServiceList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeApiServiceList_ManifestParameters(props *KubeApiServiceListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeApiServiceList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeApiServiceListParameters(scope constructs.Construct, id *string, props *KubeApiServiceListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeApiServiceList__no_checks.go b/pods/imports/k8s/KubeApiServiceList__no_checks.go deleted file mode 100644 index 2db0e7ee6..000000000 --- a/pods/imports/k8s/KubeApiServiceList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeApiServiceList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeApiServiceList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeApiServiceList_ManifestParameters(props *KubeApiServiceListProps) error { - return nil -} - -func validateKubeApiServiceList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeApiServiceListParameters(scope constructs.Construct, id *string, props *KubeApiServiceListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeApiServiceProps.go b/pods/imports/k8s/KubeApiServiceProps.go deleted file mode 100644 index 67017aeee..000000000 --- a/pods/imports/k8s/KubeApiServiceProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// APIService represents a server for a particular GroupVersion. -// -// Name must be "version.group". -type KubeApiServiceProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec contains information for locating and communicating with a server. - Spec *ApiServiceSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeApiService__checks.go b/pods/imports/k8s/KubeApiService__checks.go deleted file mode 100644 index b6e0e7d70..000000000 --- a/pods/imports/k8s/KubeApiService__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeApiService_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeApiService_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeApiService_ManifestParameters(props *KubeApiServiceProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeApiService_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeApiServiceParameters(scope constructs.Construct, id *string, props *KubeApiServiceProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeApiService__no_checks.go b/pods/imports/k8s/KubeApiService__no_checks.go deleted file mode 100644 index a7a834b22..000000000 --- a/pods/imports/k8s/KubeApiService__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeApiService_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeApiService_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeApiService_ManifestParameters(props *KubeApiServiceProps) error { - return nil -} - -func validateKubeApiService_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeApiServiceParameters(scope constructs.Construct, id *string, props *KubeApiServiceProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeBinding.go b/pods/imports/k8s/KubeBinding.go deleted file mode 100644 index 5edfc2f64..000000000 --- a/pods/imports/k8s/KubeBinding.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Binding ties one object to another; -// -// for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead. -type KubeBinding interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeBinding -type jsiiProxy_KubeBinding struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeBinding) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeBinding) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeBinding) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeBinding) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeBinding) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeBinding) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Binding" API object. -func NewKubeBinding(scope constructs.Construct, id *string, props *KubeBindingProps) KubeBinding { - _init_.Initialize() - - if err := validateNewKubeBindingParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeBinding{} - - _jsii_.Create( - "k8s.KubeBinding", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Binding" API object. -func NewKubeBinding_Override(k KubeBinding, scope constructs.Construct, id *string, props *KubeBindingProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeBinding", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeBinding_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeBinding_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeBinding", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeBinding_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeBinding_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeBinding", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Binding". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeBinding_Manifest(props *KubeBindingProps) interface{} { - _init_.Initialize() - - if err := validateKubeBinding_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeBinding", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeBinding_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeBinding", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeBinding_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeBinding", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeBinding) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeBinding) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeBinding) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeBindingProps.go b/pods/imports/k8s/KubeBindingProps.go deleted file mode 100644 index c08d669b5..000000000 --- a/pods/imports/k8s/KubeBindingProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Binding ties one object to another; -// -// for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead. -type KubeBindingProps struct { - // The target object that you want to bind to the standard object. - Target *ObjectReference `field:"required" json:"target" yaml:"target"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeBinding__checks.go b/pods/imports/k8s/KubeBinding__checks.go deleted file mode 100644 index 963049708..000000000 --- a/pods/imports/k8s/KubeBinding__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeBinding_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeBinding_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeBinding_ManifestParameters(props *KubeBindingProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeBinding_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeBindingParameters(scope constructs.Construct, id *string, props *KubeBindingProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeBinding__no_checks.go b/pods/imports/k8s/KubeBinding__no_checks.go deleted file mode 100644 index 7f251c8cb..000000000 --- a/pods/imports/k8s/KubeBinding__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeBinding_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeBinding_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeBinding_ManifestParameters(props *KubeBindingProps) error { - return nil -} - -func validateKubeBinding_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeBindingParameters(scope constructs.Construct, id *string, props *KubeBindingProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequest.go b/pods/imports/k8s/KubeCertificateSigningRequest.go deleted file mode 100644 index 10828aff0..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequest.go +++ /dev/null @@ -1,323 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued. -// -// Kubelets use this API to obtain: -// 1. client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client-kubelet" signerName). -// 2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the "kubernetes.io/kubelet-serving" signerName). -// -// This API can be used to request client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client" signerName), or to obtain certificates from custom non-Kubernetes signers. -type KubeCertificateSigningRequest interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCertificateSigningRequest -type jsiiProxy_KubeCertificateSigningRequest struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequest) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequest" API object. -func NewKubeCertificateSigningRequest(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) KubeCertificateSigningRequest { - _init_.Initialize() - - if err := validateNewKubeCertificateSigningRequestParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCertificateSigningRequest{} - - _jsii_.Create( - "k8s.KubeCertificateSigningRequest", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequest" API object. -func NewKubeCertificateSigningRequest_Override(k KubeCertificateSigningRequest, scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCertificateSigningRequest", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCertificateSigningRequest_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequest_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequest", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCertificateSigningRequest_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequest_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequest", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1.CertificateSigningRequest". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCertificateSigningRequest_Manifest(props *KubeCertificateSigningRequestProps) interface{} { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequest_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequest", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCertificateSigningRequest_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequest_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequest", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCertificateSigningRequest_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCertificateSigningRequest", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCertificateSigningRequest) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCertificateSigningRequest) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCertificateSigningRequest) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCertificateSigningRequest) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList.go b/pods/imports/k8s/KubeCertificateSigningRequestList.go deleted file mode 100644 index 17475fb7e..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequestList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CertificateSigningRequestList is a collection of CertificateSigningRequest objects. -type KubeCertificateSigningRequestList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCertificateSigningRequestList -type jsiiProxy_KubeCertificateSigningRequestList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCertificateSigningRequestList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequestList" API object. -func NewKubeCertificateSigningRequestList(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) KubeCertificateSigningRequestList { - _init_.Initialize() - - if err := validateNewKubeCertificateSigningRequestListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCertificateSigningRequestList{} - - _jsii_.Create( - "k8s.KubeCertificateSigningRequestList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.certificates.v1.CertificateSigningRequestList" API object. -func NewKubeCertificateSigningRequestList_Override(k KubeCertificateSigningRequestList, scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCertificateSigningRequestList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCertificateSigningRequestList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequestList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequestList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCertificateSigningRequestList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequestList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequestList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1.CertificateSigningRequestList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCertificateSigningRequestList_Manifest(props *KubeCertificateSigningRequestListProps) interface{} { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequestList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequestList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCertificateSigningRequestList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCertificateSigningRequestList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCertificateSigningRequestList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCertificateSigningRequestList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCertificateSigningRequestList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCertificateSigningRequestList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCertificateSigningRequestList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCertificateSigningRequestList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCertificateSigningRequestList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequestListProps.go b/pods/imports/k8s/KubeCertificateSigningRequestListProps.go deleted file mode 100644 index fe287776d..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequestListProps.go +++ /dev/null @@ -1,10 +0,0 @@ -package k8s - - -// CertificateSigningRequestList is a collection of CertificateSigningRequest objects. -type KubeCertificateSigningRequestListProps struct { - // items is a collection of CertificateSigningRequest objects. - Items *[]*KubeCertificateSigningRequestProps `field:"required" json:"items" yaml:"items"` - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go b/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go deleted file mode 100644 index 10b9d4521..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequestList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCertificateSigningRequestList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCertificateSigningRequestList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCertificateSigningRequestList_ManifestParameters(props *KubeCertificateSigningRequestListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCertificateSigningRequestList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCertificateSigningRequestListParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go b/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go deleted file mode 100644 index f2919c2d2..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequestList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCertificateSigningRequestList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCertificateSigningRequestList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCertificateSigningRequestList_ManifestParameters(props *KubeCertificateSigningRequestListProps) error { - return nil -} - -func validateKubeCertificateSigningRequestList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCertificateSigningRequestListParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequestProps.go b/pods/imports/k8s/KubeCertificateSigningRequestProps.go deleted file mode 100644 index ea98c3e04..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequestProps.go +++ /dev/null @@ -1,18 +0,0 @@ -package k8s - - -// CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued. -// -// Kubelets use this API to obtain: -// 1. client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client-kubelet" signerName). -// 2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the "kubernetes.io/kubelet-serving" signerName). -// -// This API can be used to request client certificates to authenticate to kube-apiserver (with the "kubernetes.io/kube-apiserver-client" signerName), or to obtain certificates from custom non-Kubernetes signers. -type KubeCertificateSigningRequestProps struct { - // spec contains the certificate request, and is immutable after creation. - // - // Only the request, signerName, expirationSeconds, and usages fields can be set on creation. Other fields are derived by Kubernetes and cannot be modified by users. - Spec *CertificateSigningRequestSpec `field:"required" json:"spec" yaml:"spec"` - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequest__checks.go b/pods/imports/k8s/KubeCertificateSigningRequest__checks.go deleted file mode 100644 index 86820cf41..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequest__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCertificateSigningRequest_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCertificateSigningRequest_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCertificateSigningRequest_ManifestParameters(props *KubeCertificateSigningRequestProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCertificateSigningRequest_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCertificateSigningRequestParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go b/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go deleted file mode 100644 index 07f1e18e2..000000000 --- a/pods/imports/k8s/KubeCertificateSigningRequest__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCertificateSigningRequest_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCertificateSigningRequest_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCertificateSigningRequest_ManifestParameters(props *KubeCertificateSigningRequestProps) error { - return nil -} - -func validateKubeCertificateSigningRequest_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCertificateSigningRequestParameters(scope constructs.Construct, id *string, props *KubeCertificateSigningRequestProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRole.go b/pods/imports/k8s/KubeClusterRole.go deleted file mode 100644 index 9534fa544..000000000 --- a/pods/imports/k8s/KubeClusterRole.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. -type KubeClusterRole interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeClusterRole -type jsiiProxy_KubeClusterRole struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeClusterRole) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRole) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRole) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRole) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRole) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRole) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRole) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.ClusterRole" API object. -func NewKubeClusterRole(scope constructs.Construct, id *string, props *KubeClusterRoleProps) KubeClusterRole { - _init_.Initialize() - - if err := validateNewKubeClusterRoleParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeClusterRole{} - - _jsii_.Create( - "k8s.KubeClusterRole", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.ClusterRole" API object. -func NewKubeClusterRole_Override(k KubeClusterRole, scope constructs.Construct, id *string, props *KubeClusterRoleProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeClusterRole", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeClusterRole_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRole_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRole", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeClusterRole_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRole_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRole", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRole". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeClusterRole_Manifest(props *KubeClusterRoleProps) interface{} { - _init_.Initialize() - - if err := validateKubeClusterRole_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeClusterRole", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeClusterRole_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeClusterRole_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeClusterRole", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeClusterRole_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeClusterRole", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeClusterRole) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRole) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRole) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeClusterRole) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeClusterRoleBinding.go b/pods/imports/k8s/KubeClusterRoleBinding.go deleted file mode 100644 index 523da02b7..000000000 --- a/pods/imports/k8s/KubeClusterRoleBinding.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ClusterRoleBinding references a ClusterRole, but not contain it. -// -// It can reference a ClusterRole in the global namespace, and adds who information via Subject. -type KubeClusterRoleBinding interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeClusterRoleBinding -type jsiiProxy_KubeClusterRoleBinding struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeClusterRoleBinding) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBinding) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBinding) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBinding) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBinding) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBinding) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.ClusterRoleBinding" API object. -func NewKubeClusterRoleBinding(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) KubeClusterRoleBinding { - _init_.Initialize() - - if err := validateNewKubeClusterRoleBindingParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeClusterRoleBinding{} - - _jsii_.Create( - "k8s.KubeClusterRoleBinding", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.ClusterRoleBinding" API object. -func NewKubeClusterRoleBinding_Override(k KubeClusterRoleBinding, scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeClusterRoleBinding", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeClusterRoleBinding_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRoleBinding_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBinding", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeClusterRoleBinding_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRoleBinding_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBinding", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleBinding". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeClusterRoleBinding_Manifest(props *KubeClusterRoleBindingProps) interface{} { - _init_.Initialize() - - if err := validateKubeClusterRoleBinding_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBinding", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeClusterRoleBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeClusterRoleBinding_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBinding", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeClusterRoleBinding_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeClusterRoleBinding", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeClusterRoleBinding) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRoleBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRoleBinding) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeClusterRoleBinding) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeClusterRoleBindingList.go b/pods/imports/k8s/KubeClusterRoleBindingList.go deleted file mode 100644 index 4a7428327..000000000 --- a/pods/imports/k8s/KubeClusterRoleBindingList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ClusterRoleBindingList is a collection of ClusterRoleBindings. -type KubeClusterRoleBindingList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeClusterRoleBindingList -type jsiiProxy_KubeClusterRoleBindingList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleBindingList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.ClusterRoleBindingList" API object. -func NewKubeClusterRoleBindingList(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) KubeClusterRoleBindingList { - _init_.Initialize() - - if err := validateNewKubeClusterRoleBindingListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeClusterRoleBindingList{} - - _jsii_.Create( - "k8s.KubeClusterRoleBindingList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.ClusterRoleBindingList" API object. -func NewKubeClusterRoleBindingList_Override(k KubeClusterRoleBindingList, scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeClusterRoleBindingList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeClusterRoleBindingList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRoleBindingList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBindingList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeClusterRoleBindingList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRoleBindingList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBindingList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleBindingList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeClusterRoleBindingList_Manifest(props *KubeClusterRoleBindingListProps) interface{} { - _init_.Initialize() - - if err := validateKubeClusterRoleBindingList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBindingList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeClusterRoleBindingList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeClusterRoleBindingList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleBindingList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeClusterRoleBindingList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeClusterRoleBindingList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeClusterRoleBindingList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRoleBindingList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRoleBindingList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeClusterRoleBindingList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeClusterRoleBindingListProps.go b/pods/imports/k8s/KubeClusterRoleBindingListProps.go deleted file mode 100644 index 911449fdb..000000000 --- a/pods/imports/k8s/KubeClusterRoleBindingListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ClusterRoleBindingList is a collection of ClusterRoleBindings. -type KubeClusterRoleBindingListProps struct { - // Items is a list of ClusterRoleBindings. - Items *[]*KubeClusterRoleBindingProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeClusterRoleBindingList__checks.go b/pods/imports/k8s/KubeClusterRoleBindingList__checks.go deleted file mode 100644 index d261f948c..000000000 --- a/pods/imports/k8s/KubeClusterRoleBindingList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeClusterRoleBindingList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRoleBindingList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRoleBindingList_ManifestParameters(props *KubeClusterRoleBindingListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeClusterRoleBindingList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeClusterRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go b/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go deleted file mode 100644 index 832069b40..000000000 --- a/pods/imports/k8s/KubeClusterRoleBindingList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeClusterRoleBindingList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeClusterRoleBindingList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeClusterRoleBindingList_ManifestParameters(props *KubeClusterRoleBindingListProps) error { - return nil -} - -func validateKubeClusterRoleBindingList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeClusterRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRoleBindingProps.go b/pods/imports/k8s/KubeClusterRoleBindingProps.go deleted file mode 100644 index c4bf6ec12..000000000 --- a/pods/imports/k8s/KubeClusterRoleBindingProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// ClusterRoleBinding references a ClusterRole, but not contain it. -// -// It can reference a ClusterRole in the global namespace, and adds who information via Subject. -type KubeClusterRoleBindingProps struct { - // RoleRef can only reference a ClusterRole in the global namespace. - // - // If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable. - RoleRef *RoleRef `field:"required" json:"roleRef" yaml:"roleRef"` - // Standard object's metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Subjects holds references to the objects the role applies to. - Subjects *[]*Subject `field:"optional" json:"subjects" yaml:"subjects"` -} - diff --git a/pods/imports/k8s/KubeClusterRoleBinding__checks.go b/pods/imports/k8s/KubeClusterRoleBinding__checks.go deleted file mode 100644 index 869403a93..000000000 --- a/pods/imports/k8s/KubeClusterRoleBinding__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeClusterRoleBinding_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRoleBinding_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRoleBinding_ManifestParameters(props *KubeClusterRoleBindingProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeClusterRoleBinding_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeClusterRoleBindingParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go b/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go deleted file mode 100644 index 2cffab195..000000000 --- a/pods/imports/k8s/KubeClusterRoleBinding__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeClusterRoleBinding_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeClusterRoleBinding_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeClusterRoleBinding_ManifestParameters(props *KubeClusterRoleBindingProps) error { - return nil -} - -func validateKubeClusterRoleBinding_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeClusterRoleBindingParameters(scope constructs.Construct, id *string, props *KubeClusterRoleBindingProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRoleList.go b/pods/imports/k8s/KubeClusterRoleList.go deleted file mode 100644 index 2f0dd043d..000000000 --- a/pods/imports/k8s/KubeClusterRoleList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ClusterRoleList is a collection of ClusterRoles. -type KubeClusterRoleList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeClusterRoleList -type jsiiProxy_KubeClusterRoleList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeClusterRoleList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterRoleList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.ClusterRoleList" API object. -func NewKubeClusterRoleList(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) KubeClusterRoleList { - _init_.Initialize() - - if err := validateNewKubeClusterRoleListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeClusterRoleList{} - - _jsii_.Create( - "k8s.KubeClusterRoleList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.ClusterRoleList" API object. -func NewKubeClusterRoleList_Override(k KubeClusterRoleList, scope constructs.Construct, id *string, props *KubeClusterRoleListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeClusterRoleList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeClusterRoleList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRoleList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeClusterRoleList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterRoleList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeClusterRoleList_Manifest(props *KubeClusterRoleListProps) interface{} { - _init_.Initialize() - - if err := validateKubeClusterRoleList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeClusterRoleList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeClusterRoleList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeClusterRoleList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeClusterRoleList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeClusterRoleList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeClusterRoleList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRoleList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeClusterRoleList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeClusterRoleList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeClusterRoleListProps.go b/pods/imports/k8s/KubeClusterRoleListProps.go deleted file mode 100644 index 9b4677192..000000000 --- a/pods/imports/k8s/KubeClusterRoleListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ClusterRoleList is a collection of ClusterRoles. -type KubeClusterRoleListProps struct { - // Items is a list of ClusterRoles. - Items *[]*KubeClusterRoleProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeClusterRoleList__checks.go b/pods/imports/k8s/KubeClusterRoleList__checks.go deleted file mode 100644 index 312bc83bb..000000000 --- a/pods/imports/k8s/KubeClusterRoleList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeClusterRoleList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRoleList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRoleList_ManifestParameters(props *KubeClusterRoleListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeClusterRoleList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeClusterRoleListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRoleList__no_checks.go b/pods/imports/k8s/KubeClusterRoleList__no_checks.go deleted file mode 100644 index 91cad984f..000000000 --- a/pods/imports/k8s/KubeClusterRoleList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeClusterRoleList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeClusterRoleList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeClusterRoleList_ManifestParameters(props *KubeClusterRoleListProps) error { - return nil -} - -func validateKubeClusterRoleList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeClusterRoleListParameters(scope constructs.Construct, id *string, props *KubeClusterRoleListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRoleProps.go b/pods/imports/k8s/KubeClusterRoleProps.go deleted file mode 100644 index b2dc7b94a..000000000 --- a/pods/imports/k8s/KubeClusterRoleProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. -type KubeClusterRoleProps struct { - // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. - // - // If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller. - AggregationRule *AggregationRule `field:"optional" json:"aggregationRule" yaml:"aggregationRule"` - // Standard object's metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Rules holds all the PolicyRules for this ClusterRole. - Rules *[]*PolicyRule `field:"optional" json:"rules" yaml:"rules"` -} - diff --git a/pods/imports/k8s/KubeClusterRole__checks.go b/pods/imports/k8s/KubeClusterRole__checks.go deleted file mode 100644 index 4813b7cdb..000000000 --- a/pods/imports/k8s/KubeClusterRole__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeClusterRole_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRole_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterRole_ManifestParameters(props *KubeClusterRoleProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeClusterRole_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeClusterRoleParameters(scope constructs.Construct, id *string, props *KubeClusterRoleProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeClusterRole__no_checks.go b/pods/imports/k8s/KubeClusterRole__no_checks.go deleted file mode 100644 index b83139d9a..000000000 --- a/pods/imports/k8s/KubeClusterRole__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeClusterRole_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeClusterRole_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeClusterRole_ManifestParameters(props *KubeClusterRoleProps) error { - return nil -} - -func validateKubeClusterRole_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeClusterRoleParameters(scope constructs.Construct, id *string, props *KubeClusterRoleProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go deleted file mode 100644 index 9d58f6517..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ClusterTrustBundleList is a collection of ClusterTrustBundle objects. -type KubeClusterTrustBundleListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeClusterTrustBundleListV1Alpha1 -type jsiiProxy_KubeClusterTrustBundleListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList" API object. -func NewKubeClusterTrustBundleListV1Alpha1(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) KubeClusterTrustBundleListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeClusterTrustBundleListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeClusterTrustBundleListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList" API object. -func NewKubeClusterTrustBundleListV1Alpha1_Override(k KubeClusterTrustBundleListV1Alpha1, scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeClusterTrustBundleListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeClusterTrustBundleListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeClusterTrustBundleListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeClusterTrustBundleListV1Alpha1_Manifest(props *KubeClusterTrustBundleListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeClusterTrustBundleListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeClusterTrustBundleListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeClusterTrustBundleListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeClusterTrustBundleListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go deleted file mode 100644 index b1f398c7e..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ClusterTrustBundleList is a collection of ClusterTrustBundle objects. -type KubeClusterTrustBundleListV1Alpha1Props struct { - // items is a collection of ClusterTrustBundle objects. - Items *[]*KubeClusterTrustBundleV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // metadata contains the list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go deleted file mode 100644 index 09ad9095a..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeClusterTrustBundleListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterTrustBundleListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterTrustBundleListV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go deleted file mode 100644 index 0f56ec559..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeClusterTrustBundleListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeClusterTrustBundleListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeClusterTrustBundleListV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleListV1Alpha1Props) error { - return nil -} - -func validateKubeClusterTrustBundleListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeClusterTrustBundleListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go deleted file mode 100644 index be02716c2..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1.go +++ /dev/null @@ -1,321 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates). -// -// ClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection. All service accounts have read access to ClusterTrustBundles by default. Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to. -// -// It can be optionally associated with a particular assigner, in which case it contains one valid set of trust anchors for that signer. Signers may have multiple associated ClusterTrustBundles; each is an independent set of trust anchors for that signer. Admission control is used to enforce that only users with permissions on the signer can create or modify the corresponding bundle. -type KubeClusterTrustBundleV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeClusterTrustBundleV1Alpha1 -type jsiiProxy_KubeClusterTrustBundleV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeClusterTrustBundleV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle" API object. -func NewKubeClusterTrustBundleV1Alpha1(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) KubeClusterTrustBundleV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeClusterTrustBundleV1Alpha1{} - - _jsii_.Create( - "k8s.KubeClusterTrustBundleV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle" API object. -func NewKubeClusterTrustBundleV1Alpha1_Override(k KubeClusterTrustBundleV1Alpha1, scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeClusterTrustBundleV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeClusterTrustBundleV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeClusterTrustBundleV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeClusterTrustBundleV1Alpha1_Manifest(props *KubeClusterTrustBundleV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeClusterTrustBundleV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeClusterTrustBundleV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeClusterTrustBundleV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeClusterTrustBundleV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeClusterTrustBundleV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeClusterTrustBundleV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go deleted file mode 100644 index 164df4b92..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates). -// -// ClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection. All service accounts have read access to ClusterTrustBundles by default. Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to. -// -// It can be optionally associated with a particular assigner, in which case it contains one valid set of trust anchors for that signer. Signers may have multiple associated ClusterTrustBundles; each is an independent set of trust anchors for that signer. Admission control is used to enforce that only users with permissions on the signer can create or modify the corresponding bundle. -type KubeClusterTrustBundleV1Alpha1Props struct { - // spec contains the signer (if any) and trust anchors. - Spec *ClusterTrustBundleSpecV1Alpha1 `field:"required" json:"spec" yaml:"spec"` - // metadata contains the object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go deleted file mode 100644 index 5393b50d2..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeClusterTrustBundleV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterTrustBundleV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeClusterTrustBundleV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeClusterTrustBundleV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go b/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go deleted file mode 100644 index 994a68110..000000000 --- a/pods/imports/k8s/KubeClusterTrustBundleV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeClusterTrustBundleV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeClusterTrustBundleV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeClusterTrustBundleV1Alpha1_ManifestParameters(props *KubeClusterTrustBundleV1Alpha1Props) error { - return nil -} - -func validateKubeClusterTrustBundleV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeClusterTrustBundleV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeClusterTrustBundleV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeComponentStatus.go b/pods/imports/k8s/KubeComponentStatus.go deleted file mode 100644 index e9ec8bbc4..000000000 --- a/pods/imports/k8s/KubeComponentStatus.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ComponentStatus (and ComponentStatusList) holds the cluster validation info. -// -// Deprecated: This API is deprecated in v1.19+ -type KubeComponentStatus interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeComponentStatus -type jsiiProxy_KubeComponentStatus struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeComponentStatus) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatus) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatus) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatus) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatus) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatus) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatus) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ComponentStatus" API object. -func NewKubeComponentStatus(scope constructs.Construct, id *string, props *KubeComponentStatusProps) KubeComponentStatus { - _init_.Initialize() - - if err := validateNewKubeComponentStatusParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeComponentStatus{} - - _jsii_.Create( - "k8s.KubeComponentStatus", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ComponentStatus" API object. -func NewKubeComponentStatus_Override(k KubeComponentStatus, scope constructs.Construct, id *string, props *KubeComponentStatusProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeComponentStatus", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeComponentStatus_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeComponentStatus_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatus", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeComponentStatus_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeComponentStatus_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatus", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ComponentStatus". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeComponentStatus_Manifest(props *KubeComponentStatusProps) interface{} { - _init_.Initialize() - - if err := validateKubeComponentStatus_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatus", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeComponentStatus_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeComponentStatus_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatus", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeComponentStatus_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeComponentStatus", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeComponentStatus) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeComponentStatus) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeComponentStatus) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeComponentStatus) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeComponentStatusList.go b/pods/imports/k8s/KubeComponentStatusList.go deleted file mode 100644 index 53b45c256..000000000 --- a/pods/imports/k8s/KubeComponentStatusList.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Status of all the conditions for the component as a list of ComponentStatus objects. -// -// Deprecated: This API is deprecated in v1.19+ -type KubeComponentStatusList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeComponentStatusList -type jsiiProxy_KubeComponentStatusList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeComponentStatusList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatusList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatusList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatusList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatusList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatusList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeComponentStatusList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ComponentStatusList" API object. -func NewKubeComponentStatusList(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) KubeComponentStatusList { - _init_.Initialize() - - if err := validateNewKubeComponentStatusListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeComponentStatusList{} - - _jsii_.Create( - "k8s.KubeComponentStatusList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ComponentStatusList" API object. -func NewKubeComponentStatusList_Override(k KubeComponentStatusList, scope constructs.Construct, id *string, props *KubeComponentStatusListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeComponentStatusList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeComponentStatusList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeComponentStatusList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatusList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeComponentStatusList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeComponentStatusList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatusList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ComponentStatusList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeComponentStatusList_Manifest(props *KubeComponentStatusListProps) interface{} { - _init_.Initialize() - - if err := validateKubeComponentStatusList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatusList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeComponentStatusList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeComponentStatusList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeComponentStatusList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeComponentStatusList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeComponentStatusList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeComponentStatusList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeComponentStatusList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeComponentStatusList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeComponentStatusList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeComponentStatusListProps.go b/pods/imports/k8s/KubeComponentStatusListProps.go deleted file mode 100644 index 3c5cd05e7..000000000 --- a/pods/imports/k8s/KubeComponentStatusListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Status of all the conditions for the component as a list of ComponentStatus objects. -// -// Deprecated: This API is deprecated in v1.19+ -type KubeComponentStatusListProps struct { - // List of ComponentStatus objects. - Items *[]*KubeComponentStatusProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeComponentStatusList__checks.go b/pods/imports/k8s/KubeComponentStatusList__checks.go deleted file mode 100644 index 7153b53dc..000000000 --- a/pods/imports/k8s/KubeComponentStatusList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeComponentStatusList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeComponentStatusList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeComponentStatusList_ManifestParameters(props *KubeComponentStatusListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeComponentStatusList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeComponentStatusListParameters(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeComponentStatusList__no_checks.go b/pods/imports/k8s/KubeComponentStatusList__no_checks.go deleted file mode 100644 index 1bdd6ee57..000000000 --- a/pods/imports/k8s/KubeComponentStatusList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeComponentStatusList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeComponentStatusList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeComponentStatusList_ManifestParameters(props *KubeComponentStatusListProps) error { - return nil -} - -func validateKubeComponentStatusList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeComponentStatusListParameters(scope constructs.Construct, id *string, props *KubeComponentStatusListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeComponentStatusProps.go b/pods/imports/k8s/KubeComponentStatusProps.go deleted file mode 100644 index 849dcbe51..000000000 --- a/pods/imports/k8s/KubeComponentStatusProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ComponentStatus (and ComponentStatusList) holds the cluster validation info. -// -// Deprecated: This API is deprecated in v1.19+ -type KubeComponentStatusProps struct { - // List of component conditions observed. - Conditions *[]*ComponentCondition `field:"optional" json:"conditions" yaml:"conditions"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeComponentStatus__checks.go b/pods/imports/k8s/KubeComponentStatus__checks.go deleted file mode 100644 index 0085a5a57..000000000 --- a/pods/imports/k8s/KubeComponentStatus__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeComponentStatus_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeComponentStatus_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeComponentStatus_ManifestParameters(props *KubeComponentStatusProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeComponentStatus_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeComponentStatusParameters(scope constructs.Construct, id *string, props *KubeComponentStatusProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeComponentStatus__no_checks.go b/pods/imports/k8s/KubeComponentStatus__no_checks.go deleted file mode 100644 index 05d507d96..000000000 --- a/pods/imports/k8s/KubeComponentStatus__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeComponentStatus_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeComponentStatus_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeComponentStatus_ManifestParameters(props *KubeComponentStatusProps) error { - return nil -} - -func validateKubeComponentStatus_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeComponentStatusParameters(scope constructs.Construct, id *string, props *KubeComponentStatusProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeConfigMap.go b/pods/imports/k8s/KubeConfigMap.go deleted file mode 100644 index 3329748a4..000000000 --- a/pods/imports/k8s/KubeConfigMap.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ConfigMap holds configuration data for pods to consume. -type KubeConfigMap interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeConfigMap -type jsiiProxy_KubeConfigMap struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeConfigMap) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMap) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMap) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMap) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMap) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMap) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMap) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ConfigMap" API object. -func NewKubeConfigMap(scope constructs.Construct, id *string, props *KubeConfigMapProps) KubeConfigMap { - _init_.Initialize() - - if err := validateNewKubeConfigMapParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeConfigMap{} - - _jsii_.Create( - "k8s.KubeConfigMap", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ConfigMap" API object. -func NewKubeConfigMap_Override(k KubeConfigMap, scope constructs.Construct, id *string, props *KubeConfigMapProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeConfigMap", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeConfigMap_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeConfigMap_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeConfigMap", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeConfigMap_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeConfigMap_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeConfigMap", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ConfigMap". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeConfigMap_Manifest(props *KubeConfigMapProps) interface{} { - _init_.Initialize() - - if err := validateKubeConfigMap_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeConfigMap", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeConfigMap_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeConfigMap_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeConfigMap", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeConfigMap_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeConfigMap", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeConfigMap) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeConfigMap) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeConfigMap) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeConfigMap) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeConfigMapList.go b/pods/imports/k8s/KubeConfigMapList.go deleted file mode 100644 index 64ee4b99e..000000000 --- a/pods/imports/k8s/KubeConfigMapList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ConfigMapList is a resource containing a list of ConfigMap objects. -type KubeConfigMapList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeConfigMapList -type jsiiProxy_KubeConfigMapList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeConfigMapList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMapList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMapList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMapList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMapList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMapList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeConfigMapList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ConfigMapList" API object. -func NewKubeConfigMapList(scope constructs.Construct, id *string, props *KubeConfigMapListProps) KubeConfigMapList { - _init_.Initialize() - - if err := validateNewKubeConfigMapListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeConfigMapList{} - - _jsii_.Create( - "k8s.KubeConfigMapList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ConfigMapList" API object. -func NewKubeConfigMapList_Override(k KubeConfigMapList, scope constructs.Construct, id *string, props *KubeConfigMapListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeConfigMapList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeConfigMapList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeConfigMapList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeConfigMapList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeConfigMapList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeConfigMapList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeConfigMapList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ConfigMapList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeConfigMapList_Manifest(props *KubeConfigMapListProps) interface{} { - _init_.Initialize() - - if err := validateKubeConfigMapList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeConfigMapList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeConfigMapList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeConfigMapList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeConfigMapList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeConfigMapList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeConfigMapList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeConfigMapList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeConfigMapList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeConfigMapList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeConfigMapList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeConfigMapListProps.go b/pods/imports/k8s/KubeConfigMapListProps.go deleted file mode 100644 index 4877c90bd..000000000 --- a/pods/imports/k8s/KubeConfigMapListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ConfigMapList is a resource containing a list of ConfigMap objects. -type KubeConfigMapListProps struct { - // Items is the list of ConfigMaps. - Items *[]*KubeConfigMapProps `field:"required" json:"items" yaml:"items"` - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeConfigMapList__checks.go b/pods/imports/k8s/KubeConfigMapList__checks.go deleted file mode 100644 index ce4658a97..000000000 --- a/pods/imports/k8s/KubeConfigMapList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeConfigMapList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeConfigMapList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeConfigMapList_ManifestParameters(props *KubeConfigMapListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeConfigMapList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeConfigMapListParameters(scope constructs.Construct, id *string, props *KubeConfigMapListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeConfigMapList__no_checks.go b/pods/imports/k8s/KubeConfigMapList__no_checks.go deleted file mode 100644 index f546b0721..000000000 --- a/pods/imports/k8s/KubeConfigMapList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeConfigMapList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeConfigMapList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeConfigMapList_ManifestParameters(props *KubeConfigMapListProps) error { - return nil -} - -func validateKubeConfigMapList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeConfigMapListParameters(scope constructs.Construct, id *string, props *KubeConfigMapListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeConfigMapProps.go b/pods/imports/k8s/KubeConfigMapProps.go deleted file mode 100644 index fd8bee567..000000000 --- a/pods/imports/k8s/KubeConfigMapProps.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ConfigMap holds configuration data for pods to consume. -type KubeConfigMapProps struct { - // BinaryData contains the binary data. - // - // Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet. - BinaryData *map[string]*string `field:"optional" json:"binaryData" yaml:"binaryData"` - // Data contains the configuration data. - // - // Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process. - Data *map[string]*string `field:"optional" json:"data" yaml:"data"` - // Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). - // - // If not set to true, the field can be modified at any time. Defaulted to nil. - Immutable *bool `field:"optional" json:"immutable" yaml:"immutable"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeConfigMap__checks.go b/pods/imports/k8s/KubeConfigMap__checks.go deleted file mode 100644 index 19266587d..000000000 --- a/pods/imports/k8s/KubeConfigMap__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeConfigMap_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeConfigMap_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeConfigMap_ManifestParameters(props *KubeConfigMapProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeConfigMap_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeConfigMapParameters(scope constructs.Construct, id *string, props *KubeConfigMapProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeConfigMap__no_checks.go b/pods/imports/k8s/KubeConfigMap__no_checks.go deleted file mode 100644 index 00487d05e..000000000 --- a/pods/imports/k8s/KubeConfigMap__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeConfigMap_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeConfigMap_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeConfigMap_ManifestParameters(props *KubeConfigMapProps) error { - return nil -} - -func validateKubeConfigMap_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeConfigMapParameters(scope constructs.Construct, id *string, props *KubeConfigMapProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeControllerRevision.go b/pods/imports/k8s/KubeControllerRevision.go deleted file mode 100644 index 79c8280bd..000000000 --- a/pods/imports/k8s/KubeControllerRevision.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ControllerRevision implements an immutable snapshot of state data. -// -// Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers. -type KubeControllerRevision interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeControllerRevision -type jsiiProxy_KubeControllerRevision struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeControllerRevision) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevision) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevision) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevision) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevision) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevision) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevision) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.ControllerRevision" API object. -func NewKubeControllerRevision(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) KubeControllerRevision { - _init_.Initialize() - - if err := validateNewKubeControllerRevisionParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeControllerRevision{} - - _jsii_.Create( - "k8s.KubeControllerRevision", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.ControllerRevision" API object. -func NewKubeControllerRevision_Override(k KubeControllerRevision, scope constructs.Construct, id *string, props *KubeControllerRevisionProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeControllerRevision", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeControllerRevision_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeControllerRevision_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevision", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeControllerRevision_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeControllerRevision_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevision", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ControllerRevision". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeControllerRevision_Manifest(props *KubeControllerRevisionProps) interface{} { - _init_.Initialize() - - if err := validateKubeControllerRevision_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevision", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeControllerRevision_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeControllerRevision_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevision", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeControllerRevision_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeControllerRevision", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeControllerRevision) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeControllerRevision) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeControllerRevision) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeControllerRevision) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeControllerRevisionList.go b/pods/imports/k8s/KubeControllerRevisionList.go deleted file mode 100644 index 47028f68f..000000000 --- a/pods/imports/k8s/KubeControllerRevisionList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ControllerRevisionList is a resource containing a list of ControllerRevision objects. -type KubeControllerRevisionList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeControllerRevisionList -type jsiiProxy_KubeControllerRevisionList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeControllerRevisionList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevisionList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevisionList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevisionList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevisionList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevisionList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeControllerRevisionList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.ControllerRevisionList" API object. -func NewKubeControllerRevisionList(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) KubeControllerRevisionList { - _init_.Initialize() - - if err := validateNewKubeControllerRevisionListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeControllerRevisionList{} - - _jsii_.Create( - "k8s.KubeControllerRevisionList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.ControllerRevisionList" API object. -func NewKubeControllerRevisionList_Override(k KubeControllerRevisionList, scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeControllerRevisionList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeControllerRevisionList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeControllerRevisionList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevisionList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeControllerRevisionList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeControllerRevisionList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevisionList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ControllerRevisionList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeControllerRevisionList_Manifest(props *KubeControllerRevisionListProps) interface{} { - _init_.Initialize() - - if err := validateKubeControllerRevisionList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevisionList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeControllerRevisionList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeControllerRevisionList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeControllerRevisionList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeControllerRevisionList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeControllerRevisionList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeControllerRevisionList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeControllerRevisionList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeControllerRevisionList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeControllerRevisionList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeControllerRevisionListProps.go b/pods/imports/k8s/KubeControllerRevisionListProps.go deleted file mode 100644 index 138673cc9..000000000 --- a/pods/imports/k8s/KubeControllerRevisionListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ControllerRevisionList is a resource containing a list of ControllerRevision objects. -type KubeControllerRevisionListProps struct { - // Items is the list of ControllerRevisions. - Items *[]*KubeControllerRevisionProps `field:"required" json:"items" yaml:"items"` - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeControllerRevisionList__checks.go b/pods/imports/k8s/KubeControllerRevisionList__checks.go deleted file mode 100644 index c97468849..000000000 --- a/pods/imports/k8s/KubeControllerRevisionList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeControllerRevisionList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeControllerRevisionList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeControllerRevisionList_ManifestParameters(props *KubeControllerRevisionListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeControllerRevisionList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeControllerRevisionListParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeControllerRevisionList__no_checks.go b/pods/imports/k8s/KubeControllerRevisionList__no_checks.go deleted file mode 100644 index 664184e90..000000000 --- a/pods/imports/k8s/KubeControllerRevisionList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeControllerRevisionList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeControllerRevisionList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeControllerRevisionList_ManifestParameters(props *KubeControllerRevisionListProps) error { - return nil -} - -func validateKubeControllerRevisionList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeControllerRevisionListParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeControllerRevisionProps.go b/pods/imports/k8s/KubeControllerRevisionProps.go deleted file mode 100644 index 7c3e411d9..000000000 --- a/pods/imports/k8s/KubeControllerRevisionProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// ControllerRevision implements an immutable snapshot of state data. -// -// Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers. -type KubeControllerRevisionProps struct { - // Revision indicates the revision of the state represented by Data. - Revision *float64 `field:"required" json:"revision" yaml:"revision"` - // Data is the serialized representation of the state. - Data interface{} `field:"optional" json:"data" yaml:"data"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeControllerRevision__checks.go b/pods/imports/k8s/KubeControllerRevision__checks.go deleted file mode 100644 index a7cc5ab57..000000000 --- a/pods/imports/k8s/KubeControllerRevision__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeControllerRevision_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeControllerRevision_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeControllerRevision_ManifestParameters(props *KubeControllerRevisionProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeControllerRevision_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeControllerRevisionParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeControllerRevision__no_checks.go b/pods/imports/k8s/KubeControllerRevision__no_checks.go deleted file mode 100644 index 2583eb3f1..000000000 --- a/pods/imports/k8s/KubeControllerRevision__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeControllerRevision_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeControllerRevision_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeControllerRevision_ManifestParameters(props *KubeControllerRevisionProps) error { - return nil -} - -func validateKubeControllerRevision_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeControllerRevisionParameters(scope constructs.Construct, id *string, props *KubeControllerRevisionProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCronJob.go b/pods/imports/k8s/KubeCronJob.go deleted file mode 100644 index ef45e3c33..000000000 --- a/pods/imports/k8s/KubeCronJob.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CronJob represents the configuration of a single cron job. -type KubeCronJob interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCronJob -type jsiiProxy_KubeCronJob struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCronJob) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJob) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJob) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJob) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJob) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJob) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJob) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.batch.v1.CronJob" API object. -func NewKubeCronJob(scope constructs.Construct, id *string, props *KubeCronJobProps) KubeCronJob { - _init_.Initialize() - - if err := validateNewKubeCronJobParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCronJob{} - - _jsii_.Create( - "k8s.KubeCronJob", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.batch.v1.CronJob" API object. -func NewKubeCronJob_Override(k KubeCronJob, scope constructs.Construct, id *string, props *KubeCronJobProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCronJob", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCronJob_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCronJob_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCronJob", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCronJob_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCronJob_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCronJob", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.CronJob". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCronJob_Manifest(props *KubeCronJobProps) interface{} { - _init_.Initialize() - - if err := validateKubeCronJob_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCronJob", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCronJob_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCronJob_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCronJob", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCronJob_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCronJob", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCronJob) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCronJob) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCronJob) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCronJob) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCronJobList.go b/pods/imports/k8s/KubeCronJobList.go deleted file mode 100644 index 849708bb3..000000000 --- a/pods/imports/k8s/KubeCronJobList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CronJobList is a collection of cron jobs. -type KubeCronJobList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCronJobList -type jsiiProxy_KubeCronJobList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCronJobList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJobList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJobList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJobList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJobList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJobList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCronJobList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.batch.v1.CronJobList" API object. -func NewKubeCronJobList(scope constructs.Construct, id *string, props *KubeCronJobListProps) KubeCronJobList { - _init_.Initialize() - - if err := validateNewKubeCronJobListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCronJobList{} - - _jsii_.Create( - "k8s.KubeCronJobList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.batch.v1.CronJobList" API object. -func NewKubeCronJobList_Override(k KubeCronJobList, scope constructs.Construct, id *string, props *KubeCronJobListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCronJobList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCronJobList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCronJobList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCronJobList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCronJobList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCronJobList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCronJobList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.CronJobList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCronJobList_Manifest(props *KubeCronJobListProps) interface{} { - _init_.Initialize() - - if err := validateKubeCronJobList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCronJobList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCronJobList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCronJobList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCronJobList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCronJobList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCronJobList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCronJobList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCronJobList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCronJobList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCronJobList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCronJobListProps.go b/pods/imports/k8s/KubeCronJobListProps.go deleted file mode 100644 index 737b787c6..000000000 --- a/pods/imports/k8s/KubeCronJobListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// CronJobList is a collection of cron jobs. -type KubeCronJobListProps struct { - // items is the list of CronJobs. - Items *[]*KubeCronJobProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCronJobList__checks.go b/pods/imports/k8s/KubeCronJobList__checks.go deleted file mode 100644 index 8a130daf9..000000000 --- a/pods/imports/k8s/KubeCronJobList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCronJobList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCronJobList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCronJobList_ManifestParameters(props *KubeCronJobListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCronJobList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCronJobListParameters(scope constructs.Construct, id *string, props *KubeCronJobListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCronJobList__no_checks.go b/pods/imports/k8s/KubeCronJobList__no_checks.go deleted file mode 100644 index 804fcdc37..000000000 --- a/pods/imports/k8s/KubeCronJobList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCronJobList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCronJobList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCronJobList_ManifestParameters(props *KubeCronJobListProps) error { - return nil -} - -func validateKubeCronJobList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCronJobListParameters(scope constructs.Construct, id *string, props *KubeCronJobListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCronJobProps.go b/pods/imports/k8s/KubeCronJobProps.go deleted file mode 100644 index e243da615..000000000 --- a/pods/imports/k8s/KubeCronJobProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// CronJob represents the configuration of a single cron job. -type KubeCronJobProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of a cron job, including the schedule. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *CronJobSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeCronJob__checks.go b/pods/imports/k8s/KubeCronJob__checks.go deleted file mode 100644 index 1d39a309d..000000000 --- a/pods/imports/k8s/KubeCronJob__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCronJob_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCronJob_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCronJob_ManifestParameters(props *KubeCronJobProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCronJob_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCronJobParameters(scope constructs.Construct, id *string, props *KubeCronJobProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCronJob__no_checks.go b/pods/imports/k8s/KubeCronJob__no_checks.go deleted file mode 100644 index 5c3f7a473..000000000 --- a/pods/imports/k8s/KubeCronJob__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCronJob_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCronJob_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCronJob_ManifestParameters(props *KubeCronJobProps) error { - return nil -} - -func validateKubeCronJob_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCronJobParameters(scope constructs.Construct, id *string, props *KubeCronJobProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCsiDriver.go b/pods/imports/k8s/KubeCsiDriver.go deleted file mode 100644 index c23fede6f..000000000 --- a/pods/imports/k8s/KubeCsiDriver.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. -// -// Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced. -type KubeCsiDriver interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCsiDriver -type jsiiProxy_KubeCsiDriver struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCsiDriver) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriver) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriver) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriver) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriver) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriver) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriver) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.CSIDriver" API object. -func NewKubeCsiDriver(scope constructs.Construct, id *string, props *KubeCsiDriverProps) KubeCsiDriver { - _init_.Initialize() - - if err := validateNewKubeCsiDriverParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCsiDriver{} - - _jsii_.Create( - "k8s.KubeCsiDriver", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.CSIDriver" API object. -func NewKubeCsiDriver_Override(k KubeCsiDriver, scope constructs.Construct, id *string, props *KubeCsiDriverProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCsiDriver", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCsiDriver_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiDriver_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriver", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCsiDriver_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiDriver_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriver", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIDriver". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCsiDriver_Manifest(props *KubeCsiDriverProps) interface{} { - _init_.Initialize() - - if err := validateKubeCsiDriver_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriver", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCsiDriver_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCsiDriver_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriver", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCsiDriver_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCsiDriver", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCsiDriver) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCsiDriver) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCsiDriver) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCsiDriver) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCsiDriverList.go b/pods/imports/k8s/KubeCsiDriverList.go deleted file mode 100644 index 5abf7951d..000000000 --- a/pods/imports/k8s/KubeCsiDriverList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CSIDriverList is a collection of CSIDriver objects. -type KubeCsiDriverList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCsiDriverList -type jsiiProxy_KubeCsiDriverList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCsiDriverList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriverList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriverList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriverList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriverList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriverList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiDriverList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.CSIDriverList" API object. -func NewKubeCsiDriverList(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) KubeCsiDriverList { - _init_.Initialize() - - if err := validateNewKubeCsiDriverListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCsiDriverList{} - - _jsii_.Create( - "k8s.KubeCsiDriverList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.CSIDriverList" API object. -func NewKubeCsiDriverList_Override(k KubeCsiDriverList, scope constructs.Construct, id *string, props *KubeCsiDriverListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCsiDriverList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCsiDriverList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiDriverList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriverList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCsiDriverList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiDriverList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriverList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIDriverList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCsiDriverList_Manifest(props *KubeCsiDriverListProps) interface{} { - _init_.Initialize() - - if err := validateKubeCsiDriverList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriverList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCsiDriverList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCsiDriverList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCsiDriverList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCsiDriverList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCsiDriverList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCsiDriverList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCsiDriverList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCsiDriverList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCsiDriverList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCsiDriverListProps.go b/pods/imports/k8s/KubeCsiDriverListProps.go deleted file mode 100644 index 0dfe81c95..000000000 --- a/pods/imports/k8s/KubeCsiDriverListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// CSIDriverList is a collection of CSIDriver objects. -type KubeCsiDriverListProps struct { - // items is the list of CSIDriver. - Items *[]*KubeCsiDriverProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCsiDriverList__checks.go b/pods/imports/k8s/KubeCsiDriverList__checks.go deleted file mode 100644 index f8cf32e01..000000000 --- a/pods/imports/k8s/KubeCsiDriverList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCsiDriverList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiDriverList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiDriverList_ManifestParameters(props *KubeCsiDriverListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCsiDriverList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCsiDriverListParameters(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCsiDriverList__no_checks.go b/pods/imports/k8s/KubeCsiDriverList__no_checks.go deleted file mode 100644 index 6d21194c7..000000000 --- a/pods/imports/k8s/KubeCsiDriverList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCsiDriverList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCsiDriverList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCsiDriverList_ManifestParameters(props *KubeCsiDriverListProps) error { - return nil -} - -func validateKubeCsiDriverList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCsiDriverListParameters(scope constructs.Construct, id *string, props *KubeCsiDriverListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCsiDriverProps.go b/pods/imports/k8s/KubeCsiDriverProps.go deleted file mode 100644 index 21516ebf3..000000000 --- a/pods/imports/k8s/KubeCsiDriverProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. -// -// Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced. -type KubeCsiDriverProps struct { - // spec represents the specification of the CSI Driver. - Spec *CsiDriverSpec `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - // - // metadata.Name indicates the name of the CSI driver that this object refers to; it MUST be the same name returned by the CSI GetPluginName() call for that driver. The driver name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), dots (.), and alphanumerics between. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCsiDriver__checks.go b/pods/imports/k8s/KubeCsiDriver__checks.go deleted file mode 100644 index d629f178f..000000000 --- a/pods/imports/k8s/KubeCsiDriver__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCsiDriver_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiDriver_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiDriver_ManifestParameters(props *KubeCsiDriverProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCsiDriver_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCsiDriverParameters(scope constructs.Construct, id *string, props *KubeCsiDriverProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCsiDriver__no_checks.go b/pods/imports/k8s/KubeCsiDriver__no_checks.go deleted file mode 100644 index a5ecdbb8c..000000000 --- a/pods/imports/k8s/KubeCsiDriver__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCsiDriver_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCsiDriver_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCsiDriver_ManifestParameters(props *KubeCsiDriverProps) error { - return nil -} - -func validateKubeCsiDriver_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCsiDriverParameters(scope constructs.Construct, id *string, props *KubeCsiDriverProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCsiNode.go b/pods/imports/k8s/KubeCsiNode.go deleted file mode 100644 index a640dd7bf..000000000 --- a/pods/imports/k8s/KubeCsiNode.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CSINode holds information about all CSI drivers installed on a node. -// -// CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object. -type KubeCsiNode interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCsiNode -type jsiiProxy_KubeCsiNode struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCsiNode) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNode) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNode) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNode) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNode) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNode) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNode) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.CSINode" API object. -func NewKubeCsiNode(scope constructs.Construct, id *string, props *KubeCsiNodeProps) KubeCsiNode { - _init_.Initialize() - - if err := validateNewKubeCsiNodeParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCsiNode{} - - _jsii_.Create( - "k8s.KubeCsiNode", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.CSINode" API object. -func NewKubeCsiNode_Override(k KubeCsiNode, scope constructs.Construct, id *string, props *KubeCsiNodeProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCsiNode", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCsiNode_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiNode_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiNode", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCsiNode_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiNode_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiNode", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSINode". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCsiNode_Manifest(props *KubeCsiNodeProps) interface{} { - _init_.Initialize() - - if err := validateKubeCsiNode_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCsiNode", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCsiNode_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCsiNode_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCsiNode", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCsiNode_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCsiNode", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCsiNode) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCsiNode) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCsiNode) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCsiNode) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCsiNodeList.go b/pods/imports/k8s/KubeCsiNodeList.go deleted file mode 100644 index f1b103cd7..000000000 --- a/pods/imports/k8s/KubeCsiNodeList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CSINodeList is a collection of CSINode objects. -type KubeCsiNodeList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCsiNodeList -type jsiiProxy_KubeCsiNodeList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCsiNodeList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNodeList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNodeList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNodeList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNodeList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNodeList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiNodeList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.CSINodeList" API object. -func NewKubeCsiNodeList(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) KubeCsiNodeList { - _init_.Initialize() - - if err := validateNewKubeCsiNodeListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCsiNodeList{} - - _jsii_.Create( - "k8s.KubeCsiNodeList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.CSINodeList" API object. -func NewKubeCsiNodeList_Override(k KubeCsiNodeList, scope constructs.Construct, id *string, props *KubeCsiNodeListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCsiNodeList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCsiNodeList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiNodeList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiNodeList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCsiNodeList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiNodeList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiNodeList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSINodeList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCsiNodeList_Manifest(props *KubeCsiNodeListProps) interface{} { - _init_.Initialize() - - if err := validateKubeCsiNodeList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCsiNodeList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCsiNodeList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCsiNodeList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCsiNodeList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCsiNodeList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCsiNodeList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCsiNodeList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCsiNodeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCsiNodeList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCsiNodeList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCsiNodeListProps.go b/pods/imports/k8s/KubeCsiNodeListProps.go deleted file mode 100644 index 587882db3..000000000 --- a/pods/imports/k8s/KubeCsiNodeListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// CSINodeList is a collection of CSINode objects. -type KubeCsiNodeListProps struct { - // items is the list of CSINode. - Items *[]*KubeCsiNodeProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCsiNodeList__checks.go b/pods/imports/k8s/KubeCsiNodeList__checks.go deleted file mode 100644 index f2f200b5c..000000000 --- a/pods/imports/k8s/KubeCsiNodeList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCsiNodeList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiNodeList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiNodeList_ManifestParameters(props *KubeCsiNodeListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCsiNodeList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCsiNodeListParameters(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCsiNodeList__no_checks.go b/pods/imports/k8s/KubeCsiNodeList__no_checks.go deleted file mode 100644 index 3b1654bf1..000000000 --- a/pods/imports/k8s/KubeCsiNodeList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCsiNodeList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCsiNodeList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCsiNodeList_ManifestParameters(props *KubeCsiNodeListProps) error { - return nil -} - -func validateKubeCsiNodeList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCsiNodeListParameters(scope constructs.Construct, id *string, props *KubeCsiNodeListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCsiNodeProps.go b/pods/imports/k8s/KubeCsiNodeProps.go deleted file mode 100644 index 1a4b7a1a7..000000000 --- a/pods/imports/k8s/KubeCsiNodeProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// CSINode holds information about all CSI drivers installed on a node. -// -// CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object. -type KubeCsiNodeProps struct { - // spec is the specification of CSINode. - Spec *CsiNodeSpec `field:"required" json:"spec" yaml:"spec"` - // Standard object's metadata. - // - // metadata.name must be the Kubernetes node name. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCsiNode__checks.go b/pods/imports/k8s/KubeCsiNode__checks.go deleted file mode 100644 index a0fcea39d..000000000 --- a/pods/imports/k8s/KubeCsiNode__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCsiNode_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiNode_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiNode_ManifestParameters(props *KubeCsiNodeProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCsiNode_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCsiNodeParameters(scope constructs.Construct, id *string, props *KubeCsiNodeProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCsiNode__no_checks.go b/pods/imports/k8s/KubeCsiNode__no_checks.go deleted file mode 100644 index b00b7f343..000000000 --- a/pods/imports/k8s/KubeCsiNode__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCsiNode_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCsiNode_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCsiNode_ManifestParameters(props *KubeCsiNodeProps) error { - return nil -} - -func validateKubeCsiNode_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCsiNodeParameters(scope constructs.Construct, id *string, props *KubeCsiNodeProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacity.go b/pods/imports/k8s/KubeCsiStorageCapacity.go deleted file mode 100644 index 434963b14..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacity.go +++ /dev/null @@ -1,327 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CSIStorageCapacity stores the result of one CSI GetCapacity call. -// -// For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes. -// -// For example this can express things like: - StorageClass "standard" has "1234 GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123" -// -// The following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero -// -// The producer of these objects can decide which approach is more suitable. -// -// They are consumed by the kube-scheduler when a CSI driver opts into capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler compares the MaximumVolumeSize against the requested size of pending volumes to filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a comparison against the less precise Capacity. If that is also unset, the scheduler assumes that capacity is insufficient and tries some other node. -type KubeCsiStorageCapacity interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCsiStorageCapacity -type jsiiProxy_KubeCsiStorageCapacity struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacity) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.CSIStorageCapacity" API object. -func NewKubeCsiStorageCapacity(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) KubeCsiStorageCapacity { - _init_.Initialize() - - if err := validateNewKubeCsiStorageCapacityParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCsiStorageCapacity{} - - _jsii_.Create( - "k8s.KubeCsiStorageCapacity", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.CSIStorageCapacity" API object. -func NewKubeCsiStorageCapacity_Override(k KubeCsiStorageCapacity, scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCsiStorageCapacity", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCsiStorageCapacity_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacity_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacity", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCsiStorageCapacity_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacity_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacity", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIStorageCapacity". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCsiStorageCapacity_Manifest(props *KubeCsiStorageCapacityProps) interface{} { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacity_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacity", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCsiStorageCapacity_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacity_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacity", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCsiStorageCapacity_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCsiStorageCapacity", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCsiStorageCapacity) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCsiStorageCapacity) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCsiStorageCapacity) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCsiStorageCapacity) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList.go b/pods/imports/k8s/KubeCsiStorageCapacityList.go deleted file mode 100644 index 0036c1614..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacityList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CSIStorageCapacityList is a collection of CSIStorageCapacity objects. -type KubeCsiStorageCapacityList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCsiStorageCapacityList -type jsiiProxy_KubeCsiStorageCapacityList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCsiStorageCapacityList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.CSIStorageCapacityList" API object. -func NewKubeCsiStorageCapacityList(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) KubeCsiStorageCapacityList { - _init_.Initialize() - - if err := validateNewKubeCsiStorageCapacityListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCsiStorageCapacityList{} - - _jsii_.Create( - "k8s.KubeCsiStorageCapacityList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.CSIStorageCapacityList" API object. -func NewKubeCsiStorageCapacityList_Override(k KubeCsiStorageCapacityList, scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCsiStorageCapacityList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCsiStorageCapacityList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacityList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacityList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCsiStorageCapacityList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacityList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacityList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIStorageCapacityList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCsiStorageCapacityList_Manifest(props *KubeCsiStorageCapacityListProps) interface{} { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacityList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacityList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCsiStorageCapacityList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCsiStorageCapacityList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCsiStorageCapacityList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCsiStorageCapacityList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCsiStorageCapacityList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCsiStorageCapacityList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCsiStorageCapacityList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCsiStorageCapacityList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCsiStorageCapacityList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacityListProps.go b/pods/imports/k8s/KubeCsiStorageCapacityListProps.go deleted file mode 100644 index e0eba22cd..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacityListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// CSIStorageCapacityList is a collection of CSIStorageCapacity objects. -type KubeCsiStorageCapacityListProps struct { - // items is the list of CSIStorageCapacity objects. - Items *[]*KubeCsiStorageCapacityProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go b/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go deleted file mode 100644 index 69119b7a3..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacityList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCsiStorageCapacityList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiStorageCapacityList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiStorageCapacityList_ManifestParameters(props *KubeCsiStorageCapacityListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCsiStorageCapacityList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCsiStorageCapacityListParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go b/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go deleted file mode 100644 index 3404d4aba..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacityList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCsiStorageCapacityList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCsiStorageCapacityList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCsiStorageCapacityList_ManifestParameters(props *KubeCsiStorageCapacityListProps) error { - return nil -} - -func validateKubeCsiStorageCapacityList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCsiStorageCapacityListParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacityProps.go b/pods/imports/k8s/KubeCsiStorageCapacityProps.go deleted file mode 100644 index 113ee021a..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacityProps.go +++ /dev/null @@ -1,41 +0,0 @@ -package k8s - - -// CSIStorageCapacity stores the result of one CSI GetCapacity call. -// -// For a given StorageClass, this describes the available capacity in a particular topology segment. This can be used when considering where to instantiate new PersistentVolumes. -// -// For example this can express things like: - StorageClass "standard" has "1234 GiB" available in "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" has "10 GiB" available in "kubernetes.io/hostname=knode-abc123" -// -// The following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero -// -// The producer of these objects can decide which approach is more suitable. -// -// They are consumed by the kube-scheduler when a CSI driver opts into capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler compares the MaximumVolumeSize against the requested size of pending volumes to filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a comparison against the less precise Capacity. If that is also unset, the scheduler assumes that capacity is insufficient and tries some other node. -type KubeCsiStorageCapacityProps struct { - // storageClassName represents the name of the StorageClass that the reported capacity applies to. - // - // It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable. - StorageClassName *string `field:"required" json:"storageClassName" yaml:"storageClassName"` - // capacity is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. - // - // The semantic is currently (CSI spec 1.2) defined as: The available capacity, in bytes, of the storage that can be used to provision volumes. If not set, that information is currently unavailable. - Capacity Quantity `field:"optional" json:"capacity" yaml:"capacity"` - // maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. - // - // This is defined since CSI spec 1.4.0 as the largest size that may be used in a CreateVolumeRequest.capacity_range.required_bytes field to create a volume with the same parameters as those in GetCapacityRequest. The corresponding value in the Kubernetes API is ResourceRequirements.Requests in a volume claim. - MaximumVolumeSize Quantity `field:"optional" json:"maximumVolumeSize" yaml:"maximumVolumeSize"` - // Standard object's metadata. - // - // The name has no particular meaning. It must be a DNS subdomain (dots allowed, 253 characters). To ensure that there are no conflicts with other CSI drivers on the cluster, the recommendation is to use csisc-, a generated name, or a reverse-domain name which ends with the unique CSI driver name. - // - // Objects are namespaced. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // nodeTopology defines which nodes have access to the storage for which capacity was reported. - // - // If not set, the storage is not accessible from any node in the cluster. If empty, the storage is accessible from all nodes. This field is immutable. - NodeTopology *LabelSelector `field:"optional" json:"nodeTopology" yaml:"nodeTopology"` -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacity__checks.go b/pods/imports/k8s/KubeCsiStorageCapacity__checks.go deleted file mode 100644 index 399689338..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacity__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCsiStorageCapacity_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiStorageCapacity_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCsiStorageCapacity_ManifestParameters(props *KubeCsiStorageCapacityProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCsiStorageCapacity_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCsiStorageCapacityParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go b/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go deleted file mode 100644 index 01f797108..000000000 --- a/pods/imports/k8s/KubeCsiStorageCapacity__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCsiStorageCapacity_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCsiStorageCapacity_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCsiStorageCapacity_ManifestParameters(props *KubeCsiStorageCapacityProps) error { - return nil -} - -func validateKubeCsiStorageCapacity_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCsiStorageCapacityParameters(scope constructs.Construct, id *string, props *KubeCsiStorageCapacityProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinition.go b/pods/imports/k8s/KubeCustomResourceDefinition.go deleted file mode 100644 index 9255274a0..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinition.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CustomResourceDefinition represents a resource that should be exposed on the API server. -// -// Its name MUST be in the format <.spec.name>.<.spec.group>. -type KubeCustomResourceDefinition interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCustomResourceDefinition -type jsiiProxy_KubeCustomResourceDefinition struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinition) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" API object. -func NewKubeCustomResourceDefinition(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) KubeCustomResourceDefinition { - _init_.Initialize() - - if err := validateNewKubeCustomResourceDefinitionParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCustomResourceDefinition{} - - _jsii_.Create( - "k8s.KubeCustomResourceDefinition", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" API object. -func NewKubeCustomResourceDefinition_Override(k KubeCustomResourceDefinition, scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCustomResourceDefinition", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCustomResourceDefinition_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinition_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinition", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCustomResourceDefinition_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinition_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinition", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCustomResourceDefinition_Manifest(props *KubeCustomResourceDefinitionProps) interface{} { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinition_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinition", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCustomResourceDefinition_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinition_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinition", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCustomResourceDefinition_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCustomResourceDefinition", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCustomResourceDefinition) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCustomResourceDefinition) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCustomResourceDefinition) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCustomResourceDefinition) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList.go b/pods/imports/k8s/KubeCustomResourceDefinitionList.go deleted file mode 100644 index ded0fda71..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// CustomResourceDefinitionList is a list of CustomResourceDefinition objects. -type KubeCustomResourceDefinitionList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeCustomResourceDefinitionList -type jsiiProxy_KubeCustomResourceDefinitionList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeCustomResourceDefinitionList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" API object. -func NewKubeCustomResourceDefinitionList(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) KubeCustomResourceDefinitionList { - _init_.Initialize() - - if err := validateNewKubeCustomResourceDefinitionListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeCustomResourceDefinitionList{} - - _jsii_.Create( - "k8s.KubeCustomResourceDefinitionList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" API object. -func NewKubeCustomResourceDefinitionList_Override(k KubeCustomResourceDefinitionList, scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeCustomResourceDefinitionList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeCustomResourceDefinitionList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinitionList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinitionList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeCustomResourceDefinitionList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinitionList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinitionList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeCustomResourceDefinitionList_Manifest(props *KubeCustomResourceDefinitionListProps) interface{} { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinitionList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinitionList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeCustomResourceDefinitionList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeCustomResourceDefinitionList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeCustomResourceDefinitionList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeCustomResourceDefinitionList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeCustomResourceDefinitionList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeCustomResourceDefinitionList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeCustomResourceDefinitionList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeCustomResourceDefinitionList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeCustomResourceDefinitionList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go b/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go deleted file mode 100644 index b27c1903c..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinitionListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// CustomResourceDefinitionList is a list of CustomResourceDefinition objects. -type KubeCustomResourceDefinitionListProps struct { - // items list individual CustomResourceDefinition objects. - Items *[]*KubeCustomResourceDefinitionProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go b/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go deleted file mode 100644 index d219f7172..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCustomResourceDefinitionList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCustomResourceDefinitionList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCustomResourceDefinitionList_ManifestParameters(props *KubeCustomResourceDefinitionListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCustomResourceDefinitionList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCustomResourceDefinitionListParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go b/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go deleted file mode 100644 index 8accd247e..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinitionList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCustomResourceDefinitionList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCustomResourceDefinitionList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCustomResourceDefinitionList_ManifestParameters(props *KubeCustomResourceDefinitionListProps) error { - return nil -} - -func validateKubeCustomResourceDefinitionList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCustomResourceDefinitionListParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinitionProps.go b/pods/imports/k8s/KubeCustomResourceDefinitionProps.go deleted file mode 100644 index fd8d00b61..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinitionProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// CustomResourceDefinition represents a resource that should be exposed on the API server. -// -// Its name MUST be in the format <.spec.name>.<.spec.group>. -type KubeCustomResourceDefinitionProps struct { - // spec describes how the user wants the resources to appear. - Spec *CustomResourceDefinitionSpec `field:"required" json:"spec" yaml:"spec"` - // Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinition__checks.go b/pods/imports/k8s/KubeCustomResourceDefinition__checks.go deleted file mode 100644 index e9b3548b7..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinition__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeCustomResourceDefinition_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeCustomResourceDefinition_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeCustomResourceDefinition_ManifestParameters(props *KubeCustomResourceDefinitionProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeCustomResourceDefinition_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeCustomResourceDefinitionParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go b/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go deleted file mode 100644 index fe474115c..000000000 --- a/pods/imports/k8s/KubeCustomResourceDefinition__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeCustomResourceDefinition_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeCustomResourceDefinition_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeCustomResourceDefinition_ManifestParameters(props *KubeCustomResourceDefinitionProps) error { - return nil -} - -func validateKubeCustomResourceDefinition_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeCustomResourceDefinitionParameters(scope constructs.Construct, id *string, props *KubeCustomResourceDefinitionProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeDaemonSet.go b/pods/imports/k8s/KubeDaemonSet.go deleted file mode 100644 index 4661cc4ba..000000000 --- a/pods/imports/k8s/KubeDaemonSet.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// DaemonSet represents the configuration of a daemon set. -type KubeDaemonSet interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeDaemonSet -type jsiiProxy_KubeDaemonSet struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeDaemonSet) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSet) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSet) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSet) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSet) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSet) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSet) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.DaemonSet" API object. -func NewKubeDaemonSet(scope constructs.Construct, id *string, props *KubeDaemonSetProps) KubeDaemonSet { - _init_.Initialize() - - if err := validateNewKubeDaemonSetParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeDaemonSet{} - - _jsii_.Create( - "k8s.KubeDaemonSet", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.DaemonSet" API object. -func NewKubeDaemonSet_Override(k KubeDaemonSet, scope constructs.Construct, id *string, props *KubeDaemonSetProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeDaemonSet", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeDaemonSet_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDaemonSet_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSet", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDaemonSet_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDaemonSet_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSet", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DaemonSet". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDaemonSet_Manifest(props *KubeDaemonSetProps) interface{} { - _init_.Initialize() - - if err := validateKubeDaemonSet_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSet", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeDaemonSet_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeDaemonSet_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSet", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeDaemonSet_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeDaemonSet", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeDaemonSet) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeDaemonSet) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeDaemonSet) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeDaemonSet) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeDaemonSetList.go b/pods/imports/k8s/KubeDaemonSetList.go deleted file mode 100644 index 2ccbaf11b..000000000 --- a/pods/imports/k8s/KubeDaemonSetList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// DaemonSetList is a collection of daemon sets. -type KubeDaemonSetList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeDaemonSetList -type jsiiProxy_KubeDaemonSetList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeDaemonSetList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSetList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSetList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSetList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSetList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSetList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDaemonSetList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.DaemonSetList" API object. -func NewKubeDaemonSetList(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) KubeDaemonSetList { - _init_.Initialize() - - if err := validateNewKubeDaemonSetListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeDaemonSetList{} - - _jsii_.Create( - "k8s.KubeDaemonSetList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.DaemonSetList" API object. -func NewKubeDaemonSetList_Override(k KubeDaemonSetList, scope constructs.Construct, id *string, props *KubeDaemonSetListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeDaemonSetList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeDaemonSetList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDaemonSetList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSetList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDaemonSetList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDaemonSetList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSetList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DaemonSetList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDaemonSetList_Manifest(props *KubeDaemonSetListProps) interface{} { - _init_.Initialize() - - if err := validateKubeDaemonSetList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSetList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeDaemonSetList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeDaemonSetList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeDaemonSetList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeDaemonSetList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeDaemonSetList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeDaemonSetList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeDaemonSetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeDaemonSetList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeDaemonSetList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeDaemonSetListProps.go b/pods/imports/k8s/KubeDaemonSetListProps.go deleted file mode 100644 index 83dded479..000000000 --- a/pods/imports/k8s/KubeDaemonSetListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// DaemonSetList is a collection of daemon sets. -type KubeDaemonSetListProps struct { - // A list of daemon sets. - Items *[]*KubeDaemonSetProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeDaemonSetList__checks.go b/pods/imports/k8s/KubeDaemonSetList__checks.go deleted file mode 100644 index 351f5f43a..000000000 --- a/pods/imports/k8s/KubeDaemonSetList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDaemonSetList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDaemonSetList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDaemonSetList_ManifestParameters(props *KubeDaemonSetListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDaemonSetList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDaemonSetListParameters(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeDaemonSetList__no_checks.go b/pods/imports/k8s/KubeDaemonSetList__no_checks.go deleted file mode 100644 index a64774475..000000000 --- a/pods/imports/k8s/KubeDaemonSetList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDaemonSetList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDaemonSetList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDaemonSetList_ManifestParameters(props *KubeDaemonSetListProps) error { - return nil -} - -func validateKubeDaemonSetList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDaemonSetListParameters(scope constructs.Construct, id *string, props *KubeDaemonSetListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeDaemonSetProps.go b/pods/imports/k8s/KubeDaemonSetProps.go deleted file mode 100644 index 28b38c6a7..000000000 --- a/pods/imports/k8s/KubeDaemonSetProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// DaemonSet represents the configuration of a daemon set. -type KubeDaemonSetProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // The desired behavior of this daemon set. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *DaemonSetSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeDaemonSet__checks.go b/pods/imports/k8s/KubeDaemonSet__checks.go deleted file mode 100644 index 11c6841e5..000000000 --- a/pods/imports/k8s/KubeDaemonSet__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDaemonSet_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDaemonSet_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDaemonSet_ManifestParameters(props *KubeDaemonSetProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDaemonSet_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDaemonSetParameters(scope constructs.Construct, id *string, props *KubeDaemonSetProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeDaemonSet__no_checks.go b/pods/imports/k8s/KubeDaemonSet__no_checks.go deleted file mode 100644 index f2f3c21cd..000000000 --- a/pods/imports/k8s/KubeDaemonSet__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDaemonSet_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDaemonSet_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDaemonSet_ManifestParameters(props *KubeDaemonSetProps) error { - return nil -} - -func validateKubeDaemonSet_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDaemonSetParameters(scope constructs.Construct, id *string, props *KubeDaemonSetProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeDeployment.go b/pods/imports/k8s/KubeDeployment.go deleted file mode 100644 index 2f34de742..000000000 --- a/pods/imports/k8s/KubeDeployment.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Deployment enables declarative updates for Pods and ReplicaSets. -type KubeDeployment interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeDeployment -type jsiiProxy_KubeDeployment struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeDeployment) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeployment) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeployment) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeployment) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeployment) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeployment) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeployment) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.Deployment" API object. -func NewKubeDeployment(scope constructs.Construct, id *string, props *KubeDeploymentProps) KubeDeployment { - _init_.Initialize() - - if err := validateNewKubeDeploymentParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeDeployment{} - - _jsii_.Create( - "k8s.KubeDeployment", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.Deployment" API object. -func NewKubeDeployment_Override(k KubeDeployment, scope constructs.Construct, id *string, props *KubeDeploymentProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeDeployment", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeDeployment_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeployment_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeployment", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDeployment_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeployment_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeployment", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.Deployment". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDeployment_Manifest(props *KubeDeploymentProps) interface{} { - _init_.Initialize() - - if err := validateKubeDeployment_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeDeployment", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeDeployment_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeDeployment_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeDeployment", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeDeployment_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeDeployment", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeDeployment) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeDeployment) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeDeployment) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeDeployment) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeDeploymentList.go b/pods/imports/k8s/KubeDeploymentList.go deleted file mode 100644 index 5a49e6495..000000000 --- a/pods/imports/k8s/KubeDeploymentList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// DeploymentList is a list of Deployments. -type KubeDeploymentList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeDeploymentList -type jsiiProxy_KubeDeploymentList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeDeploymentList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeploymentList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeploymentList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeploymentList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeploymentList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeploymentList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeploymentList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.DeploymentList" API object. -func NewKubeDeploymentList(scope constructs.Construct, id *string, props *KubeDeploymentListProps) KubeDeploymentList { - _init_.Initialize() - - if err := validateNewKubeDeploymentListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeDeploymentList{} - - _jsii_.Create( - "k8s.KubeDeploymentList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.DeploymentList" API object. -func NewKubeDeploymentList_Override(k KubeDeploymentList, scope constructs.Construct, id *string, props *KubeDeploymentListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeDeploymentList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeDeploymentList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeploymentList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeploymentList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDeploymentList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeploymentList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeploymentList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DeploymentList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDeploymentList_Manifest(props *KubeDeploymentListProps) interface{} { - _init_.Initialize() - - if err := validateKubeDeploymentList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeDeploymentList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeDeploymentList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeDeploymentList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeDeploymentList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeDeploymentList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeDeploymentList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeDeploymentList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeDeploymentList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeDeploymentList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeDeploymentList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeDeploymentListProps.go b/pods/imports/k8s/KubeDeploymentListProps.go deleted file mode 100644 index 775f02a14..000000000 --- a/pods/imports/k8s/KubeDeploymentListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// DeploymentList is a list of Deployments. -type KubeDeploymentListProps struct { - // Items is the list of Deployments. - Items *[]*KubeDeploymentProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeDeploymentList__checks.go b/pods/imports/k8s/KubeDeploymentList__checks.go deleted file mode 100644 index 628fd6fe2..000000000 --- a/pods/imports/k8s/KubeDeploymentList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDeploymentList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDeploymentList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDeploymentList_ManifestParameters(props *KubeDeploymentListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDeploymentList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDeploymentListParameters(scope constructs.Construct, id *string, props *KubeDeploymentListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeDeploymentList__no_checks.go b/pods/imports/k8s/KubeDeploymentList__no_checks.go deleted file mode 100644 index 076ae2e09..000000000 --- a/pods/imports/k8s/KubeDeploymentList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDeploymentList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDeploymentList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDeploymentList_ManifestParameters(props *KubeDeploymentListProps) error { - return nil -} - -func validateKubeDeploymentList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDeploymentListParameters(scope constructs.Construct, id *string, props *KubeDeploymentListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeDeploymentProps.go b/pods/imports/k8s/KubeDeploymentProps.go deleted file mode 100644 index 0bae9486e..000000000 --- a/pods/imports/k8s/KubeDeploymentProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Deployment enables declarative updates for Pods and ReplicaSets. -type KubeDeploymentProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the Deployment. - Spec *DeploymentSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeDeployment__checks.go b/pods/imports/k8s/KubeDeployment__checks.go deleted file mode 100644 index 333a0ea62..000000000 --- a/pods/imports/k8s/KubeDeployment__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDeployment_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDeployment_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDeployment_ManifestParameters(props *KubeDeploymentProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDeployment_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDeploymentParameters(scope constructs.Construct, id *string, props *KubeDeploymentProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeDeployment__no_checks.go b/pods/imports/k8s/KubeDeployment__no_checks.go deleted file mode 100644 index 6d0946cd6..000000000 --- a/pods/imports/k8s/KubeDeployment__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDeployment_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDeployment_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDeployment_ManifestParameters(props *KubeDeploymentProps) error { - return nil -} - -func validateKubeDeployment_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDeploymentParameters(scope constructs.Construct, id *string, props *KubeDeploymentProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go deleted file mode 100644 index a597317ad..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// DeviceClassList is a collection of classes. -type KubeDeviceClassListV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeDeviceClassListV1Alpha3 -type jsiiProxy_KubeDeviceClassListV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassListV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.DeviceClassList" API object. -func NewKubeDeviceClassListV1Alpha3(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) KubeDeviceClassListV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeDeviceClassListV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeDeviceClassListV1Alpha3{} - - _jsii_.Create( - "k8s.KubeDeviceClassListV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.DeviceClassList" API object. -func NewKubeDeviceClassListV1Alpha3_Override(k KubeDeviceClassListV1Alpha3, scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeDeviceClassListV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeDeviceClassListV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeviceClassListV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDeviceClassListV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeviceClassListV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.DeviceClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDeviceClassListV1Alpha3_Manifest(props *KubeDeviceClassListV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeDeviceClassListV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeDeviceClassListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeDeviceClassListV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassListV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeDeviceClassListV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeDeviceClassListV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeDeviceClassListV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go deleted file mode 100644 index 5bac2cc8a..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// DeviceClassList is a collection of classes. -type KubeDeviceClassListV1Alpha3Props struct { - // Items is the list of resource classes. - Items *[]*KubeDeviceClassV1Alpha3Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go deleted file mode 100644 index 486d976ab..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDeviceClassListV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDeviceClassListV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDeviceClassListV1Alpha3_ManifestParameters(props *KubeDeviceClassListV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDeviceClassListV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDeviceClassListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go deleted file mode 100644 index 9afd25ede..000000000 --- a/pods/imports/k8s/KubeDeviceClassListV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDeviceClassListV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDeviceClassListV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDeviceClassListV1Alpha3_ManifestParameters(props *KubeDeviceClassListV1Alpha3Props) error { - return nil -} - -func validateKubeDeviceClassListV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDeviceClassListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassListV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3.go deleted file mode 100644 index aef7d86b1..000000000 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3.go +++ /dev/null @@ -1,321 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. -// -// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeDeviceClassV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeDeviceClassV1Alpha3 -type jsiiProxy_KubeDeviceClassV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeDeviceClassV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.DeviceClass" API object. -func NewKubeDeviceClassV1Alpha3(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) KubeDeviceClassV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeDeviceClassV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeDeviceClassV1Alpha3{} - - _jsii_.Create( - "k8s.KubeDeviceClassV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.DeviceClass" API object. -func NewKubeDeviceClassV1Alpha3_Override(k KubeDeviceClassV1Alpha3, scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeDeviceClassV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeDeviceClassV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeviceClassV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeDeviceClassV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeDeviceClassV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.DeviceClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeDeviceClassV1Alpha3_Manifest(props *KubeDeviceClassV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeDeviceClassV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeDeviceClassV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeDeviceClassV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeDeviceClassV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeDeviceClassV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeDeviceClassV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeDeviceClassV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeDeviceClassV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeDeviceClassV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeDeviceClassV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go deleted file mode 100644 index 15ff418b5..000000000 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3Props.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. -// -// It can be referenced in the device requests of a claim to apply these presets. Cluster scoped. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeDeviceClassV1Alpha3Props struct { - // Spec defines what can be allocated and how to configure it. - // - // This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation. - // - // Changing the spec automatically increments the metadata.generation number. - Spec *DeviceClassSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go deleted file mode 100644 index b26ca5164..000000000 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeDeviceClassV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeDeviceClassV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeDeviceClassV1Alpha3_ManifestParameters(props *KubeDeviceClassV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeDeviceClassV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeDeviceClassV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go b/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go deleted file mode 100644 index 6ed049938..000000000 --- a/pods/imports/k8s/KubeDeviceClassV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeDeviceClassV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeDeviceClassV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeDeviceClassV1Alpha3_ManifestParameters(props *KubeDeviceClassV1Alpha3Props) error { - return nil -} - -func validateKubeDeviceClassV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeDeviceClassV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeDeviceClassV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEndpointSlice.go b/pods/imports/k8s/KubeEndpointSlice.go deleted file mode 100644 index e3e487260..000000000 --- a/pods/imports/k8s/KubeEndpointSlice.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// EndpointSlice represents a subset of the endpoints that implement a service. -// -// For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints. -type KubeEndpointSlice interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEndpointSlice -type jsiiProxy_KubeEndpointSlice struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEndpointSlice) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSlice) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSlice) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSlice) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSlice) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSlice) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSlice) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.discovery.v1.EndpointSlice" API object. -func NewKubeEndpointSlice(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) KubeEndpointSlice { - _init_.Initialize() - - if err := validateNewKubeEndpointSliceParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEndpointSlice{} - - _jsii_.Create( - "k8s.KubeEndpointSlice", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.discovery.v1.EndpointSlice" API object. -func NewKubeEndpointSlice_Override(k KubeEndpointSlice, scope constructs.Construct, id *string, props *KubeEndpointSliceProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEndpointSlice", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEndpointSlice_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpointSlice_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSlice", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEndpointSlice_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpointSlice_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSlice", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.discovery.v1.EndpointSlice". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEndpointSlice_Manifest(props *KubeEndpointSliceProps) interface{} { - _init_.Initialize() - - if err := validateKubeEndpointSlice_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSlice", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEndpointSlice_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEndpointSlice_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSlice", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEndpointSlice_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEndpointSlice", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEndpointSlice) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEndpointSlice) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEndpointSlice) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEndpointSlice) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEndpointSliceList.go b/pods/imports/k8s/KubeEndpointSliceList.go deleted file mode 100644 index 2cfc75719..000000000 --- a/pods/imports/k8s/KubeEndpointSliceList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// EndpointSliceList represents a list of endpoint slices. -type KubeEndpointSliceList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEndpointSliceList -type jsiiProxy_KubeEndpointSliceList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEndpointSliceList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSliceList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSliceList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSliceList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSliceList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSliceList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointSliceList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.discovery.v1.EndpointSliceList" API object. -func NewKubeEndpointSliceList(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) KubeEndpointSliceList { - _init_.Initialize() - - if err := validateNewKubeEndpointSliceListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEndpointSliceList{} - - _jsii_.Create( - "k8s.KubeEndpointSliceList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.discovery.v1.EndpointSliceList" API object. -func NewKubeEndpointSliceList_Override(k KubeEndpointSliceList, scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEndpointSliceList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEndpointSliceList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpointSliceList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSliceList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEndpointSliceList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpointSliceList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSliceList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.discovery.v1.EndpointSliceList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEndpointSliceList_Manifest(props *KubeEndpointSliceListProps) interface{} { - _init_.Initialize() - - if err := validateKubeEndpointSliceList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSliceList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEndpointSliceList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEndpointSliceList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEndpointSliceList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEndpointSliceList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEndpointSliceList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEndpointSliceList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEndpointSliceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEndpointSliceList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEndpointSliceList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEndpointSliceListProps.go b/pods/imports/k8s/KubeEndpointSliceListProps.go deleted file mode 100644 index a7016c90d..000000000 --- a/pods/imports/k8s/KubeEndpointSliceListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// EndpointSliceList represents a list of endpoint slices. -type KubeEndpointSliceListProps struct { - // items is the list of endpoint slices. - Items *[]*KubeEndpointSliceProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeEndpointSliceList__checks.go b/pods/imports/k8s/KubeEndpointSliceList__checks.go deleted file mode 100644 index 8b53ac49f..000000000 --- a/pods/imports/k8s/KubeEndpointSliceList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEndpointSliceList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpointSliceList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpointSliceList_ManifestParameters(props *KubeEndpointSliceListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEndpointSliceList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEndpointSliceListParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEndpointSliceList__no_checks.go b/pods/imports/k8s/KubeEndpointSliceList__no_checks.go deleted file mode 100644 index d5e0209c8..000000000 --- a/pods/imports/k8s/KubeEndpointSliceList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEndpointSliceList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEndpointSliceList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEndpointSliceList_ManifestParameters(props *KubeEndpointSliceListProps) error { - return nil -} - -func validateKubeEndpointSliceList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEndpointSliceListParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEndpointSliceProps.go b/pods/imports/k8s/KubeEndpointSliceProps.go deleted file mode 100644 index cf6b38e17..000000000 --- a/pods/imports/k8s/KubeEndpointSliceProps.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// EndpointSlice represents a subset of the endpoints that implement a service. -// -// For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints. -type KubeEndpointSliceProps struct { - // addressType specifies the type of address carried by this EndpointSlice. - // - // All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name. - AddressType *string `field:"required" json:"addressType" yaml:"addressType"` - // endpoints is a list of unique endpoints in this slice. - // - // Each slice may include a maximum of 1000 endpoints. - Endpoints *[]*Endpoint `field:"required" json:"endpoints" yaml:"endpoints"` - // Standard object's metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // ports specifies the list of network ports exposed by each endpoint in this slice. - // - // Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates "all ports". Each slice may include a maximum of 100 ports. - Ports *[]*EndpointPort `field:"optional" json:"ports" yaml:"ports"` -} - diff --git a/pods/imports/k8s/KubeEndpointSlice__checks.go b/pods/imports/k8s/KubeEndpointSlice__checks.go deleted file mode 100644 index 49bd561d1..000000000 --- a/pods/imports/k8s/KubeEndpointSlice__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEndpointSlice_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpointSlice_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpointSlice_ManifestParameters(props *KubeEndpointSliceProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEndpointSlice_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEndpointSliceParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEndpointSlice__no_checks.go b/pods/imports/k8s/KubeEndpointSlice__no_checks.go deleted file mode 100644 index e7f9db289..000000000 --- a/pods/imports/k8s/KubeEndpointSlice__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEndpointSlice_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEndpointSlice_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEndpointSlice_ManifestParameters(props *KubeEndpointSliceProps) error { - return nil -} - -func validateKubeEndpointSlice_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEndpointSliceParameters(scope constructs.Construct, id *string, props *KubeEndpointSliceProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEndpoints.go b/pods/imports/k8s/KubeEndpoints.go deleted file mode 100644 index fd070db0c..000000000 --- a/pods/imports/k8s/KubeEndpoints.go +++ /dev/null @@ -1,329 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Endpoints is a collection of endpoints that implement the actual service. Example:. -// -// Name: "mysvc", -// Subsets: [ -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// ]. -type KubeEndpoints interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEndpoints -type jsiiProxy_KubeEndpoints struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEndpoints) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpoints) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpoints) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpoints) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpoints) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpoints) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpoints) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Endpoints" API object. -func NewKubeEndpoints(scope constructs.Construct, id *string, props *KubeEndpointsProps) KubeEndpoints { - _init_.Initialize() - - if err := validateNewKubeEndpointsParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEndpoints{} - - _jsii_.Create( - "k8s.KubeEndpoints", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Endpoints" API object. -func NewKubeEndpoints_Override(k KubeEndpoints, scope constructs.Construct, id *string, props *KubeEndpointsProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEndpoints", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEndpoints_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpoints_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpoints", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEndpoints_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpoints_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpoints", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Endpoints". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEndpoints_Manifest(props *KubeEndpointsProps) interface{} { - _init_.Initialize() - - if err := validateKubeEndpoints_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEndpoints", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEndpoints_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEndpoints_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEndpoints", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEndpoints_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEndpoints", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEndpoints) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEndpoints) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEndpoints) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEndpoints) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEndpointsList.go b/pods/imports/k8s/KubeEndpointsList.go deleted file mode 100644 index 97fd1ca51..000000000 --- a/pods/imports/k8s/KubeEndpointsList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// EndpointsList is a list of endpoints. -type KubeEndpointsList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEndpointsList -type jsiiProxy_KubeEndpointsList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEndpointsList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointsList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointsList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointsList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointsList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointsList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEndpointsList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.EndpointsList" API object. -func NewKubeEndpointsList(scope constructs.Construct, id *string, props *KubeEndpointsListProps) KubeEndpointsList { - _init_.Initialize() - - if err := validateNewKubeEndpointsListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEndpointsList{} - - _jsii_.Create( - "k8s.KubeEndpointsList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.EndpointsList" API object. -func NewKubeEndpointsList_Override(k KubeEndpointsList, scope constructs.Construct, id *string, props *KubeEndpointsListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEndpointsList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEndpointsList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpointsList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpointsList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEndpointsList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEndpointsList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEndpointsList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.EndpointsList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEndpointsList_Manifest(props *KubeEndpointsListProps) interface{} { - _init_.Initialize() - - if err := validateKubeEndpointsList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEndpointsList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEndpointsList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEndpointsList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEndpointsList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEndpointsList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEndpointsList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEndpointsList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEndpointsList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEndpointsList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEndpointsList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEndpointsListProps.go b/pods/imports/k8s/KubeEndpointsListProps.go deleted file mode 100644 index 97543f00b..000000000 --- a/pods/imports/k8s/KubeEndpointsListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// EndpointsList is a list of endpoints. -type KubeEndpointsListProps struct { - // List of endpoints. - Items *[]*KubeEndpointsProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeEndpointsList__checks.go b/pods/imports/k8s/KubeEndpointsList__checks.go deleted file mode 100644 index 36d3b42c1..000000000 --- a/pods/imports/k8s/KubeEndpointsList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEndpointsList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpointsList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpointsList_ManifestParameters(props *KubeEndpointsListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEndpointsList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEndpointsListParameters(scope constructs.Construct, id *string, props *KubeEndpointsListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEndpointsList__no_checks.go b/pods/imports/k8s/KubeEndpointsList__no_checks.go deleted file mode 100644 index 235610133..000000000 --- a/pods/imports/k8s/KubeEndpointsList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEndpointsList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEndpointsList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEndpointsList_ManifestParameters(props *KubeEndpointsListProps) error { - return nil -} - -func validateKubeEndpointsList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEndpointsListParameters(scope constructs.Construct, id *string, props *KubeEndpointsListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEndpointsProps.go b/pods/imports/k8s/KubeEndpointsProps.go deleted file mode 100644 index a2293709d..000000000 --- a/pods/imports/k8s/KubeEndpointsProps.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// Endpoints is a collection of endpoints that implement the actual service. Example:. -// -// Name: "mysvc", -// Subsets: [ -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// ]. -type KubeEndpointsProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // The set of all endpoints is the union of all subsets. - // - // Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service. - Subsets *[]*EndpointSubset `field:"optional" json:"subsets" yaml:"subsets"` -} - diff --git a/pods/imports/k8s/KubeEndpoints__checks.go b/pods/imports/k8s/KubeEndpoints__checks.go deleted file mode 100644 index e6a406e70..000000000 --- a/pods/imports/k8s/KubeEndpoints__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEndpoints_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpoints_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEndpoints_ManifestParameters(props *KubeEndpointsProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEndpoints_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEndpointsParameters(scope constructs.Construct, id *string, props *KubeEndpointsProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEndpoints__no_checks.go b/pods/imports/k8s/KubeEndpoints__no_checks.go deleted file mode 100644 index 3ec5b855c..000000000 --- a/pods/imports/k8s/KubeEndpoints__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEndpoints_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEndpoints_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEndpoints_ManifestParameters(props *KubeEndpointsProps) error { - return nil -} - -func validateKubeEndpoints_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEndpointsParameters(scope constructs.Construct, id *string, props *KubeEndpointsProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEvent.go b/pods/imports/k8s/KubeEvent.go deleted file mode 100644 index 86444f013..000000000 --- a/pods/imports/k8s/KubeEvent.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Event is a report of an event somewhere in the cluster. -// -// It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data. -type KubeEvent interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEvent -type jsiiProxy_KubeEvent struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEvent) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEvent) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEvent) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEvent) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEvent) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEvent) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEvent) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.events.v1.Event" API object. -func NewKubeEvent(scope constructs.Construct, id *string, props *KubeEventProps) KubeEvent { - _init_.Initialize() - - if err := validateNewKubeEventParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEvent{} - - _jsii_.Create( - "k8s.KubeEvent", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.events.v1.Event" API object. -func NewKubeEvent_Override(k KubeEvent, scope constructs.Construct, id *string, props *KubeEventProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEvent", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEvent_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEvent_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEvent", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEvent_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEvent_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEvent", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.events.v1.Event". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEvent_Manifest(props *KubeEventProps) interface{} { - _init_.Initialize() - - if err := validateKubeEvent_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEvent", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEvent_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEvent_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEvent", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEvent_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEvent", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEvent) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEvent) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEvent) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEvent) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEventList.go b/pods/imports/k8s/KubeEventList.go deleted file mode 100644 index bfc88bc9c..000000000 --- a/pods/imports/k8s/KubeEventList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// EventList is a list of Event objects. -type KubeEventList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEventList -type jsiiProxy_KubeEventList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEventList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEventList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEventList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEventList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEventList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEventList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEventList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.events.v1.EventList" API object. -func NewKubeEventList(scope constructs.Construct, id *string, props *KubeEventListProps) KubeEventList { - _init_.Initialize() - - if err := validateNewKubeEventListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEventList{} - - _jsii_.Create( - "k8s.KubeEventList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.events.v1.EventList" API object. -func NewKubeEventList_Override(k KubeEventList, scope constructs.Construct, id *string, props *KubeEventListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEventList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEventList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEventList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEventList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEventList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEventList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEventList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.events.v1.EventList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEventList_Manifest(props *KubeEventListProps) interface{} { - _init_.Initialize() - - if err := validateKubeEventList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEventList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEventList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEventList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEventList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEventList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEventList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEventList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEventList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEventList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEventList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEventListProps.go b/pods/imports/k8s/KubeEventListProps.go deleted file mode 100644 index baa1cb624..000000000 --- a/pods/imports/k8s/KubeEventListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// EventList is a list of Event objects. -type KubeEventListProps struct { - // items is a list of schema objects. - Items *[]*KubeEventProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeEventList__checks.go b/pods/imports/k8s/KubeEventList__checks.go deleted file mode 100644 index bd9054168..000000000 --- a/pods/imports/k8s/KubeEventList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEventList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEventList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEventList_ManifestParameters(props *KubeEventListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEventList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEventListParameters(scope constructs.Construct, id *string, props *KubeEventListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEventList__no_checks.go b/pods/imports/k8s/KubeEventList__no_checks.go deleted file mode 100644 index 45303d4ab..000000000 --- a/pods/imports/k8s/KubeEventList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEventList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEventList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEventList_ManifestParameters(props *KubeEventListProps) error { - return nil -} - -func validateKubeEventList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEventListParameters(scope constructs.Construct, id *string, props *KubeEventListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEventProps.go b/pods/imports/k8s/KubeEventProps.go deleted file mode 100644 index b24dda95d..000000000 --- a/pods/imports/k8s/KubeEventProps.go +++ /dev/null @@ -1,58 +0,0 @@ -package k8s - -import ( - "time" -) - -// Event is a report of an event somewhere in the cluster. -// -// It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time. Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason. Events should be treated as informative, best-effort, supplemental data. -type KubeEventProps struct { - // eventTime is the time when this Event was first observed. - // - // It is required. - EventTime *time.Time `field:"required" json:"eventTime" yaml:"eventTime"` - // action is what action was taken/failed regarding to the regarding object. - // - // It is machine-readable. This field cannot be empty for new Events and it can have at most 128 characters. - Action *string `field:"optional" json:"action" yaml:"action"` - // deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type. - DeprecatedCount *float64 `field:"optional" json:"deprecatedCount" yaml:"deprecatedCount"` - // deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. - DeprecatedFirstTimestamp *time.Time `field:"optional" json:"deprecatedFirstTimestamp" yaml:"deprecatedFirstTimestamp"` - // deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. - DeprecatedLastTimestamp *time.Time `field:"optional" json:"deprecatedLastTimestamp" yaml:"deprecatedLastTimestamp"` - // deprecatedSource is the deprecated field assuring backward compatibility with core.v1 Event type. - DeprecatedSource *EventSource `field:"optional" json:"deprecatedSource" yaml:"deprecatedSource"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // note is a human-readable description of the status of this operation. - // - // Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB. - Note *string `field:"optional" json:"note" yaml:"note"` - // reason is why the action was taken. - // - // It is human-readable. This field cannot be empty for new Events and it can have at most 128 characters. - Reason *string `field:"optional" json:"reason" yaml:"reason"` - // regarding contains the object this Event is about. - // - // In most cases it's an Object reporting controller implements, e.g. ReplicaSetController implements ReplicaSets and this event is emitted because it acts on some changes in a ReplicaSet object. - Regarding *ObjectReference `field:"optional" json:"regarding" yaml:"regarding"` - // related is the optional secondary object for more complex actions. - // - // E.g. when regarding object triggers a creation or deletion of related object. - Related *ObjectReference `field:"optional" json:"related" yaml:"related"` - // reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events. - ReportingController *string `field:"optional" json:"reportingController" yaml:"reportingController"` - // reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters. - ReportingInstance *string `field:"optional" json:"reportingInstance" yaml:"reportingInstance"` - // series is data about the Event series this event represents or nil if it's a singleton Event. - Series *EventSeries `field:"optional" json:"series" yaml:"series"` - // type is the type of this event (Normal, Warning), new types could be added in the future. - // - // It is machine-readable. This field cannot be empty for new Events. - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/KubeEvent__checks.go b/pods/imports/k8s/KubeEvent__checks.go deleted file mode 100644 index 877020e88..000000000 --- a/pods/imports/k8s/KubeEvent__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEvent_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEvent_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEvent_ManifestParameters(props *KubeEventProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEvent_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEventParameters(scope constructs.Construct, id *string, props *KubeEventProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEvent__no_checks.go b/pods/imports/k8s/KubeEvent__no_checks.go deleted file mode 100644 index 1276eb107..000000000 --- a/pods/imports/k8s/KubeEvent__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEvent_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEvent_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEvent_ManifestParameters(props *KubeEventProps) error { - return nil -} - -func validateKubeEvent_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEventParameters(scope constructs.Construct, id *string, props *KubeEventProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeEviction.go b/pods/imports/k8s/KubeEviction.go deleted file mode 100644 index 90897879f..000000000 --- a/pods/imports/k8s/KubeEviction.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Eviction evicts a pod from its node subject to certain policies and safety constraints. -// -// This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions. -type KubeEviction interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeEviction -type jsiiProxy_KubeEviction struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeEviction) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEviction) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEviction) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEviction) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEviction) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEviction) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeEviction) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.policy.v1.Eviction" API object. -func NewKubeEviction(scope constructs.Construct, id *string, props *KubeEvictionProps) KubeEviction { - _init_.Initialize() - - if err := validateNewKubeEvictionParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeEviction{} - - _jsii_.Create( - "k8s.KubeEviction", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.policy.v1.Eviction" API object. -func NewKubeEviction_Override(k KubeEviction, scope constructs.Construct, id *string, props *KubeEvictionProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeEviction", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeEviction_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEviction_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEviction", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeEviction_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeEviction_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeEviction", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.policy.v1.Eviction". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeEviction_Manifest(props *KubeEvictionProps) interface{} { - _init_.Initialize() - - if err := validateKubeEviction_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeEviction", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeEviction_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeEviction_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeEviction", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeEviction_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeEviction", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeEviction) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeEviction) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeEviction) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeEviction) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeEvictionProps.go b/pods/imports/k8s/KubeEvictionProps.go deleted file mode 100644 index e2f62c99f..000000000 --- a/pods/imports/k8s/KubeEvictionProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Eviction evicts a pod from its node subject to certain policies and safety constraints. -// -// This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions. -type KubeEvictionProps struct { - // DeleteOptions may be provided. - DeleteOptions *DeleteOptions `field:"optional" json:"deleteOptions" yaml:"deleteOptions"` - // ObjectMeta describes the pod that is being evicted. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeEviction__checks.go b/pods/imports/k8s/KubeEviction__checks.go deleted file mode 100644 index b5f1638df..000000000 --- a/pods/imports/k8s/KubeEviction__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeEviction_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeEviction_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeEviction_ManifestParameters(props *KubeEvictionProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeEviction_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeEvictionParameters(scope constructs.Construct, id *string, props *KubeEvictionProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeEviction__no_checks.go b/pods/imports/k8s/KubeEviction__no_checks.go deleted file mode 100644 index 26a94dcd3..000000000 --- a/pods/imports/k8s/KubeEviction__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeEviction_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeEviction_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeEviction_ManifestParameters(props *KubeEvictionProps) error { - return nil -} - -func validateKubeEviction_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeEvictionParameters(scope constructs.Construct, id *string, props *KubeEvictionProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchema.go b/pods/imports/k8s/KubeFlowSchema.go deleted file mode 100644 index c1462edac..000000000 --- a/pods/imports/k8s/KubeFlowSchema.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// FlowSchema defines the schema of a group of flows. -// -// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". -type KubeFlowSchema interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeFlowSchema -type jsiiProxy_KubeFlowSchema struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeFlowSchema) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchema) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchema) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchema) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchema) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchema) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchema) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1.FlowSchema" API object. -func NewKubeFlowSchema(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) KubeFlowSchema { - _init_.Initialize() - - if err := validateNewKubeFlowSchemaParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeFlowSchema{} - - _jsii_.Create( - "k8s.KubeFlowSchema", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1.FlowSchema" API object. -func NewKubeFlowSchema_Override(k KubeFlowSchema, scope constructs.Construct, id *string, props *KubeFlowSchemaProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeFlowSchema", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeFlowSchema_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchema_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchema", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeFlowSchema_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchema_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchema", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.FlowSchema". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeFlowSchema_Manifest(props *KubeFlowSchemaProps) interface{} { - _init_.Initialize() - - if err := validateKubeFlowSchema_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchema", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeFlowSchema_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeFlowSchema_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchema", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeFlowSchema_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeFlowSchema", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeFlowSchema) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchema) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchema) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeFlowSchema) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeFlowSchemaList.go b/pods/imports/k8s/KubeFlowSchemaList.go deleted file mode 100644 index f637c7e7e..000000000 --- a/pods/imports/k8s/KubeFlowSchemaList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// FlowSchemaList is a list of FlowSchema objects. -type KubeFlowSchemaList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeFlowSchemaList -type jsiiProxy_KubeFlowSchemaList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeFlowSchemaList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1.FlowSchemaList" API object. -func NewKubeFlowSchemaList(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) KubeFlowSchemaList { - _init_.Initialize() - - if err := validateNewKubeFlowSchemaListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeFlowSchemaList{} - - _jsii_.Create( - "k8s.KubeFlowSchemaList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1.FlowSchemaList" API object. -func NewKubeFlowSchemaList_Override(k KubeFlowSchemaList, scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeFlowSchemaList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeFlowSchemaList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchemaList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeFlowSchemaList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchemaList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.FlowSchemaList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeFlowSchemaList_Manifest(props *KubeFlowSchemaListProps) interface{} { - _init_.Initialize() - - if err := validateKubeFlowSchemaList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeFlowSchemaList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeFlowSchemaList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeFlowSchemaList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeFlowSchemaList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeFlowSchemaList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchemaList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchemaList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeFlowSchemaList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeFlowSchemaListProps.go b/pods/imports/k8s/KubeFlowSchemaListProps.go deleted file mode 100644 index 2ba5f1b3f..000000000 --- a/pods/imports/k8s/KubeFlowSchemaListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// FlowSchemaList is a list of FlowSchema objects. -type KubeFlowSchemaListProps struct { - // `items` is a list of FlowSchemas. - Items *[]*KubeFlowSchemaProps `field:"required" json:"items" yaml:"items"` - // `metadata` is the standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go deleted file mode 100644 index 172db7d8a..000000000 --- a/pods/imports/k8s/KubeFlowSchemaListV1Beta3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// FlowSchemaList is a list of FlowSchema objects. -type KubeFlowSchemaListV1Beta3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeFlowSchemaListV1Beta3 -type jsiiProxy_KubeFlowSchemaListV1Beta3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaListV1Beta3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList" API object. -func NewKubeFlowSchemaListV1Beta3(scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) KubeFlowSchemaListV1Beta3 { - _init_.Initialize() - - if err := validateNewKubeFlowSchemaListV1Beta3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeFlowSchemaListV1Beta3{} - - _jsii_.Create( - "k8s.KubeFlowSchemaListV1Beta3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList" API object. -func NewKubeFlowSchemaListV1Beta3_Override(k KubeFlowSchemaListV1Beta3, scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeFlowSchemaListV1Beta3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeFlowSchemaListV1Beta3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchemaListV1Beta3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaListV1Beta3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeFlowSchemaListV1Beta3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchemaListV1Beta3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaListV1Beta3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeFlowSchemaListV1Beta3_Manifest(props *KubeFlowSchemaListV1Beta3Props) interface{} { - _init_.Initialize() - - if err := validateKubeFlowSchemaListV1Beta3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaListV1Beta3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeFlowSchemaListV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeFlowSchemaListV1Beta3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaListV1Beta3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeFlowSchemaListV1Beta3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeFlowSchemaListV1Beta3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeFlowSchemaListV1Beta3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go deleted file mode 100644 index e90a338f8..000000000 --- a/pods/imports/k8s/KubeFlowSchemaListV1Beta3Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// FlowSchemaList is a list of FlowSchema objects. -type KubeFlowSchemaListV1Beta3Props struct { - // `items` is a list of FlowSchemas. - Items *[]*KubeFlowSchemaV1Beta3Props `field:"required" json:"items" yaml:"items"` - // `metadata` is the standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go deleted file mode 100644 index d7aa07711..000000000 --- a/pods/imports/k8s/KubeFlowSchemaListV1Beta3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeFlowSchemaListV1Beta3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchemaListV1Beta3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchemaListV1Beta3_ManifestParameters(props *KubeFlowSchemaListV1Beta3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeFlowSchemaListV1Beta3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeFlowSchemaListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go b/pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go deleted file mode 100644 index a5cb3d2c1..000000000 --- a/pods/imports/k8s/KubeFlowSchemaListV1Beta3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeFlowSchemaListV1Beta3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeFlowSchemaListV1Beta3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeFlowSchemaListV1Beta3_ManifestParameters(props *KubeFlowSchemaListV1Beta3Props) error { - return nil -} - -func validateKubeFlowSchemaListV1Beta3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeFlowSchemaListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListV1Beta3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchemaList__checks.go b/pods/imports/k8s/KubeFlowSchemaList__checks.go deleted file mode 100644 index ae048e0ab..000000000 --- a/pods/imports/k8s/KubeFlowSchemaList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeFlowSchemaList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchemaList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchemaList_ManifestParameters(props *KubeFlowSchemaListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeFlowSchemaList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeFlowSchemaListParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchemaList__no_checks.go b/pods/imports/k8s/KubeFlowSchemaList__no_checks.go deleted file mode 100644 index e5e257814..000000000 --- a/pods/imports/k8s/KubeFlowSchemaList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeFlowSchemaList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeFlowSchemaList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeFlowSchemaList_ManifestParameters(props *KubeFlowSchemaListProps) error { - return nil -} - -func validateKubeFlowSchemaList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeFlowSchemaListParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchemaProps.go b/pods/imports/k8s/KubeFlowSchemaProps.go deleted file mode 100644 index c5038c2ec..000000000 --- a/pods/imports/k8s/KubeFlowSchemaProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// FlowSchema defines the schema of a group of flows. -// -// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". -type KubeFlowSchemaProps struct { - // `metadata` is the standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // `spec` is the specification of the desired behavior of a FlowSchema. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *FlowSchemaSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3.go deleted file mode 100644 index d7ec71941..000000000 --- a/pods/imports/k8s/KubeFlowSchemaV1Beta3.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// FlowSchema defines the schema of a group of flows. -// -// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". -type KubeFlowSchemaV1Beta3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeFlowSchemaV1Beta3 -type jsiiProxy_KubeFlowSchemaV1Beta3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeFlowSchemaV1Beta3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchema" API object. -func NewKubeFlowSchemaV1Beta3(scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) KubeFlowSchemaV1Beta3 { - _init_.Initialize() - - if err := validateNewKubeFlowSchemaV1Beta3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeFlowSchemaV1Beta3{} - - _jsii_.Create( - "k8s.KubeFlowSchemaV1Beta3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1beta3.FlowSchema" API object. -func NewKubeFlowSchemaV1Beta3_Override(k KubeFlowSchemaV1Beta3, scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeFlowSchemaV1Beta3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeFlowSchemaV1Beta3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchemaV1Beta3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaV1Beta3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeFlowSchemaV1Beta3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeFlowSchemaV1Beta3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaV1Beta3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.FlowSchema". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeFlowSchemaV1Beta3_Manifest(props *KubeFlowSchemaV1Beta3Props) interface{} { - _init_.Initialize() - - if err := validateKubeFlowSchemaV1Beta3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaV1Beta3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeFlowSchemaV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeFlowSchemaV1Beta3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeFlowSchemaV1Beta3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeFlowSchemaV1Beta3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeFlowSchemaV1Beta3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeFlowSchemaV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchemaV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeFlowSchemaV1Beta3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeFlowSchemaV1Beta3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go deleted file mode 100644 index e9faf3a08..000000000 --- a/pods/imports/k8s/KubeFlowSchemaV1Beta3Props.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// FlowSchema defines the schema of a group of flows. -// -// Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". -type KubeFlowSchemaV1Beta3Props struct { - // `metadata` is the standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // `spec` is the specification of the desired behavior of a FlowSchema. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *FlowSchemaSpecV1Beta3 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go deleted file mode 100644 index c2a34d2b0..000000000 --- a/pods/imports/k8s/KubeFlowSchemaV1Beta3__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeFlowSchemaV1Beta3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchemaV1Beta3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchemaV1Beta3_ManifestParameters(props *KubeFlowSchemaV1Beta3Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeFlowSchemaV1Beta3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeFlowSchemaV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go b/pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go deleted file mode 100644 index 362d7d49c..000000000 --- a/pods/imports/k8s/KubeFlowSchemaV1Beta3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeFlowSchemaV1Beta3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeFlowSchemaV1Beta3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeFlowSchemaV1Beta3_ManifestParameters(props *KubeFlowSchemaV1Beta3Props) error { - return nil -} - -func validateKubeFlowSchemaV1Beta3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeFlowSchemaV1Beta3Parameters(scope constructs.Construct, id *string, props *KubeFlowSchemaV1Beta3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchema__checks.go b/pods/imports/k8s/KubeFlowSchema__checks.go deleted file mode 100644 index 3fd62a2ca..000000000 --- a/pods/imports/k8s/KubeFlowSchema__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeFlowSchema_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchema_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeFlowSchema_ManifestParameters(props *KubeFlowSchemaProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeFlowSchema_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeFlowSchemaParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeFlowSchema__no_checks.go b/pods/imports/k8s/KubeFlowSchema__no_checks.go deleted file mode 100644 index 0322e93b4..000000000 --- a/pods/imports/k8s/KubeFlowSchema__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeFlowSchema_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeFlowSchema_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeFlowSchema_ManifestParameters(props *KubeFlowSchemaProps) error { - return nil -} - -func validateKubeFlowSchema_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeFlowSchemaParameters(scope constructs.Construct, id *string, props *KubeFlowSchemaProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler.go deleted file mode 100644 index 924a8ada5..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// configuration of a horizontal pod autoscaler. -type KubeHorizontalPodAutoscaler interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeHorizontalPodAutoscaler -type jsiiProxy_KubeHorizontalPodAutoscaler struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscaler) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" API object. -func NewKubeHorizontalPodAutoscaler(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) KubeHorizontalPodAutoscaler { - _init_.Initialize() - - if err := validateNewKubeHorizontalPodAutoscalerParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeHorizontalPodAutoscaler{} - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscaler", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" API object. -func NewKubeHorizontalPodAutoscaler_Override(k KubeHorizontalPodAutoscaler, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscaler", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeHorizontalPodAutoscaler_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscaler_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscaler", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeHorizontalPodAutoscaler_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscaler_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscaler", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeHorizontalPodAutoscaler_Manifest(props *KubeHorizontalPodAutoscalerProps) interface{} { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscaler_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscaler", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeHorizontalPodAutoscaler_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscaler_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscaler", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeHorizontalPodAutoscaler_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeHorizontalPodAutoscaler", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscaler) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscaler) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscaler) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscaler) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go deleted file mode 100644 index da3faec89..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// list of horizontal pod autoscaler objects. -type KubeHorizontalPodAutoscalerList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeHorizontalPodAutoscalerList -type jsiiProxy_KubeHorizontalPodAutoscalerList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" API object. -func NewKubeHorizontalPodAutoscalerList(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) KubeHorizontalPodAutoscalerList { - _init_.Initialize() - - if err := validateNewKubeHorizontalPodAutoscalerListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeHorizontalPodAutoscalerList{} - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscalerList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" API object. -func NewKubeHorizontalPodAutoscalerList_Override(k KubeHorizontalPodAutoscalerList, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscalerList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeHorizontalPodAutoscalerList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeHorizontalPodAutoscalerList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeHorizontalPodAutoscalerList_Manifest(props *KubeHorizontalPodAutoscalerListProps) interface{} { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeHorizontalPodAutoscalerList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeHorizontalPodAutoscalerList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeHorizontalPodAutoscalerList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go deleted file mode 100644 index dd1d180b7..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// list of horizontal pod autoscaler objects. -type KubeHorizontalPodAutoscalerListProps struct { - // items is the list of horizontal pod autoscaler objects. - Items *[]*KubeHorizontalPodAutoscalerProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go deleted file mode 100644 index 15b48f310..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. -type KubeHorizontalPodAutoscalerListV2 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeHorizontalPodAutoscalerListV2 -type jsiiProxy_KubeHorizontalPodAutoscalerListV2 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerListV2) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" API object. -func NewKubeHorizontalPodAutoscalerListV2(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) KubeHorizontalPodAutoscalerListV2 { - _init_.Initialize() - - if err := validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeHorizontalPodAutoscalerListV2{} - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscalerListV2", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" API object. -func NewKubeHorizontalPodAutoscalerListV2_Override(k KubeHorizontalPodAutoscalerListV2, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscalerListV2", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeHorizontalPodAutoscalerListV2_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerListV2_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerListV2", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeHorizontalPodAutoscalerListV2_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerListV2_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerListV2", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeHorizontalPodAutoscalerListV2_Manifest(props *KubeHorizontalPodAutoscalerListV2Props) interface{} { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerListV2_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerListV2", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeHorizontalPodAutoscalerListV2_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerListV2_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerListV2", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeHorizontalPodAutoscalerListV2_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeHorizontalPodAutoscalerListV2", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerListV2) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go deleted file mode 100644 index d3503431d..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. -type KubeHorizontalPodAutoscalerListV2Props struct { - // items is the list of horizontal pod autoscaler objects. - Items *[]*KubeHorizontalPodAutoscalerV2Props `field:"required" json:"items" yaml:"items"` - // metadata is the standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go deleted file mode 100644 index 4de48b106..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeHorizontalPodAutoscalerListV2_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerListV2_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerListV2_ManifestParameters(props *KubeHorizontalPodAutoscalerListV2Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerListV2_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go deleted file mode 100644 index 22323595a..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerListV2__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeHorizontalPodAutoscalerListV2_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerListV2_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerListV2_ManifestParameters(props *KubeHorizontalPodAutoscalerListV2Props) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerListV2_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeHorizontalPodAutoscalerListV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListV2Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go deleted file mode 100644 index 2228da986..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeHorizontalPodAutoscalerList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerList_ManifestParameters(props *KubeHorizontalPodAutoscalerListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeHorizontalPodAutoscalerListParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go deleted file mode 100644 index c1e44c9d1..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeHorizontalPodAutoscalerList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerList_ManifestParameters(props *KubeHorizontalPodAutoscalerListProps) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeHorizontalPodAutoscalerListParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go deleted file mode 100644 index 6a2d79afc..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// configuration of a horizontal pod autoscaler. -type KubeHorizontalPodAutoscalerProps struct { - // Standard object metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec defines the behaviour of autoscaler. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. - Spec *HorizontalPodAutoscalerSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go deleted file mode 100644 index 6a5c36dec..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified. -type KubeHorizontalPodAutoscalerV2 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeHorizontalPodAutoscalerV2 -type jsiiProxy_KubeHorizontalPodAutoscalerV2 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeHorizontalPodAutoscalerV2) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" API object. -func NewKubeHorizontalPodAutoscalerV2(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) KubeHorizontalPodAutoscalerV2 { - _init_.Initialize() - - if err := validateNewKubeHorizontalPodAutoscalerV2Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeHorizontalPodAutoscalerV2{} - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscalerV2", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" API object. -func NewKubeHorizontalPodAutoscalerV2_Override(k KubeHorizontalPodAutoscalerV2, scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeHorizontalPodAutoscalerV2", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeHorizontalPodAutoscalerV2_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerV2_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerV2", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeHorizontalPodAutoscalerV2_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerV2_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerV2", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeHorizontalPodAutoscalerV2_Manifest(props *KubeHorizontalPodAutoscalerV2Props) interface{} { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerV2_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerV2", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeHorizontalPodAutoscalerV2_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeHorizontalPodAutoscalerV2_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeHorizontalPodAutoscalerV2", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeHorizontalPodAutoscalerV2_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeHorizontalPodAutoscalerV2", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeHorizontalPodAutoscalerV2) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go deleted file mode 100644 index 42c3f4a45..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified. -type KubeHorizontalPodAutoscalerV2Props struct { - // metadata is the standard object metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec is the specification for the behaviour of the autoscaler. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. - Spec *HorizontalPodAutoscalerSpecV2 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go deleted file mode 100644 index 3f9158f9b..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeHorizontalPodAutoscalerV2_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerV2_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerV2_ManifestParameters(props *KubeHorizontalPodAutoscalerV2Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeHorizontalPodAutoscalerV2_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeHorizontalPodAutoscalerV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go deleted file mode 100644 index 752890c21..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscalerV2__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeHorizontalPodAutoscalerV2_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerV2_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerV2_ManifestParameters(props *KubeHorizontalPodAutoscalerV2Props) error { - return nil -} - -func validateKubeHorizontalPodAutoscalerV2_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeHorizontalPodAutoscalerV2Parameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerV2Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go deleted file mode 100644 index 2fc45c67b..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeHorizontalPodAutoscaler_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscaler_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeHorizontalPodAutoscaler_ManifestParameters(props *KubeHorizontalPodAutoscalerProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeHorizontalPodAutoscaler_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeHorizontalPodAutoscalerParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go b/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go deleted file mode 100644 index 851a362e0..000000000 --- a/pods/imports/k8s/KubeHorizontalPodAutoscaler__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeHorizontalPodAutoscaler_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscaler_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeHorizontalPodAutoscaler_ManifestParameters(props *KubeHorizontalPodAutoscalerProps) error { - return nil -} - -func validateKubeHorizontalPodAutoscaler_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeHorizontalPodAutoscalerParameters(scope constructs.Construct, id *string, props *KubeHorizontalPodAutoscalerProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeIngress.go b/pods/imports/k8s/KubeIngress.go deleted file mode 100644 index ef24c6cb0..000000000 --- a/pods/imports/k8s/KubeIngress.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. -// -// An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. -type KubeIngress interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeIngress -type jsiiProxy_KubeIngress struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeIngress) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngress) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngress) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngress) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngress) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngress) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngress) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1.Ingress" API object. -func NewKubeIngress(scope constructs.Construct, id *string, props *KubeIngressProps) KubeIngress { - _init_.Initialize() - - if err := validateNewKubeIngressParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeIngress{} - - _jsii_.Create( - "k8s.KubeIngress", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1.Ingress" API object. -func NewKubeIngress_Override(k KubeIngress, scope constructs.Construct, id *string, props *KubeIngressProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeIngress", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeIngress_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngress_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngress", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeIngress_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngress_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngress", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.Ingress". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeIngress_Manifest(props *KubeIngressProps) interface{} { - _init_.Initialize() - - if err := validateKubeIngress_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeIngress", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeIngress_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeIngress_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeIngress", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeIngress_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeIngress", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeIngress) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeIngress) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeIngress) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeIngress) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeIngressClass.go b/pods/imports/k8s/KubeIngressClass.go deleted file mode 100644 index 639760b32..000000000 --- a/pods/imports/k8s/KubeIngressClass.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// IngressClass represents the class of the Ingress, referenced by the Ingress Spec. -// -// The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class. -type KubeIngressClass interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeIngressClass -type jsiiProxy_KubeIngressClass struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeIngressClass) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClass) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClass) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClass) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClass) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClass) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClass) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1.IngressClass" API object. -func NewKubeIngressClass(scope constructs.Construct, id *string, props *KubeIngressClassProps) KubeIngressClass { - _init_.Initialize() - - if err := validateNewKubeIngressClassParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeIngressClass{} - - _jsii_.Create( - "k8s.KubeIngressClass", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1.IngressClass" API object. -func NewKubeIngressClass_Override(k KubeIngressClass, scope constructs.Construct, id *string, props *KubeIngressClassProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeIngressClass", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeIngressClass_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngressClass_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngressClass", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeIngressClass_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngressClass_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngressClass", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeIngressClass_Manifest(props *KubeIngressClassProps) interface{} { - _init_.Initialize() - - if err := validateKubeIngressClass_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeIngressClass", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeIngressClass_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeIngressClass_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeIngressClass", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeIngressClass_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeIngressClass", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeIngressClass) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeIngressClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeIngressClass) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeIngressClass) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeIngressClassList.go b/pods/imports/k8s/KubeIngressClassList.go deleted file mode 100644 index f358de437..000000000 --- a/pods/imports/k8s/KubeIngressClassList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// IngressClassList is a collection of IngressClasses. -type KubeIngressClassList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeIngressClassList -type jsiiProxy_KubeIngressClassList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeIngressClassList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClassList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClassList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClassList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClassList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressClassList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1.IngressClassList" API object. -func NewKubeIngressClassList(scope constructs.Construct, id *string, props *KubeIngressClassListProps) KubeIngressClassList { - _init_.Initialize() - - if err := validateNewKubeIngressClassListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeIngressClassList{} - - _jsii_.Create( - "k8s.KubeIngressClassList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1.IngressClassList" API object. -func NewKubeIngressClassList_Override(k KubeIngressClassList, scope constructs.Construct, id *string, props *KubeIngressClassListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeIngressClassList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeIngressClassList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngressClassList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngressClassList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeIngressClassList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngressClassList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngressClassList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeIngressClassList_Manifest(props *KubeIngressClassListProps) interface{} { - _init_.Initialize() - - if err := validateKubeIngressClassList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeIngressClassList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeIngressClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeIngressClassList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeIngressClassList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeIngressClassList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeIngressClassList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeIngressClassList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeIngressClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeIngressClassList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeIngressClassList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeIngressClassListProps.go b/pods/imports/k8s/KubeIngressClassListProps.go deleted file mode 100644 index 091651504..000000000 --- a/pods/imports/k8s/KubeIngressClassListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// IngressClassList is a collection of IngressClasses. -type KubeIngressClassListProps struct { - // items is the list of IngressClasses. - Items *[]*KubeIngressClassProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeIngressClassList__checks.go b/pods/imports/k8s/KubeIngressClassList__checks.go deleted file mode 100644 index 6d69425c8..000000000 --- a/pods/imports/k8s/KubeIngressClassList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeIngressClassList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeIngressClassList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeIngressClassList_ManifestParameters(props *KubeIngressClassListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeIngressClassList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeIngressClassListParameters(scope constructs.Construct, id *string, props *KubeIngressClassListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeIngressClassList__no_checks.go b/pods/imports/k8s/KubeIngressClassList__no_checks.go deleted file mode 100644 index a8a73d776..000000000 --- a/pods/imports/k8s/KubeIngressClassList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeIngressClassList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeIngressClassList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeIngressClassList_ManifestParameters(props *KubeIngressClassListProps) error { - return nil -} - -func validateKubeIngressClassList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeIngressClassListParameters(scope constructs.Construct, id *string, props *KubeIngressClassListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeIngressClassProps.go b/pods/imports/k8s/KubeIngressClassProps.go deleted file mode 100644 index e9f568b83..000000000 --- a/pods/imports/k8s/KubeIngressClassProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// IngressClass represents the class of the Ingress, referenced by the Ingress Spec. -// -// The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class. -type KubeIngressClassProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec is the desired state of the IngressClass. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *IngressClassSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeIngressClass__checks.go b/pods/imports/k8s/KubeIngressClass__checks.go deleted file mode 100644 index ddd1acda4..000000000 --- a/pods/imports/k8s/KubeIngressClass__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeIngressClass_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeIngressClass_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeIngressClass_ManifestParameters(props *KubeIngressClassProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeIngressClass_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeIngressClassParameters(scope constructs.Construct, id *string, props *KubeIngressClassProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeIngressClass__no_checks.go b/pods/imports/k8s/KubeIngressClass__no_checks.go deleted file mode 100644 index 35717b768..000000000 --- a/pods/imports/k8s/KubeIngressClass__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeIngressClass_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeIngressClass_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeIngressClass_ManifestParameters(props *KubeIngressClassProps) error { - return nil -} - -func validateKubeIngressClass_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeIngressClassParameters(scope constructs.Construct, id *string, props *KubeIngressClassProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeIngressList.go b/pods/imports/k8s/KubeIngressList.go deleted file mode 100644 index 0056b5145..000000000 --- a/pods/imports/k8s/KubeIngressList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// IngressList is a collection of Ingress. -type KubeIngressList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeIngressList -type jsiiProxy_KubeIngressList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeIngressList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIngressList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1.IngressList" API object. -func NewKubeIngressList(scope constructs.Construct, id *string, props *KubeIngressListProps) KubeIngressList { - _init_.Initialize() - - if err := validateNewKubeIngressListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeIngressList{} - - _jsii_.Create( - "k8s.KubeIngressList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1.IngressList" API object. -func NewKubeIngressList_Override(k KubeIngressList, scope constructs.Construct, id *string, props *KubeIngressListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeIngressList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeIngressList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngressList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngressList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeIngressList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIngressList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIngressList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeIngressList_Manifest(props *KubeIngressListProps) interface{} { - _init_.Initialize() - - if err := validateKubeIngressList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeIngressList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeIngressList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeIngressList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeIngressList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeIngressList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeIngressList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeIngressList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeIngressList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeIngressList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeIngressList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeIngressListProps.go b/pods/imports/k8s/KubeIngressListProps.go deleted file mode 100644 index cea2dafab..000000000 --- a/pods/imports/k8s/KubeIngressListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// IngressList is a collection of Ingress. -type KubeIngressListProps struct { - // items is the list of Ingress. - Items *[]*KubeIngressProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeIngressList__checks.go b/pods/imports/k8s/KubeIngressList__checks.go deleted file mode 100644 index b18e6ad51..000000000 --- a/pods/imports/k8s/KubeIngressList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeIngressList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeIngressList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeIngressList_ManifestParameters(props *KubeIngressListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeIngressList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeIngressListParameters(scope constructs.Construct, id *string, props *KubeIngressListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeIngressList__no_checks.go b/pods/imports/k8s/KubeIngressList__no_checks.go deleted file mode 100644 index e49a7e40f..000000000 --- a/pods/imports/k8s/KubeIngressList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeIngressList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeIngressList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeIngressList_ManifestParameters(props *KubeIngressListProps) error { - return nil -} - -func validateKubeIngressList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeIngressListParameters(scope constructs.Construct, id *string, props *KubeIngressListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeIngressProps.go b/pods/imports/k8s/KubeIngressProps.go deleted file mode 100644 index 6b7244129..000000000 --- a/pods/imports/k8s/KubeIngressProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. -// -// An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. -type KubeIngressProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec is the desired state of the Ingress. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *IngressSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeIngress__checks.go b/pods/imports/k8s/KubeIngress__checks.go deleted file mode 100644 index c17d269f4..000000000 --- a/pods/imports/k8s/KubeIngress__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeIngress_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeIngress_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeIngress_ManifestParameters(props *KubeIngressProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeIngress_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeIngressParameters(scope constructs.Construct, id *string, props *KubeIngressProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeIngress__no_checks.go b/pods/imports/k8s/KubeIngress__no_checks.go deleted file mode 100644 index fe379efb1..000000000 --- a/pods/imports/k8s/KubeIngress__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeIngress_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeIngress_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeIngress_ManifestParameters(props *KubeIngressProps) error { - return nil -} - -func validateKubeIngress_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeIngressParameters(scope constructs.Construct, id *string, props *KubeIngressProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1.go b/pods/imports/k8s/KubeIpAddressListV1Beta1.go deleted file mode 100644 index 82fdd8101..000000000 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// IPAddressList contains a list of IPAddress. -type KubeIpAddressListV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeIpAddressListV1Beta1 -type jsiiProxy_KubeIpAddressListV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressListV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1beta1.IPAddressList" API object. -func NewKubeIpAddressListV1Beta1(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) KubeIpAddressListV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeIpAddressListV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeIpAddressListV1Beta1{} - - _jsii_.Create( - "k8s.KubeIpAddressListV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1beta1.IPAddressList" API object. -func NewKubeIpAddressListV1Beta1_Override(k KubeIpAddressListV1Beta1, scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeIpAddressListV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeIpAddressListV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIpAddressListV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressListV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeIpAddressListV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIpAddressListV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressListV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.IPAddressList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeIpAddressListV1Beta1_Manifest(props *KubeIpAddressListV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeIpAddressListV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressListV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeIpAddressListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeIpAddressListV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressListV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeIpAddressListV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeIpAddressListV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeIpAddressListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeIpAddressListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeIpAddressListV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeIpAddressListV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go b/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go deleted file mode 100644 index bd6cf69d7..000000000 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// IPAddressList contains a list of IPAddress. -type KubeIpAddressListV1Beta1Props struct { - // items is the list of IPAddresses. - Items *[]*KubeIpAddressV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go b/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go deleted file mode 100644 index 89ddfd325..000000000 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeIpAddressListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeIpAddressListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeIpAddressListV1Beta1_ManifestParameters(props *KubeIpAddressListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeIpAddressListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeIpAddressListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go b/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go deleted file mode 100644 index 433e42d73..000000000 --- a/pods/imports/k8s/KubeIpAddressListV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeIpAddressListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeIpAddressListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeIpAddressListV1Beta1_ManifestParameters(props *KubeIpAddressListV1Beta1Props) error { - return nil -} - -func validateKubeIpAddressListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeIpAddressListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressListV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1.go b/pods/imports/k8s/KubeIpAddressV1Beta1.go deleted file mode 100644 index 2eff93b29..000000000 --- a/pods/imports/k8s/KubeIpAddressV1Beta1.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// IPAddress represents a single IP of a single IP Family. -// -// The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 -type KubeIpAddressV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeIpAddressV1Beta1 -type jsiiProxy_KubeIpAddressV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeIpAddressV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1beta1.IPAddress" API object. -func NewKubeIpAddressV1Beta1(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) KubeIpAddressV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeIpAddressV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeIpAddressV1Beta1{} - - _jsii_.Create( - "k8s.KubeIpAddressV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1beta1.IPAddress" API object. -func NewKubeIpAddressV1Beta1_Override(k KubeIpAddressV1Beta1, scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeIpAddressV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeIpAddressV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIpAddressV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeIpAddressV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeIpAddressV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.IPAddress". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeIpAddressV1Beta1_Manifest(props *KubeIpAddressV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeIpAddressV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeIpAddressV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeIpAddressV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeIpAddressV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeIpAddressV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeIpAddressV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeIpAddressV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeIpAddressV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeIpAddressV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeIpAddressV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1Props.go b/pods/imports/k8s/KubeIpAddressV1Beta1Props.go deleted file mode 100644 index 637184e84..000000000 --- a/pods/imports/k8s/KubeIpAddressV1Beta1Props.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// IPAddress represents a single IP of a single IP Family. -// -// The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 -type KubeIpAddressV1Beta1Props struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec is the desired state of the IPAddress. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *IpAddressSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go b/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go deleted file mode 100644 index 04989f301..000000000 --- a/pods/imports/k8s/KubeIpAddressV1Beta1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeIpAddressV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeIpAddressV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeIpAddressV1Beta1_ManifestParameters(props *KubeIpAddressV1Beta1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeIpAddressV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeIpAddressV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go b/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go deleted file mode 100644 index b8880328b..000000000 --- a/pods/imports/k8s/KubeIpAddressV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeIpAddressV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeIpAddressV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeIpAddressV1Beta1_ManifestParameters(props *KubeIpAddressV1Beta1Props) error { - return nil -} - -func validateKubeIpAddressV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeIpAddressV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeIpAddressV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeJob.go b/pods/imports/k8s/KubeJob.go deleted file mode 100644 index e612447eb..000000000 --- a/pods/imports/k8s/KubeJob.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Job represents the configuration of a single job. -type KubeJob interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeJob -type jsiiProxy_KubeJob struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeJob) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJob) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJob) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJob) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJob) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJob) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJob) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.batch.v1.Job" API object. -func NewKubeJob(scope constructs.Construct, id *string, props *KubeJobProps) KubeJob { - _init_.Initialize() - - if err := validateNewKubeJobParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeJob{} - - _jsii_.Create( - "k8s.KubeJob", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.batch.v1.Job" API object. -func NewKubeJob_Override(k KubeJob, scope constructs.Construct, id *string, props *KubeJobProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeJob", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeJob_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeJob_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeJob", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeJob_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeJob_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeJob", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.Job". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeJob_Manifest(props *KubeJobProps) interface{} { - _init_.Initialize() - - if err := validateKubeJob_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeJob", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeJob_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeJob_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeJob", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeJob_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeJob", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeJob) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeJob) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeJob) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeJob) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeJobList.go b/pods/imports/k8s/KubeJobList.go deleted file mode 100644 index 768d48243..000000000 --- a/pods/imports/k8s/KubeJobList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// JobList is a collection of jobs. -type KubeJobList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeJobList -type jsiiProxy_KubeJobList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeJobList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJobList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJobList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJobList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJobList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJobList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeJobList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.batch.v1.JobList" API object. -func NewKubeJobList(scope constructs.Construct, id *string, props *KubeJobListProps) KubeJobList { - _init_.Initialize() - - if err := validateNewKubeJobListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeJobList{} - - _jsii_.Create( - "k8s.KubeJobList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.batch.v1.JobList" API object. -func NewKubeJobList_Override(k KubeJobList, scope constructs.Construct, id *string, props *KubeJobListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeJobList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeJobList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeJobList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeJobList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeJobList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeJobList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeJobList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.batch.v1.JobList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeJobList_Manifest(props *KubeJobListProps) interface{} { - _init_.Initialize() - - if err := validateKubeJobList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeJobList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeJobList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeJobList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeJobList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeJobList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeJobList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeJobList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeJobList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeJobList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeJobList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeJobListProps.go b/pods/imports/k8s/KubeJobListProps.go deleted file mode 100644 index c75fa6fe3..000000000 --- a/pods/imports/k8s/KubeJobListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// JobList is a collection of jobs. -type KubeJobListProps struct { - // items is the list of Jobs. - Items *[]*KubeJobProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeJobList__checks.go b/pods/imports/k8s/KubeJobList__checks.go deleted file mode 100644 index e082b07cf..000000000 --- a/pods/imports/k8s/KubeJobList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeJobList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeJobList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeJobList_ManifestParameters(props *KubeJobListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeJobList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeJobListParameters(scope constructs.Construct, id *string, props *KubeJobListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeJobList__no_checks.go b/pods/imports/k8s/KubeJobList__no_checks.go deleted file mode 100644 index 1c521c32c..000000000 --- a/pods/imports/k8s/KubeJobList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeJobList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeJobList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeJobList_ManifestParameters(props *KubeJobListProps) error { - return nil -} - -func validateKubeJobList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeJobListParameters(scope constructs.Construct, id *string, props *KubeJobListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeJobProps.go b/pods/imports/k8s/KubeJobProps.go deleted file mode 100644 index 0c1e1dbae..000000000 --- a/pods/imports/k8s/KubeJobProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Job represents the configuration of a single job. -type KubeJobProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of a job. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *JobSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeJob__checks.go b/pods/imports/k8s/KubeJob__checks.go deleted file mode 100644 index d3181bbbd..000000000 --- a/pods/imports/k8s/KubeJob__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeJob_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeJob_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeJob_ManifestParameters(props *KubeJobProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeJob_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeJobParameters(scope constructs.Construct, id *string, props *KubeJobProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeJob__no_checks.go b/pods/imports/k8s/KubeJob__no_checks.go deleted file mode 100644 index 4e00f4f17..000000000 --- a/pods/imports/k8s/KubeJob__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeJob_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeJob_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeJob_ManifestParameters(props *KubeJobProps) error { - return nil -} - -func validateKubeJob_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeJobParameters(scope constructs.Construct, id *string, props *KubeJobProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLease.go b/pods/imports/k8s/KubeLease.go deleted file mode 100644 index 9547e8384..000000000 --- a/pods/imports/k8s/KubeLease.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Lease defines a lease concept. -type KubeLease interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLease -type jsiiProxy_KubeLease struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLease) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLease) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLease) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLease) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLease) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLease) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLease) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.coordination.v1.Lease" API object. -func NewKubeLease(scope constructs.Construct, id *string, props *KubeLeaseProps) KubeLease { - _init_.Initialize() - - if err := validateNewKubeLeaseParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLease{} - - _jsii_.Create( - "k8s.KubeLease", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.coordination.v1.Lease" API object. -func NewKubeLease_Override(k KubeLease, scope constructs.Construct, id *string, props *KubeLeaseProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLease", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLease_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLease_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLease", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLease_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLease_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLease", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1.Lease". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLease_Manifest(props *KubeLeaseProps) interface{} { - _init_.Initialize() - - if err := validateKubeLease_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLease", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLease_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLease_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLease", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLease_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLease", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLease) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLease) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLease) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLease) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go deleted file mode 100644 index 8cee3b9cd..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// LeaseCandidateList is a list of Lease objects. -type KubeLeaseCandidateListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLeaseCandidateListV1Alpha1 -type jsiiProxy_KubeLeaseCandidateListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidateList" API object. -func NewKubeLeaseCandidateListV1Alpha1(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) KubeLeaseCandidateListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeLeaseCandidateListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLeaseCandidateListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeLeaseCandidateListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidateList" API object. -func NewKubeLeaseCandidateListV1Alpha1_Override(k KubeLeaseCandidateListV1Alpha1, scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLeaseCandidateListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLeaseCandidateListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLeaseCandidateListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLeaseCandidateListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLeaseCandidateListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha1.LeaseCandidateList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLeaseCandidateListV1Alpha1_Manifest(props *KubeLeaseCandidateListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeLeaseCandidateListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLeaseCandidateListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLeaseCandidateListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLeaseCandidateListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLeaseCandidateListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLeaseCandidateListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go deleted file mode 100644 index e3d62a411..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// LeaseCandidateList is a list of Lease objects. -type KubeLeaseCandidateListV1Alpha1Props struct { - // items is a list of schema objects. - Items *[]*KubeLeaseCandidateV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go deleted file mode 100644 index 9d4ab7479..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLeaseCandidateListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLeaseCandidateListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLeaseCandidateListV1Alpha1_ManifestParameters(props *KubeLeaseCandidateListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLeaseCandidateListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLeaseCandidateListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go deleted file mode 100644 index db9e4e721..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLeaseCandidateListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLeaseCandidateListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLeaseCandidateListV1Alpha1_ManifestParameters(props *KubeLeaseCandidateListV1Alpha1Props) error { - return nil -} - -func validateKubeLeaseCandidateListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLeaseCandidateListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go deleted file mode 100644 index 6b7d28b38..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// LeaseCandidate defines a candidate for a Lease object. -// -// Candidates are created such that coordinated leader election will pick the best leader from the list of candidates. -type KubeLeaseCandidateV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLeaseCandidateV1Alpha1 -type jsiiProxy_KubeLeaseCandidateV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseCandidateV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidate" API object. -func NewKubeLeaseCandidateV1Alpha1(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) KubeLeaseCandidateV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeLeaseCandidateV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLeaseCandidateV1Alpha1{} - - _jsii_.Create( - "k8s.KubeLeaseCandidateV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.coordination.v1alpha1.LeaseCandidate" API object. -func NewKubeLeaseCandidateV1Alpha1_Override(k KubeLeaseCandidateV1Alpha1, scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLeaseCandidateV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLeaseCandidateV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLeaseCandidateV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLeaseCandidateV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLeaseCandidateV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1alpha1.LeaseCandidate". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLeaseCandidateV1Alpha1_Manifest(props *KubeLeaseCandidateV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeLeaseCandidateV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLeaseCandidateV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLeaseCandidateV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLeaseCandidateV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLeaseCandidateV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLeaseCandidateV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLeaseCandidateV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go deleted file mode 100644 index 10ea85432..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// LeaseCandidate defines a candidate for a Lease object. -// -// Candidates are created such that coordinated leader election will pick the best leader from the list of candidates. -type KubeLeaseCandidateV1Alpha1Props struct { - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec contains the specification of the Lease. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *LeaseCandidateSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go deleted file mode 100644 index 6c6a23cfa..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLeaseCandidateV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLeaseCandidateV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLeaseCandidateV1Alpha1_ManifestParameters(props *KubeLeaseCandidateV1Alpha1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLeaseCandidateV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLeaseCandidateV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go b/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go deleted file mode 100644 index 28059d67c..000000000 --- a/pods/imports/k8s/KubeLeaseCandidateV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLeaseCandidateV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLeaseCandidateV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLeaseCandidateV1Alpha1_ManifestParameters(props *KubeLeaseCandidateV1Alpha1Props) error { - return nil -} - -func validateKubeLeaseCandidateV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLeaseCandidateV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeLeaseCandidateV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLeaseList.go b/pods/imports/k8s/KubeLeaseList.go deleted file mode 100644 index 79cd6b2e3..000000000 --- a/pods/imports/k8s/KubeLeaseList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// LeaseList is a list of Lease objects. -type KubeLeaseList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLeaseList -type jsiiProxy_KubeLeaseList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLeaseList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLeaseList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.coordination.v1.LeaseList" API object. -func NewKubeLeaseList(scope constructs.Construct, id *string, props *KubeLeaseListProps) KubeLeaseList { - _init_.Initialize() - - if err := validateNewKubeLeaseListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLeaseList{} - - _jsii_.Create( - "k8s.KubeLeaseList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.coordination.v1.LeaseList" API object. -func NewKubeLeaseList_Override(k KubeLeaseList, scope constructs.Construct, id *string, props *KubeLeaseListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLeaseList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLeaseList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLeaseList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLeaseList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLeaseList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLeaseList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLeaseList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.coordination.v1.LeaseList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLeaseList_Manifest(props *KubeLeaseListProps) interface{} { - _init_.Initialize() - - if err := validateKubeLeaseList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLeaseList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLeaseList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLeaseList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLeaseList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLeaseList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLeaseList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLeaseList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLeaseList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLeaseList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLeaseList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLeaseListProps.go b/pods/imports/k8s/KubeLeaseListProps.go deleted file mode 100644 index 4539daee6..000000000 --- a/pods/imports/k8s/KubeLeaseListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// LeaseList is a list of Lease objects. -type KubeLeaseListProps struct { - // items is a list of schema objects. - Items *[]*KubeLeaseProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeLeaseList__checks.go b/pods/imports/k8s/KubeLeaseList__checks.go deleted file mode 100644 index d0caa3b30..000000000 --- a/pods/imports/k8s/KubeLeaseList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLeaseList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLeaseList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLeaseList_ManifestParameters(props *KubeLeaseListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLeaseList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLeaseListParameters(scope constructs.Construct, id *string, props *KubeLeaseListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLeaseList__no_checks.go b/pods/imports/k8s/KubeLeaseList__no_checks.go deleted file mode 100644 index b0722cc76..000000000 --- a/pods/imports/k8s/KubeLeaseList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLeaseList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLeaseList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLeaseList_ManifestParameters(props *KubeLeaseListProps) error { - return nil -} - -func validateKubeLeaseList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLeaseListParameters(scope constructs.Construct, id *string, props *KubeLeaseListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLeaseProps.go b/pods/imports/k8s/KubeLeaseProps.go deleted file mode 100644 index a7e4f56ca..000000000 --- a/pods/imports/k8s/KubeLeaseProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Lease defines a lease concept. -type KubeLeaseProps struct { - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec contains the specification of the Lease. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *LeaseSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeLease__checks.go b/pods/imports/k8s/KubeLease__checks.go deleted file mode 100644 index e9babb863..000000000 --- a/pods/imports/k8s/KubeLease__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLease_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLease_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLease_ManifestParameters(props *KubeLeaseProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLease_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLeaseParameters(scope constructs.Construct, id *string, props *KubeLeaseProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLease__no_checks.go b/pods/imports/k8s/KubeLease__no_checks.go deleted file mode 100644 index 480a64596..000000000 --- a/pods/imports/k8s/KubeLease__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLease_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLease_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLease_ManifestParameters(props *KubeLeaseProps) error { - return nil -} - -func validateKubeLease_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLeaseParameters(scope constructs.Construct, id *string, props *KubeLeaseProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLimitRange.go b/pods/imports/k8s/KubeLimitRange.go deleted file mode 100644 index ed2dbea19..000000000 --- a/pods/imports/k8s/KubeLimitRange.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// LimitRange sets resource usage limits for each kind of resource in a Namespace. -type KubeLimitRange interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLimitRange -type jsiiProxy_KubeLimitRange struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLimitRange) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRange) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRange) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRange) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRange) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRange) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRange) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.LimitRange" API object. -func NewKubeLimitRange(scope constructs.Construct, id *string, props *KubeLimitRangeProps) KubeLimitRange { - _init_.Initialize() - - if err := validateNewKubeLimitRangeParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLimitRange{} - - _jsii_.Create( - "k8s.KubeLimitRange", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.LimitRange" API object. -func NewKubeLimitRange_Override(k KubeLimitRange, scope constructs.Construct, id *string, props *KubeLimitRangeProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLimitRange", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLimitRange_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLimitRange_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLimitRange", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLimitRange_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLimitRange_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLimitRange", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.LimitRange". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLimitRange_Manifest(props *KubeLimitRangeProps) interface{} { - _init_.Initialize() - - if err := validateKubeLimitRange_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLimitRange", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLimitRange_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLimitRange_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLimitRange", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLimitRange_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLimitRange", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLimitRange) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLimitRange) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLimitRange) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLimitRange) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLimitRangeList.go b/pods/imports/k8s/KubeLimitRangeList.go deleted file mode 100644 index 308401154..000000000 --- a/pods/imports/k8s/KubeLimitRangeList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// LimitRangeList is a list of LimitRange items. -type KubeLimitRangeList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLimitRangeList -type jsiiProxy_KubeLimitRangeList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLimitRangeList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRangeList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRangeList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRangeList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRangeList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRangeList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLimitRangeList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.LimitRangeList" API object. -func NewKubeLimitRangeList(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) KubeLimitRangeList { - _init_.Initialize() - - if err := validateNewKubeLimitRangeListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLimitRangeList{} - - _jsii_.Create( - "k8s.KubeLimitRangeList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.LimitRangeList" API object. -func NewKubeLimitRangeList_Override(k KubeLimitRangeList, scope constructs.Construct, id *string, props *KubeLimitRangeListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLimitRangeList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLimitRangeList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLimitRangeList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLimitRangeList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLimitRangeList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLimitRangeList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLimitRangeList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.LimitRangeList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLimitRangeList_Manifest(props *KubeLimitRangeListProps) interface{} { - _init_.Initialize() - - if err := validateKubeLimitRangeList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLimitRangeList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLimitRangeList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLimitRangeList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLimitRangeList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLimitRangeList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLimitRangeList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLimitRangeList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLimitRangeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLimitRangeList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLimitRangeList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLimitRangeListProps.go b/pods/imports/k8s/KubeLimitRangeListProps.go deleted file mode 100644 index 1cb537ac6..000000000 --- a/pods/imports/k8s/KubeLimitRangeListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// LimitRangeList is a list of LimitRange items. -type KubeLimitRangeListProps struct { - // Items is a list of LimitRange objects. - // - // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - Items *[]*KubeLimitRangeProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeLimitRangeList__checks.go b/pods/imports/k8s/KubeLimitRangeList__checks.go deleted file mode 100644 index e455874c6..000000000 --- a/pods/imports/k8s/KubeLimitRangeList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLimitRangeList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLimitRangeList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLimitRangeList_ManifestParameters(props *KubeLimitRangeListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLimitRangeList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLimitRangeListParameters(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLimitRangeList__no_checks.go b/pods/imports/k8s/KubeLimitRangeList__no_checks.go deleted file mode 100644 index baebb1e76..000000000 --- a/pods/imports/k8s/KubeLimitRangeList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLimitRangeList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLimitRangeList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLimitRangeList_ManifestParameters(props *KubeLimitRangeListProps) error { - return nil -} - -func validateKubeLimitRangeList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLimitRangeListParameters(scope constructs.Construct, id *string, props *KubeLimitRangeListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLimitRangeProps.go b/pods/imports/k8s/KubeLimitRangeProps.go deleted file mode 100644 index da800c204..000000000 --- a/pods/imports/k8s/KubeLimitRangeProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// LimitRange sets resource usage limits for each kind of resource in a Namespace. -type KubeLimitRangeProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the limits enforced. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *LimitRangeSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeLimitRange__checks.go b/pods/imports/k8s/KubeLimitRange__checks.go deleted file mode 100644 index d57dad1b9..000000000 --- a/pods/imports/k8s/KubeLimitRange__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLimitRange_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLimitRange_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLimitRange_ManifestParameters(props *KubeLimitRangeProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLimitRange_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLimitRangeParameters(scope constructs.Construct, id *string, props *KubeLimitRangeProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLimitRange__no_checks.go b/pods/imports/k8s/KubeLimitRange__no_checks.go deleted file mode 100644 index 39eb8ca5f..000000000 --- a/pods/imports/k8s/KubeLimitRange__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLimitRange_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLimitRange_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLimitRange_ManifestParameters(props *KubeLimitRangeProps) error { - return nil -} - -func validateKubeLimitRange_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLimitRangeParameters(scope constructs.Construct, id *string, props *KubeLimitRangeProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview.go b/pods/imports/k8s/KubeLocalSubjectAccessReview.go deleted file mode 100644 index 8ff1b36a8..000000000 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. -// -// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking. -type KubeLocalSubjectAccessReview interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeLocalSubjectAccessReview -type jsiiProxy_KubeLocalSubjectAccessReview struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeLocalSubjectAccessReview) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authorization.v1.LocalSubjectAccessReview" API object. -func NewKubeLocalSubjectAccessReview(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) KubeLocalSubjectAccessReview { - _init_.Initialize() - - if err := validateNewKubeLocalSubjectAccessReviewParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeLocalSubjectAccessReview{} - - _jsii_.Create( - "k8s.KubeLocalSubjectAccessReview", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authorization.v1.LocalSubjectAccessReview" API object. -func NewKubeLocalSubjectAccessReview_Override(k KubeLocalSubjectAccessReview, scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeLocalSubjectAccessReview", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeLocalSubjectAccessReview_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLocalSubjectAccessReview_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLocalSubjectAccessReview", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeLocalSubjectAccessReview_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeLocalSubjectAccessReview_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeLocalSubjectAccessReview", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.LocalSubjectAccessReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeLocalSubjectAccessReview_Manifest(props *KubeLocalSubjectAccessReviewProps) interface{} { - _init_.Initialize() - - if err := validateKubeLocalSubjectAccessReview_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeLocalSubjectAccessReview", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeLocalSubjectAccessReview_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeLocalSubjectAccessReview_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeLocalSubjectAccessReview", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeLocalSubjectAccessReview_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeLocalSubjectAccessReview", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeLocalSubjectAccessReview) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeLocalSubjectAccessReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeLocalSubjectAccessReview) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeLocalSubjectAccessReview) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go b/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go deleted file mode 100644 index 8d801f11c..000000000 --- a/pods/imports/k8s/KubeLocalSubjectAccessReviewProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. -// -// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking. -type KubeLocalSubjectAccessReviewProps struct { - // Spec holds information about the request being evaluated. - // - // spec.namespace must be equal to the namespace you made the request against. If empty, it is defaulted. - Spec *SubjectAccessReviewSpec `field:"required" json:"spec" yaml:"spec"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go b/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go deleted file mode 100644 index c2d2f7e9b..000000000 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeLocalSubjectAccessReview_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeLocalSubjectAccessReview_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeLocalSubjectAccessReview_ManifestParameters(props *KubeLocalSubjectAccessReviewProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeLocalSubjectAccessReview_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeLocalSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go deleted file mode 100644 index 05022f1e8..000000000 --- a/pods/imports/k8s/KubeLocalSubjectAccessReview__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeLocalSubjectAccessReview_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeLocalSubjectAccessReview_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeLocalSubjectAccessReview_ManifestParameters(props *KubeLocalSubjectAccessReviewProps) error { - return nil -} - -func validateKubeLocalSubjectAccessReview_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeLocalSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeLocalSubjectAccessReviewProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration.go deleted file mode 100644 index 81e47d9ca..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. -type KubeMutatingWebhookConfiguration interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeMutatingWebhookConfiguration -type jsiiProxy_KubeMutatingWebhookConfiguration struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfiguration) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" API object. -func NewKubeMutatingWebhookConfiguration(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) KubeMutatingWebhookConfiguration { - _init_.Initialize() - - if err := validateNewKubeMutatingWebhookConfigurationParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeMutatingWebhookConfiguration{} - - _jsii_.Create( - "k8s.KubeMutatingWebhookConfiguration", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" API object. -func NewKubeMutatingWebhookConfiguration_Override(k KubeMutatingWebhookConfiguration, scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeMutatingWebhookConfiguration", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeMutatingWebhookConfiguration_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfiguration_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfiguration", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeMutatingWebhookConfiguration_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfiguration_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfiguration", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeMutatingWebhookConfiguration_Manifest(props *KubeMutatingWebhookConfigurationProps) interface{} { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfiguration_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfiguration", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeMutatingWebhookConfiguration_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfiguration_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfiguration", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeMutatingWebhookConfiguration_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeMutatingWebhookConfiguration", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeMutatingWebhookConfiguration) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeMutatingWebhookConfiguration) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeMutatingWebhookConfiguration) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeMutatingWebhookConfiguration) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go deleted file mode 100644 index c59ad5560..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration. -type KubeMutatingWebhookConfigurationList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeMutatingWebhookConfigurationList -type jsiiProxy_KubeMutatingWebhookConfigurationList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeMutatingWebhookConfigurationList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" API object. -func NewKubeMutatingWebhookConfigurationList(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) KubeMutatingWebhookConfigurationList { - _init_.Initialize() - - if err := validateNewKubeMutatingWebhookConfigurationListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeMutatingWebhookConfigurationList{} - - _jsii_.Create( - "k8s.KubeMutatingWebhookConfigurationList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" API object. -func NewKubeMutatingWebhookConfigurationList_Override(k KubeMutatingWebhookConfigurationList, scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeMutatingWebhookConfigurationList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeMutatingWebhookConfigurationList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfigurationList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfigurationList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeMutatingWebhookConfigurationList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfigurationList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfigurationList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeMutatingWebhookConfigurationList_Manifest(props *KubeMutatingWebhookConfigurationListProps) interface{} { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfigurationList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfigurationList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeMutatingWebhookConfigurationList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeMutatingWebhookConfigurationList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeMutatingWebhookConfigurationList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeMutatingWebhookConfigurationList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeMutatingWebhookConfigurationList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeMutatingWebhookConfigurationList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go deleted file mode 100644 index 9b6826ed5..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration. -type KubeMutatingWebhookConfigurationListProps struct { - // List of MutatingWebhookConfiguration. - Items *[]*KubeMutatingWebhookConfigurationProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go deleted file mode 100644 index 19fe8dc42..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeMutatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeMutatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeMutatingWebhookConfigurationList_ManifestParameters(props *KubeMutatingWebhookConfigurationListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeMutatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeMutatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go deleted file mode 100644 index c27bf843b..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeMutatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeMutatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeMutatingWebhookConfigurationList_ManifestParameters(props *KubeMutatingWebhookConfigurationListProps) error { - return nil -} - -func validateKubeMutatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeMutatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go b/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go deleted file mode 100644 index 30abc9e1d..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfigurationProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. -type KubeMutatingWebhookConfigurationProps struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Webhooks is a list of webhooks and the affected resources and operations. - Webhooks *[]*MutatingWebhook `field:"optional" json:"webhooks" yaml:"webhooks"` -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go deleted file mode 100644 index 8a9b15bdb..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeMutatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeMutatingWebhookConfiguration_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeMutatingWebhookConfiguration_ManifestParameters(props *KubeMutatingWebhookConfigurationProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeMutatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeMutatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go b/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go deleted file mode 100644 index c4dc177a7..000000000 --- a/pods/imports/k8s/KubeMutatingWebhookConfiguration__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeMutatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeMutatingWebhookConfiguration_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeMutatingWebhookConfiguration_ManifestParameters(props *KubeMutatingWebhookConfigurationProps) error { - return nil -} - -func validateKubeMutatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeMutatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeMutatingWebhookConfigurationProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeNamespace.go b/pods/imports/k8s/KubeNamespace.go deleted file mode 100644 index 0c41cedc0..000000000 --- a/pods/imports/k8s/KubeNamespace.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Namespace provides a scope for Names. -// -// Use of multiple namespaces is optional. -type KubeNamespace interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeNamespace -type jsiiProxy_KubeNamespace struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeNamespace) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespace) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespace) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespace) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespace) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespace) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespace) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Namespace" API object. -func NewKubeNamespace(scope constructs.Construct, id *string, props *KubeNamespaceProps) KubeNamespace { - _init_.Initialize() - - if err := validateNewKubeNamespaceParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeNamespace{} - - _jsii_.Create( - "k8s.KubeNamespace", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Namespace" API object. -func NewKubeNamespace_Override(k KubeNamespace, scope constructs.Construct, id *string, props *KubeNamespaceProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeNamespace", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeNamespace_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNamespace_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNamespace", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeNamespace_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNamespace_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNamespace", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Namespace". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeNamespace_Manifest(props *KubeNamespaceProps) interface{} { - _init_.Initialize() - - if err := validateKubeNamespace_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeNamespace", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeNamespace_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeNamespace_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeNamespace", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeNamespace_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeNamespace", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeNamespace) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeNamespace) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeNamespace) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeNamespace) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeNamespaceList.go b/pods/imports/k8s/KubeNamespaceList.go deleted file mode 100644 index 83dfdc4a3..000000000 --- a/pods/imports/k8s/KubeNamespaceList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// NamespaceList is a list of Namespaces. -type KubeNamespaceList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeNamespaceList -type jsiiProxy_KubeNamespaceList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeNamespaceList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespaceList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespaceList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespaceList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespaceList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespaceList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNamespaceList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.NamespaceList" API object. -func NewKubeNamespaceList(scope constructs.Construct, id *string, props *KubeNamespaceListProps) KubeNamespaceList { - _init_.Initialize() - - if err := validateNewKubeNamespaceListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeNamespaceList{} - - _jsii_.Create( - "k8s.KubeNamespaceList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.NamespaceList" API object. -func NewKubeNamespaceList_Override(k KubeNamespaceList, scope constructs.Construct, id *string, props *KubeNamespaceListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeNamespaceList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeNamespaceList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNamespaceList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNamespaceList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeNamespaceList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNamespaceList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNamespaceList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.NamespaceList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeNamespaceList_Manifest(props *KubeNamespaceListProps) interface{} { - _init_.Initialize() - - if err := validateKubeNamespaceList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeNamespaceList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeNamespaceList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeNamespaceList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeNamespaceList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeNamespaceList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeNamespaceList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeNamespaceList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeNamespaceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeNamespaceList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeNamespaceList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeNamespaceListProps.go b/pods/imports/k8s/KubeNamespaceListProps.go deleted file mode 100644 index 0c765df40..000000000 --- a/pods/imports/k8s/KubeNamespaceListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// NamespaceList is a list of Namespaces. -type KubeNamespaceListProps struct { - // Items is the list of Namespace objects in the list. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - Items *[]*KubeNamespaceProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeNamespaceList__checks.go b/pods/imports/k8s/KubeNamespaceList__checks.go deleted file mode 100644 index 05dec1404..000000000 --- a/pods/imports/k8s/KubeNamespaceList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeNamespaceList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeNamespaceList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeNamespaceList_ManifestParameters(props *KubeNamespaceListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeNamespaceList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeNamespaceListParameters(scope constructs.Construct, id *string, props *KubeNamespaceListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeNamespaceList__no_checks.go b/pods/imports/k8s/KubeNamespaceList__no_checks.go deleted file mode 100644 index b1a2c9971..000000000 --- a/pods/imports/k8s/KubeNamespaceList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeNamespaceList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeNamespaceList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeNamespaceList_ManifestParameters(props *KubeNamespaceListProps) error { - return nil -} - -func validateKubeNamespaceList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeNamespaceListParameters(scope constructs.Construct, id *string, props *KubeNamespaceListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeNamespaceProps.go b/pods/imports/k8s/KubeNamespaceProps.go deleted file mode 100644 index 14fbd94fb..000000000 --- a/pods/imports/k8s/KubeNamespaceProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Namespace provides a scope for Names. -// -// Use of multiple namespaces is optional. -type KubeNamespaceProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the behavior of the Namespace. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *NamespaceSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeNamespace__checks.go b/pods/imports/k8s/KubeNamespace__checks.go deleted file mode 100644 index 84c3e608a..000000000 --- a/pods/imports/k8s/KubeNamespace__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeNamespace_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeNamespace_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeNamespace_ManifestParameters(props *KubeNamespaceProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeNamespace_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeNamespaceParameters(scope constructs.Construct, id *string, props *KubeNamespaceProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeNamespace__no_checks.go b/pods/imports/k8s/KubeNamespace__no_checks.go deleted file mode 100644 index 3483e14e1..000000000 --- a/pods/imports/k8s/KubeNamespace__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeNamespace_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeNamespace_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeNamespace_ManifestParameters(props *KubeNamespaceProps) error { - return nil -} - -func validateKubeNamespace_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeNamespaceParameters(scope constructs.Construct, id *string, props *KubeNamespaceProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeNetworkPolicy.go b/pods/imports/k8s/KubeNetworkPolicy.go deleted file mode 100644 index 2aaf7caa4..000000000 --- a/pods/imports/k8s/KubeNetworkPolicy.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// NetworkPolicy describes what network traffic is allowed for a set of Pods. -type KubeNetworkPolicy interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeNetworkPolicy -type jsiiProxy_KubeNetworkPolicy struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeNetworkPolicy) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicy) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicy) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicy) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicy) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicy) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicy) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1.NetworkPolicy" API object. -func NewKubeNetworkPolicy(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) KubeNetworkPolicy { - _init_.Initialize() - - if err := validateNewKubeNetworkPolicyParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeNetworkPolicy{} - - _jsii_.Create( - "k8s.KubeNetworkPolicy", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1.NetworkPolicy" API object. -func NewKubeNetworkPolicy_Override(k KubeNetworkPolicy, scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeNetworkPolicy", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeNetworkPolicy_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNetworkPolicy_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicy", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeNetworkPolicy_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNetworkPolicy_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicy", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.NetworkPolicy". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeNetworkPolicy_Manifest(props *KubeNetworkPolicyProps) interface{} { - _init_.Initialize() - - if err := validateKubeNetworkPolicy_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicy", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeNetworkPolicy_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeNetworkPolicy_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicy", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeNetworkPolicy_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeNetworkPolicy", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeNetworkPolicy) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeNetworkPolicy) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeNetworkPolicy) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeNetworkPolicy) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeNetworkPolicyList.go b/pods/imports/k8s/KubeNetworkPolicyList.go deleted file mode 100644 index 53bf9d600..000000000 --- a/pods/imports/k8s/KubeNetworkPolicyList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// NetworkPolicyList is a list of NetworkPolicy objects. -type KubeNetworkPolicyList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeNetworkPolicyList -type jsiiProxy_KubeNetworkPolicyList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeNetworkPolicyList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicyList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicyList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicyList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicyList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicyList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNetworkPolicyList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1.NetworkPolicyList" API object. -func NewKubeNetworkPolicyList(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) KubeNetworkPolicyList { - _init_.Initialize() - - if err := validateNewKubeNetworkPolicyListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeNetworkPolicyList{} - - _jsii_.Create( - "k8s.KubeNetworkPolicyList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1.NetworkPolicyList" API object. -func NewKubeNetworkPolicyList_Override(k KubeNetworkPolicyList, scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeNetworkPolicyList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeNetworkPolicyList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNetworkPolicyList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicyList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeNetworkPolicyList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNetworkPolicyList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicyList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1.NetworkPolicyList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeNetworkPolicyList_Manifest(props *KubeNetworkPolicyListProps) interface{} { - _init_.Initialize() - - if err := validateKubeNetworkPolicyList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicyList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeNetworkPolicyList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeNetworkPolicyList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeNetworkPolicyList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeNetworkPolicyList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeNetworkPolicyList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeNetworkPolicyList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeNetworkPolicyList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeNetworkPolicyList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeNetworkPolicyList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeNetworkPolicyListProps.go b/pods/imports/k8s/KubeNetworkPolicyListProps.go deleted file mode 100644 index 85e1598ca..000000000 --- a/pods/imports/k8s/KubeNetworkPolicyListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// NetworkPolicyList is a list of NetworkPolicy objects. -type KubeNetworkPolicyListProps struct { - // items is a list of schema objects. - Items *[]*KubeNetworkPolicyProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeNetworkPolicyList__checks.go b/pods/imports/k8s/KubeNetworkPolicyList__checks.go deleted file mode 100644 index d08fcfca7..000000000 --- a/pods/imports/k8s/KubeNetworkPolicyList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeNetworkPolicyList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeNetworkPolicyList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeNetworkPolicyList_ManifestParameters(props *KubeNetworkPolicyListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeNetworkPolicyList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeNetworkPolicyListParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go b/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go deleted file mode 100644 index 25435787b..000000000 --- a/pods/imports/k8s/KubeNetworkPolicyList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeNetworkPolicyList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeNetworkPolicyList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeNetworkPolicyList_ManifestParameters(props *KubeNetworkPolicyListProps) error { - return nil -} - -func validateKubeNetworkPolicyList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeNetworkPolicyListParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeNetworkPolicyProps.go b/pods/imports/k8s/KubeNetworkPolicyProps.go deleted file mode 100644 index b4a13e4aa..000000000 --- a/pods/imports/k8s/KubeNetworkPolicyProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// NetworkPolicy describes what network traffic is allowed for a set of Pods. -type KubeNetworkPolicyProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec represents the specification of the desired behavior for this NetworkPolicy. - Spec *NetworkPolicySpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeNetworkPolicy__checks.go b/pods/imports/k8s/KubeNetworkPolicy__checks.go deleted file mode 100644 index a8a8edaeb..000000000 --- a/pods/imports/k8s/KubeNetworkPolicy__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeNetworkPolicy_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeNetworkPolicy_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeNetworkPolicy_ManifestParameters(props *KubeNetworkPolicyProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeNetworkPolicy_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeNetworkPolicyParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeNetworkPolicy__no_checks.go b/pods/imports/k8s/KubeNetworkPolicy__no_checks.go deleted file mode 100644 index 6693b2022..000000000 --- a/pods/imports/k8s/KubeNetworkPolicy__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeNetworkPolicy_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeNetworkPolicy_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeNetworkPolicy_ManifestParameters(props *KubeNetworkPolicyProps) error { - return nil -} - -func validateKubeNetworkPolicy_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeNetworkPolicyParameters(scope constructs.Construct, id *string, props *KubeNetworkPolicyProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeNode.go b/pods/imports/k8s/KubeNode.go deleted file mode 100644 index ea3aa33ac..000000000 --- a/pods/imports/k8s/KubeNode.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Node is a worker node in Kubernetes. -// -// Each node will have a unique identifier in the cache (i.e. in etcd). -type KubeNode interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeNode -type jsiiProxy_KubeNode struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeNode) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNode) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNode) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNode) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNode) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNode) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNode) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Node" API object. -func NewKubeNode(scope constructs.Construct, id *string, props *KubeNodeProps) KubeNode { - _init_.Initialize() - - if err := validateNewKubeNodeParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeNode{} - - _jsii_.Create( - "k8s.KubeNode", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Node" API object. -func NewKubeNode_Override(k KubeNode, scope constructs.Construct, id *string, props *KubeNodeProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeNode", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeNode_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNode_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNode", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeNode_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNode_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNode", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Node". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeNode_Manifest(props *KubeNodeProps) interface{} { - _init_.Initialize() - - if err := validateKubeNode_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeNode", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeNode_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeNode_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeNode", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeNode_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeNode", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeNode) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeNode) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeNode) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeNode) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeNodeList.go b/pods/imports/k8s/KubeNodeList.go deleted file mode 100644 index 6ef951ebc..000000000 --- a/pods/imports/k8s/KubeNodeList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// NodeList is the whole list of all Nodes which have been registered with master. -type KubeNodeList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeNodeList -type jsiiProxy_KubeNodeList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeNodeList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNodeList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNodeList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNodeList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNodeList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNodeList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeNodeList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.NodeList" API object. -func NewKubeNodeList(scope constructs.Construct, id *string, props *KubeNodeListProps) KubeNodeList { - _init_.Initialize() - - if err := validateNewKubeNodeListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeNodeList{} - - _jsii_.Create( - "k8s.KubeNodeList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.NodeList" API object. -func NewKubeNodeList_Override(k KubeNodeList, scope constructs.Construct, id *string, props *KubeNodeListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeNodeList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeNodeList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNodeList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNodeList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeNodeList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeNodeList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeNodeList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.NodeList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeNodeList_Manifest(props *KubeNodeListProps) interface{} { - _init_.Initialize() - - if err := validateKubeNodeList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeNodeList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeNodeList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeNodeList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeNodeList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeNodeList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeNodeList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeNodeList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeNodeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeNodeList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeNodeList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeNodeListProps.go b/pods/imports/k8s/KubeNodeListProps.go deleted file mode 100644 index ad657bdca..000000000 --- a/pods/imports/k8s/KubeNodeListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// NodeList is the whole list of all Nodes which have been registered with master. -type KubeNodeListProps struct { - // List of nodes. - Items *[]*KubeNodeProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeNodeList__checks.go b/pods/imports/k8s/KubeNodeList__checks.go deleted file mode 100644 index 94e4facc1..000000000 --- a/pods/imports/k8s/KubeNodeList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeNodeList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeNodeList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeNodeList_ManifestParameters(props *KubeNodeListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeNodeList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeNodeListParameters(scope constructs.Construct, id *string, props *KubeNodeListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeNodeList__no_checks.go b/pods/imports/k8s/KubeNodeList__no_checks.go deleted file mode 100644 index bd785c429..000000000 --- a/pods/imports/k8s/KubeNodeList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeNodeList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeNodeList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeNodeList_ManifestParameters(props *KubeNodeListProps) error { - return nil -} - -func validateKubeNodeList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeNodeListParameters(scope constructs.Construct, id *string, props *KubeNodeListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeNodeProps.go b/pods/imports/k8s/KubeNodeProps.go deleted file mode 100644 index 707d5f5dc..000000000 --- a/pods/imports/k8s/KubeNodeProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Node is a worker node in Kubernetes. -// -// Each node will have a unique identifier in the cache (i.e. in etcd). -type KubeNodeProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the behavior of a node. - // - // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *NodeSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeNode__checks.go b/pods/imports/k8s/KubeNode__checks.go deleted file mode 100644 index d1ad26841..000000000 --- a/pods/imports/k8s/KubeNode__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeNode_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeNode_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeNode_ManifestParameters(props *KubeNodeProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeNode_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeNodeParameters(scope constructs.Construct, id *string, props *KubeNodeProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeNode__no_checks.go b/pods/imports/k8s/KubeNode__no_checks.go deleted file mode 100644 index 09e22a78b..000000000 --- a/pods/imports/k8s/KubeNode__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeNode_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeNode_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeNode_ManifestParameters(props *KubeNodeProps) error { - return nil -} - -func validateKubeNode_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeNodeParameters(scope constructs.Construct, id *string, props *KubeNodeProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolume.go b/pods/imports/k8s/KubePersistentVolume.go deleted file mode 100644 index 007b4ae75..000000000 --- a/pods/imports/k8s/KubePersistentVolume.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PersistentVolume (PV) is a storage resource provisioned by an administrator. -// -// It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes -type KubePersistentVolume interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePersistentVolume -type jsiiProxy_KubePersistentVolume struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePersistentVolume) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolume) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolume) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolume) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolume) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolume) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolume) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PersistentVolume" API object. -func NewKubePersistentVolume(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) KubePersistentVolume { - _init_.Initialize() - - if err := validateNewKubePersistentVolumeParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePersistentVolume{} - - _jsii_.Create( - "k8s.KubePersistentVolume", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PersistentVolume" API object. -func NewKubePersistentVolume_Override(k KubePersistentVolume, scope constructs.Construct, id *string, props *KubePersistentVolumeProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePersistentVolume", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePersistentVolume_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolume_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolume", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePersistentVolume_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolume_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolume", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolume". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePersistentVolume_Manifest(props *KubePersistentVolumeProps) interface{} { - _init_.Initialize() - - if err := validateKubePersistentVolume_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolume", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePersistentVolume_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePersistentVolume_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolume", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePersistentVolume_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePersistentVolume", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePersistentVolume) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolume) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolume) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePersistentVolume) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaim.go b/pods/imports/k8s/KubePersistentVolumeClaim.go deleted file mode 100644 index d8ee1025c..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaim.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PersistentVolumeClaim is a user's request for and claim to a persistent volume. -type KubePersistentVolumeClaim interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePersistentVolumeClaim -type jsiiProxy_KubePersistentVolumeClaim struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaim) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PersistentVolumeClaim" API object. -func NewKubePersistentVolumeClaim(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) KubePersistentVolumeClaim { - _init_.Initialize() - - if err := validateNewKubePersistentVolumeClaimParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePersistentVolumeClaim{} - - _jsii_.Create( - "k8s.KubePersistentVolumeClaim", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PersistentVolumeClaim" API object. -func NewKubePersistentVolumeClaim_Override(k KubePersistentVolumeClaim, scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePersistentVolumeClaim", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePersistentVolumeClaim_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaim_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaim", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePersistentVolumeClaim_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaim_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaim", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeClaim". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePersistentVolumeClaim_Manifest(props *KubePersistentVolumeClaimProps) interface{} { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaim_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaim", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePersistentVolumeClaim_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaim_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaim", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePersistentVolumeClaim_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePersistentVolumeClaim", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePersistentVolumeClaim) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolumeClaim) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolumeClaim) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePersistentVolumeClaim) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList.go b/pods/imports/k8s/KubePersistentVolumeClaimList.go deleted file mode 100644 index acf065656..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaimList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. -type KubePersistentVolumeClaimList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePersistentVolumeClaimList -type jsiiProxy_KubePersistentVolumeClaimList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeClaimList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PersistentVolumeClaimList" API object. -func NewKubePersistentVolumeClaimList(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) KubePersistentVolumeClaimList { - _init_.Initialize() - - if err := validateNewKubePersistentVolumeClaimListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePersistentVolumeClaimList{} - - _jsii_.Create( - "k8s.KubePersistentVolumeClaimList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PersistentVolumeClaimList" API object. -func NewKubePersistentVolumeClaimList_Override(k KubePersistentVolumeClaimList, scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePersistentVolumeClaimList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePersistentVolumeClaimList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaimList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaimList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePersistentVolumeClaimList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaimList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaimList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeClaimList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePersistentVolumeClaimList_Manifest(props *KubePersistentVolumeClaimListProps) interface{} { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaimList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaimList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePersistentVolumeClaimList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePersistentVolumeClaimList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeClaimList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePersistentVolumeClaimList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePersistentVolumeClaimList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePersistentVolumeClaimList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolumeClaimList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolumeClaimList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePersistentVolumeClaimList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaimListProps.go b/pods/imports/k8s/KubePersistentVolumeClaimListProps.go deleted file mode 100644 index dd685a184..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaimListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. -type KubePersistentVolumeClaimListProps struct { - // items is a list of persistent volume claims. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - Items *[]*KubePersistentVolumeClaimProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go b/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go deleted file mode 100644 index 5ff8dcf47..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaimList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePersistentVolumeClaimList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolumeClaimList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolumeClaimList_ManifestParameters(props *KubePersistentVolumeClaimListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePersistentVolumeClaimList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePersistentVolumeClaimListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go b/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go deleted file mode 100644 index e7dfc666a..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaimList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePersistentVolumeClaimList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePersistentVolumeClaimList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePersistentVolumeClaimList_ManifestParameters(props *KubePersistentVolumeClaimListProps) error { - return nil -} - -func validateKubePersistentVolumeClaimList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePersistentVolumeClaimListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaimProps.go b/pods/imports/k8s/KubePersistentVolumeClaimProps.go deleted file mode 100644 index 861f51d93..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaimProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PersistentVolumeClaim is a user's request for and claim to a persistent volume. -type KubePersistentVolumeClaimProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec defines the desired characteristics of a volume requested by a pod author. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - Spec *PersistentVolumeClaimSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaim__checks.go b/pods/imports/k8s/KubePersistentVolumeClaim__checks.go deleted file mode 100644 index 7d6984065..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaim__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePersistentVolumeClaim_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolumeClaim_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolumeClaim_ManifestParameters(props *KubePersistentVolumeClaimProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePersistentVolumeClaim_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePersistentVolumeClaimParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go b/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go deleted file mode 100644 index b480d507e..000000000 --- a/pods/imports/k8s/KubePersistentVolumeClaim__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePersistentVolumeClaim_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePersistentVolumeClaim_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePersistentVolumeClaim_ManifestParameters(props *KubePersistentVolumeClaimProps) error { - return nil -} - -func validateKubePersistentVolumeClaim_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePersistentVolumeClaimParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeClaimProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolumeList.go b/pods/imports/k8s/KubePersistentVolumeList.go deleted file mode 100644 index 3206ce0e2..000000000 --- a/pods/imports/k8s/KubePersistentVolumeList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PersistentVolumeList is a list of PersistentVolume items. -type KubePersistentVolumeList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePersistentVolumeList -type jsiiProxy_KubePersistentVolumeList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePersistentVolumeList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePersistentVolumeList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PersistentVolumeList" API object. -func NewKubePersistentVolumeList(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) KubePersistentVolumeList { - _init_.Initialize() - - if err := validateNewKubePersistentVolumeListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePersistentVolumeList{} - - _jsii_.Create( - "k8s.KubePersistentVolumeList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PersistentVolumeList" API object. -func NewKubePersistentVolumeList_Override(k KubePersistentVolumeList, scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePersistentVolumeList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePersistentVolumeList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolumeList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePersistentVolumeList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePersistentVolumeList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePersistentVolumeList_Manifest(props *KubePersistentVolumeListProps) interface{} { - _init_.Initialize() - - if err := validateKubePersistentVolumeList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePersistentVolumeList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePersistentVolumeList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePersistentVolumeList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePersistentVolumeList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePersistentVolumeList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePersistentVolumeList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolumeList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePersistentVolumeList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePersistentVolumeList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePersistentVolumeListProps.go b/pods/imports/k8s/KubePersistentVolumeListProps.go deleted file mode 100644 index 4596fb343..000000000 --- a/pods/imports/k8s/KubePersistentVolumeListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PersistentVolumeList is a list of PersistentVolume items. -type KubePersistentVolumeListProps struct { - // items is a list of persistent volumes. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes - Items *[]*KubePersistentVolumeProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePersistentVolumeList__checks.go b/pods/imports/k8s/KubePersistentVolumeList__checks.go deleted file mode 100644 index f361133c3..000000000 --- a/pods/imports/k8s/KubePersistentVolumeList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePersistentVolumeList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolumeList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolumeList_ManifestParameters(props *KubePersistentVolumeListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePersistentVolumeList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePersistentVolumeListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolumeList__no_checks.go b/pods/imports/k8s/KubePersistentVolumeList__no_checks.go deleted file mode 100644 index 9f04c34ee..000000000 --- a/pods/imports/k8s/KubePersistentVolumeList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePersistentVolumeList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePersistentVolumeList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePersistentVolumeList_ManifestParameters(props *KubePersistentVolumeListProps) error { - return nil -} - -func validateKubePersistentVolumeList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePersistentVolumeListParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolumeProps.go b/pods/imports/k8s/KubePersistentVolumeProps.go deleted file mode 100644 index bd8e60804..000000000 --- a/pods/imports/k8s/KubePersistentVolumeProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// PersistentVolume (PV) is a storage resource provisioned by an administrator. -// -// It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes -type KubePersistentVolumeProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec defines a specification of a persistent volume owned by the cluster. - // - // Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes - Spec *PersistentVolumeSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubePersistentVolume__checks.go b/pods/imports/k8s/KubePersistentVolume__checks.go deleted file mode 100644 index 8aef631fb..000000000 --- a/pods/imports/k8s/KubePersistentVolume__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePersistentVolume_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolume_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePersistentVolume_ManifestParameters(props *KubePersistentVolumeProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePersistentVolume_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePersistentVolumeParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePersistentVolume__no_checks.go b/pods/imports/k8s/KubePersistentVolume__no_checks.go deleted file mode 100644 index bfc59d958..000000000 --- a/pods/imports/k8s/KubePersistentVolume__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePersistentVolume_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePersistentVolume_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePersistentVolume_ManifestParameters(props *KubePersistentVolumeProps) error { - return nil -} - -func validateKubePersistentVolume_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePersistentVolumeParameters(scope constructs.Construct, id *string, props *KubePersistentVolumeProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePod.go b/pods/imports/k8s/KubePod.go deleted file mode 100644 index 518be33ff..000000000 --- a/pods/imports/k8s/KubePod.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Pod is a collection of containers that can run on a host. -// -// This resource is created by clients and scheduled onto hosts. -type KubePod interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePod -type jsiiProxy_KubePod struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePod) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePod) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePod) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePod) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePod) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePod) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePod) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Pod" API object. -func NewKubePod(scope constructs.Construct, id *string, props *KubePodProps) KubePod { - _init_.Initialize() - - if err := validateNewKubePodParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePod{} - - _jsii_.Create( - "k8s.KubePod", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Pod" API object. -func NewKubePod_Override(k KubePod, scope constructs.Construct, id *string, props *KubePodProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePod", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePod_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePod_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePod", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePod_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePod_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePod", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Pod". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePod_Manifest(props *KubePodProps) interface{} { - _init_.Initialize() - - if err := validateKubePod_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePod", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePod_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePod_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePod", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePod_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePod", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePod) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePod) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePod) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePod) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudget.go b/pods/imports/k8s/KubePodDisruptionBudget.go deleted file mode 100644 index ed6b29bfc..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudget.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods. -type KubePodDisruptionBudget interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodDisruptionBudget -type jsiiProxy_KubePodDisruptionBudget struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodDisruptionBudget) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudget) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudget) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudget) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudget) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudget) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudget) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.policy.v1.PodDisruptionBudget" API object. -func NewKubePodDisruptionBudget(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) KubePodDisruptionBudget { - _init_.Initialize() - - if err := validateNewKubePodDisruptionBudgetParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodDisruptionBudget{} - - _jsii_.Create( - "k8s.KubePodDisruptionBudget", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.policy.v1.PodDisruptionBudget" API object. -func NewKubePodDisruptionBudget_Override(k KubePodDisruptionBudget, scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodDisruptionBudget", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodDisruptionBudget_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodDisruptionBudget_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudget", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodDisruptionBudget_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodDisruptionBudget_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudget", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.policy.v1.PodDisruptionBudget". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodDisruptionBudget_Manifest(props *KubePodDisruptionBudgetProps) interface{} { - _init_.Initialize() - - if err := validateKubePodDisruptionBudget_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudget", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodDisruptionBudget_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodDisruptionBudget_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudget", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodDisruptionBudget_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodDisruptionBudget", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodDisruptionBudget) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodDisruptionBudget) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodDisruptionBudget) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodDisruptionBudget) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList.go b/pods/imports/k8s/KubePodDisruptionBudgetList.go deleted file mode 100644 index bbdb10bdb..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudgetList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. -type KubePodDisruptionBudgetList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodDisruptionBudgetList -type jsiiProxy_KubePodDisruptionBudgetList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodDisruptionBudgetList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.policy.v1.PodDisruptionBudgetList" API object. -func NewKubePodDisruptionBudgetList(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) KubePodDisruptionBudgetList { - _init_.Initialize() - - if err := validateNewKubePodDisruptionBudgetListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodDisruptionBudgetList{} - - _jsii_.Create( - "k8s.KubePodDisruptionBudgetList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.policy.v1.PodDisruptionBudgetList" API object. -func NewKubePodDisruptionBudgetList_Override(k KubePodDisruptionBudgetList, scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodDisruptionBudgetList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodDisruptionBudgetList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodDisruptionBudgetList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudgetList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodDisruptionBudgetList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodDisruptionBudgetList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudgetList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.policy.v1.PodDisruptionBudgetList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodDisruptionBudgetList_Manifest(props *KubePodDisruptionBudgetListProps) interface{} { - _init_.Initialize() - - if err := validateKubePodDisruptionBudgetList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudgetList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodDisruptionBudgetList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodDisruptionBudgetList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodDisruptionBudgetList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodDisruptionBudgetList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodDisruptionBudgetList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodDisruptionBudgetList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodDisruptionBudgetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodDisruptionBudgetList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodDisruptionBudgetList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudgetListProps.go b/pods/imports/k8s/KubePodDisruptionBudgetListProps.go deleted file mode 100644 index c0030f5fb..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudgetListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. -type KubePodDisruptionBudgetListProps struct { - // Items is a list of PodDisruptionBudgets. - Items *[]*KubePodDisruptionBudgetProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go b/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go deleted file mode 100644 index 92ee0cb6c..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudgetList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodDisruptionBudgetList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodDisruptionBudgetList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodDisruptionBudgetList_ManifestParameters(props *KubePodDisruptionBudgetListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodDisruptionBudgetList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodDisruptionBudgetListParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go b/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go deleted file mode 100644 index 61e1865bd..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudgetList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodDisruptionBudgetList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodDisruptionBudgetList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodDisruptionBudgetList_ManifestParameters(props *KubePodDisruptionBudgetListProps) error { - return nil -} - -func validateKubePodDisruptionBudgetList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodDisruptionBudgetListParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudgetProps.go b/pods/imports/k8s/KubePodDisruptionBudgetProps.go deleted file mode 100644 index 13ee18be9..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudgetProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods. -type KubePodDisruptionBudgetProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the PodDisruptionBudget. - Spec *PodDisruptionBudgetSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudget__checks.go b/pods/imports/k8s/KubePodDisruptionBudget__checks.go deleted file mode 100644 index 4839e969f..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudget__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodDisruptionBudget_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodDisruptionBudget_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodDisruptionBudget_ManifestParameters(props *KubePodDisruptionBudgetProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodDisruptionBudget_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodDisruptionBudgetParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go b/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go deleted file mode 100644 index e412aaec6..000000000 --- a/pods/imports/k8s/KubePodDisruptionBudget__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodDisruptionBudget_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodDisruptionBudget_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodDisruptionBudget_ManifestParameters(props *KubePodDisruptionBudgetProps) error { - return nil -} - -func validateKubePodDisruptionBudget_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodDisruptionBudgetParameters(scope constructs.Construct, id *string, props *KubePodDisruptionBudgetProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePodList.go b/pods/imports/k8s/KubePodList.go deleted file mode 100644 index 3ee557ad7..000000000 --- a/pods/imports/k8s/KubePodList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodList is a list of Pods. -type KubePodList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodList -type jsiiProxy_KubePodList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PodList" API object. -func NewKubePodList(scope constructs.Construct, id *string, props *KubePodListProps) KubePodList { - _init_.Initialize() - - if err := validateNewKubePodListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodList{} - - _jsii_.Create( - "k8s.KubePodList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PodList" API object. -func NewKubePodList_Override(k KubePodList, scope constructs.Construct, id *string, props *KubePodListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodList_Manifest(props *KubePodListProps) interface{} { - _init_.Initialize() - - if err := validateKubePodList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodListProps.go b/pods/imports/k8s/KubePodListProps.go deleted file mode 100644 index 9a4616969..000000000 --- a/pods/imports/k8s/KubePodListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PodList is a list of Pods. -type KubePodListProps struct { - // List of pods. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md - Items *[]*KubePodProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePodList__checks.go b/pods/imports/k8s/KubePodList__checks.go deleted file mode 100644 index 6524a0ba6..000000000 --- a/pods/imports/k8s/KubePodList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodList_ManifestParameters(props *KubePodListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodListParameters(scope constructs.Construct, id *string, props *KubePodListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodList__no_checks.go b/pods/imports/k8s/KubePodList__no_checks.go deleted file mode 100644 index dd0e9a26d..000000000 --- a/pods/imports/k8s/KubePodList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodList_ManifestParameters(props *KubePodListProps) error { - return nil -} - -func validateKubePodList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodListParameters(scope constructs.Construct, id *string, props *KubePodListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePodProps.go b/pods/imports/k8s/KubePodProps.go deleted file mode 100644 index 4ebec5301..000000000 --- a/pods/imports/k8s/KubePodProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Pod is a collection of containers that can run on a host. -// -// This resource is created by clients and scheduled onto hosts. -type KubePodProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the pod. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *PodSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go deleted file mode 100644 index 7f6fa0a7a..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodSchedulingContextList is a collection of Pod scheduling objects. -type KubePodSchedulingContextListV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodSchedulingContextListV1Alpha3 -type jsiiProxy_KubePodSchedulingContextListV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextListV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContextList" API object. -func NewKubePodSchedulingContextListV1Alpha3(scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) KubePodSchedulingContextListV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubePodSchedulingContextListV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodSchedulingContextListV1Alpha3{} - - _jsii_.Create( - "k8s.KubePodSchedulingContextListV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContextList" API object. -func NewKubePodSchedulingContextListV1Alpha3_Override(k KubePodSchedulingContextListV1Alpha3, scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodSchedulingContextListV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodSchedulingContextListV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodSchedulingContextListV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextListV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodSchedulingContextListV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodSchedulingContextListV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextListV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.PodSchedulingContextList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodSchedulingContextListV1Alpha3_Manifest(props *KubePodSchedulingContextListV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubePodSchedulingContextListV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextListV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodSchedulingContextListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodSchedulingContextListV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextListV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodSchedulingContextListV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodSchedulingContextListV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodSchedulingContextListV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go deleted file mode 100644 index c3f9b7198..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// PodSchedulingContextList is a collection of Pod scheduling objects. -type KubePodSchedulingContextListV1Alpha3Props struct { - // Items is the list of PodSchedulingContext objects. - Items *[]*KubePodSchedulingContextV1Alpha3Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go deleted file mode 100644 index a93c5f02d..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodSchedulingContextListV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodSchedulingContextListV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodSchedulingContextListV1Alpha3_ManifestParameters(props *KubePodSchedulingContextListV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodSchedulingContextListV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodSchedulingContextListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go b/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go deleted file mode 100644 index 22c795eb4..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextListV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodSchedulingContextListV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodSchedulingContextListV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodSchedulingContextListV1Alpha3_ManifestParameters(props *KubePodSchedulingContextListV1Alpha3Props) error { - return nil -} - -func validateKubePodSchedulingContextListV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodSchedulingContextListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextListV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go deleted file mode 100644 index c08433e8a..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode. -// -// This is an alpha type and requires enabling the DRAControlPlaneController feature gate. -type KubePodSchedulingContextV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodSchedulingContextV1Alpha3 -type jsiiProxy_KubePodSchedulingContextV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodSchedulingContextV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContext" API object. -func NewKubePodSchedulingContextV1Alpha3(scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) KubePodSchedulingContextV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubePodSchedulingContextV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodSchedulingContextV1Alpha3{} - - _jsii_.Create( - "k8s.KubePodSchedulingContextV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.PodSchedulingContext" API object. -func NewKubePodSchedulingContextV1Alpha3_Override(k KubePodSchedulingContextV1Alpha3, scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodSchedulingContextV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodSchedulingContextV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodSchedulingContextV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodSchedulingContextV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodSchedulingContextV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.PodSchedulingContext". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodSchedulingContextV1Alpha3_Manifest(props *KubePodSchedulingContextV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubePodSchedulingContextV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodSchedulingContextV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodSchedulingContextV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodSchedulingContextV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodSchedulingContextV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodSchedulingContextV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodSchedulingContextV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go deleted file mode 100644 index 089c9a1ac..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode. -// -// This is an alpha type and requires enabling the DRAControlPlaneController feature gate. -type KubePodSchedulingContextV1Alpha3Props struct { - // Spec describes where resources for the Pod are needed. - Spec *PodSchedulingContextSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go deleted file mode 100644 index c81cb3989..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodSchedulingContextV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodSchedulingContextV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodSchedulingContextV1Alpha3_ManifestParameters(props *KubePodSchedulingContextV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodSchedulingContextV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodSchedulingContextV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go b/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go deleted file mode 100644 index 4fa76cad5..000000000 --- a/pods/imports/k8s/KubePodSchedulingContextV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodSchedulingContextV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodSchedulingContextV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodSchedulingContextV1Alpha3_ManifestParameters(props *KubePodSchedulingContextV1Alpha3Props) error { - return nil -} - -func validateKubePodSchedulingContextV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodSchedulingContextV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubePodSchedulingContextV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubePodTemplate.go b/pods/imports/k8s/KubePodTemplate.go deleted file mode 100644 index 0116bcc65..000000000 --- a/pods/imports/k8s/KubePodTemplate.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodTemplate describes a template for creating copies of a predefined pod. -type KubePodTemplate interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodTemplate -type jsiiProxy_KubePodTemplate struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodTemplate) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplate) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplate) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplate) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplate) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplate) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplate) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PodTemplate" API object. -func NewKubePodTemplate(scope constructs.Construct, id *string, props *KubePodTemplateProps) KubePodTemplate { - _init_.Initialize() - - if err := validateNewKubePodTemplateParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodTemplate{} - - _jsii_.Create( - "k8s.KubePodTemplate", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PodTemplate" API object. -func NewKubePodTemplate_Override(k KubePodTemplate, scope constructs.Construct, id *string, props *KubePodTemplateProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodTemplate", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodTemplate_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodTemplate_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodTemplate", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodTemplate_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodTemplate_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodTemplate", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodTemplate". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodTemplate_Manifest(props *KubePodTemplateProps) interface{} { - _init_.Initialize() - - if err := validateKubePodTemplate_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodTemplate", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodTemplate_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodTemplate_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodTemplate", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodTemplate_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodTemplate", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodTemplate) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodTemplate) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodTemplate) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodTemplate) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodTemplateList.go b/pods/imports/k8s/KubePodTemplateList.go deleted file mode 100644 index ae3540c7f..000000000 --- a/pods/imports/k8s/KubePodTemplateList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PodTemplateList is a list of PodTemplates. -type KubePodTemplateList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePodTemplateList -type jsiiProxy_KubePodTemplateList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePodTemplateList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplateList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplateList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplateList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplateList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplateList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePodTemplateList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.PodTemplateList" API object. -func NewKubePodTemplateList(scope constructs.Construct, id *string, props *KubePodTemplateListProps) KubePodTemplateList { - _init_.Initialize() - - if err := validateNewKubePodTemplateListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePodTemplateList{} - - _jsii_.Create( - "k8s.KubePodTemplateList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.PodTemplateList" API object. -func NewKubePodTemplateList_Override(k KubePodTemplateList, scope constructs.Construct, id *string, props *KubePodTemplateListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePodTemplateList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePodTemplateList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodTemplateList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodTemplateList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePodTemplateList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePodTemplateList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePodTemplateList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodTemplateList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePodTemplateList_Manifest(props *KubePodTemplateListProps) interface{} { - _init_.Initialize() - - if err := validateKubePodTemplateList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePodTemplateList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePodTemplateList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePodTemplateList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePodTemplateList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePodTemplateList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePodTemplateList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePodTemplateList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePodTemplateList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePodTemplateList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePodTemplateList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePodTemplateListProps.go b/pods/imports/k8s/KubePodTemplateListProps.go deleted file mode 100644 index 3b6da5501..000000000 --- a/pods/imports/k8s/KubePodTemplateListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PodTemplateList is a list of PodTemplates. -type KubePodTemplateListProps struct { - // List of pod templates. - Items *[]*KubePodTemplateProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePodTemplateList__checks.go b/pods/imports/k8s/KubePodTemplateList__checks.go deleted file mode 100644 index d9c4a067f..000000000 --- a/pods/imports/k8s/KubePodTemplateList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodTemplateList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodTemplateList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodTemplateList_ManifestParameters(props *KubePodTemplateListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodTemplateList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodTemplateListParameters(scope constructs.Construct, id *string, props *KubePodTemplateListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodTemplateList__no_checks.go b/pods/imports/k8s/KubePodTemplateList__no_checks.go deleted file mode 100644 index 5e4d028ab..000000000 --- a/pods/imports/k8s/KubePodTemplateList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodTemplateList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodTemplateList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodTemplateList_ManifestParameters(props *KubePodTemplateListProps) error { - return nil -} - -func validateKubePodTemplateList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodTemplateListParameters(scope constructs.Construct, id *string, props *KubePodTemplateListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePodTemplateProps.go b/pods/imports/k8s/KubePodTemplateProps.go deleted file mode 100644 index 772308a9b..000000000 --- a/pods/imports/k8s/KubePodTemplateProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PodTemplate describes a template for creating copies of a predefined pod. -type KubePodTemplateProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Template defines the pods that will be created from this pod template. - // - // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` -} - diff --git a/pods/imports/k8s/KubePodTemplate__checks.go b/pods/imports/k8s/KubePodTemplate__checks.go deleted file mode 100644 index 483487be4..000000000 --- a/pods/imports/k8s/KubePodTemplate__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePodTemplate_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePodTemplate_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePodTemplate_ManifestParameters(props *KubePodTemplateProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePodTemplate_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodTemplateParameters(scope constructs.Construct, id *string, props *KubePodTemplateProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePodTemplate__no_checks.go b/pods/imports/k8s/KubePodTemplate__no_checks.go deleted file mode 100644 index c436668c0..000000000 --- a/pods/imports/k8s/KubePodTemplate__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePodTemplate_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePodTemplate_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePodTemplate_ManifestParameters(props *KubePodTemplateProps) error { - return nil -} - -func validateKubePodTemplate_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodTemplateParameters(scope constructs.Construct, id *string, props *KubePodTemplateProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePod__checks.go b/pods/imports/k8s/KubePod__checks.go deleted file mode 100644 index 9714490bc..000000000 --- a/pods/imports/k8s/KubePod__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePod_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePod_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePod_ManifestParameters(props *KubePodProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePod_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePodParameters(scope constructs.Construct, id *string, props *KubePodProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePod__no_checks.go b/pods/imports/k8s/KubePod__no_checks.go deleted file mode 100644 index 5f55f5f9e..000000000 --- a/pods/imports/k8s/KubePod__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePod_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePod_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePod_ManifestParameters(props *KubePodProps) error { - return nil -} - -func validateKubePod_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePodParameters(scope constructs.Construct, id *string, props *KubePodProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePriorityClass.go b/pods/imports/k8s/KubePriorityClass.go deleted file mode 100644 index 7304c791d..000000000 --- a/pods/imports/k8s/KubePriorityClass.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PriorityClass defines mapping from a priority class name to the priority integer value. -// -// The value can be any valid integer. -type KubePriorityClass interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePriorityClass -type jsiiProxy_KubePriorityClass struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePriorityClass) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClass) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClass) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClass) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClass) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClass) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClass) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.scheduling.v1.PriorityClass" API object. -func NewKubePriorityClass(scope constructs.Construct, id *string, props *KubePriorityClassProps) KubePriorityClass { - _init_.Initialize() - - if err := validateNewKubePriorityClassParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePriorityClass{} - - _jsii_.Create( - "k8s.KubePriorityClass", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.scheduling.v1.PriorityClass" API object. -func NewKubePriorityClass_Override(k KubePriorityClass, scope constructs.Construct, id *string, props *KubePriorityClassProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePriorityClass", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePriorityClass_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityClass_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityClass", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePriorityClass_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityClass_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityClass", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.scheduling.v1.PriorityClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePriorityClass_Manifest(props *KubePriorityClassProps) interface{} { - _init_.Initialize() - - if err := validateKubePriorityClass_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePriorityClass", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePriorityClass_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePriorityClass_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePriorityClass", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePriorityClass_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePriorityClass", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePriorityClass) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePriorityClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePriorityClass) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePriorityClass) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePriorityClassList.go b/pods/imports/k8s/KubePriorityClassList.go deleted file mode 100644 index c425d813f..000000000 --- a/pods/imports/k8s/KubePriorityClassList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PriorityClassList is a collection of priority classes. -type KubePriorityClassList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePriorityClassList -type jsiiProxy_KubePriorityClassList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePriorityClassList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClassList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClassList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClassList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClassList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityClassList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.scheduling.v1.PriorityClassList" API object. -func NewKubePriorityClassList(scope constructs.Construct, id *string, props *KubePriorityClassListProps) KubePriorityClassList { - _init_.Initialize() - - if err := validateNewKubePriorityClassListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePriorityClassList{} - - _jsii_.Create( - "k8s.KubePriorityClassList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.scheduling.v1.PriorityClassList" API object. -func NewKubePriorityClassList_Override(k KubePriorityClassList, scope constructs.Construct, id *string, props *KubePriorityClassListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePriorityClassList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePriorityClassList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityClassList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityClassList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePriorityClassList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityClassList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityClassList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.scheduling.v1.PriorityClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePriorityClassList_Manifest(props *KubePriorityClassListProps) interface{} { - _init_.Initialize() - - if err := validateKubePriorityClassList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePriorityClassList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePriorityClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePriorityClassList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePriorityClassList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePriorityClassList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePriorityClassList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePriorityClassList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePriorityClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePriorityClassList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePriorityClassList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePriorityClassListProps.go b/pods/imports/k8s/KubePriorityClassListProps.go deleted file mode 100644 index 7f017a59f..000000000 --- a/pods/imports/k8s/KubePriorityClassListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// PriorityClassList is a collection of priority classes. -type KubePriorityClassListProps struct { - // items is the list of PriorityClasses. - Items *[]*KubePriorityClassProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePriorityClassList__checks.go b/pods/imports/k8s/KubePriorityClassList__checks.go deleted file mode 100644 index 3127fee8e..000000000 --- a/pods/imports/k8s/KubePriorityClassList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePriorityClassList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityClassList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityClassList_ManifestParameters(props *KubePriorityClassListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePriorityClassList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePriorityClassListParameters(scope constructs.Construct, id *string, props *KubePriorityClassListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePriorityClassList__no_checks.go b/pods/imports/k8s/KubePriorityClassList__no_checks.go deleted file mode 100644 index 241fb9c21..000000000 --- a/pods/imports/k8s/KubePriorityClassList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePriorityClassList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePriorityClassList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePriorityClassList_ManifestParameters(props *KubePriorityClassListProps) error { - return nil -} - -func validateKubePriorityClassList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePriorityClassListParameters(scope constructs.Construct, id *string, props *KubePriorityClassListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePriorityClassProps.go b/pods/imports/k8s/KubePriorityClassProps.go deleted file mode 100644 index c1d1c24f9..000000000 --- a/pods/imports/k8s/KubePriorityClassProps.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// PriorityClass defines mapping from a priority class name to the priority integer value. -// -// The value can be any valid integer. -type KubePriorityClassProps struct { - // value represents the integer value of this priority class. - // - // This is the actual priority that pods receive when they have the name of this class in their pod spec. - Value *float64 `field:"required" json:"value" yaml:"value"` - // description is an arbitrary string that usually provides guidelines on when this priority class should be used. - Description *string `field:"optional" json:"description" yaml:"description"` - // globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. - // - // Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority. - GlobalDefault *bool `field:"optional" json:"globalDefault" yaml:"globalDefault"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // preemptionPolicy is the Policy for preempting pods with lower priority. - // - // One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. - // Default: PreemptLowerPriority if unset. - // - PreemptionPolicy *string `field:"optional" json:"preemptionPolicy" yaml:"preemptionPolicy"` -} - diff --git a/pods/imports/k8s/KubePriorityClass__checks.go b/pods/imports/k8s/KubePriorityClass__checks.go deleted file mode 100644 index 55b8128b2..000000000 --- a/pods/imports/k8s/KubePriorityClass__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePriorityClass_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityClass_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityClass_ManifestParameters(props *KubePriorityClassProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePriorityClass_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePriorityClassParameters(scope constructs.Construct, id *string, props *KubePriorityClassProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePriorityClass__no_checks.go b/pods/imports/k8s/KubePriorityClass__no_checks.go deleted file mode 100644 index 7897f67aa..000000000 --- a/pods/imports/k8s/KubePriorityClass__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePriorityClass_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePriorityClass_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePriorityClass_ManifestParameters(props *KubePriorityClassProps) error { - return nil -} - -func validateKubePriorityClass_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePriorityClassParameters(scope constructs.Construct, id *string, props *KubePriorityClassProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration.go b/pods/imports/k8s/KubePriorityLevelConfiguration.go deleted file mode 100644 index 28c15c725..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfiguration.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PriorityLevelConfiguration represents the configuration of a priority level. -type KubePriorityLevelConfiguration interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePriorityLevelConfiguration -type jsiiProxy_KubePriorityLevelConfiguration struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfiguration) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" API object. -func NewKubePriorityLevelConfiguration(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) KubePriorityLevelConfiguration { - _init_.Initialize() - - if err := validateNewKubePriorityLevelConfigurationParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePriorityLevelConfiguration{} - - _jsii_.Create( - "k8s.KubePriorityLevelConfiguration", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" API object. -func NewKubePriorityLevelConfiguration_Override(k KubePriorityLevelConfiguration, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePriorityLevelConfiguration", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePriorityLevelConfiguration_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfiguration_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfiguration", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePriorityLevelConfiguration_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfiguration_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfiguration", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePriorityLevelConfiguration_Manifest(props *KubePriorityLevelConfigurationProps) interface{} { - _init_.Initialize() - - if err := validateKubePriorityLevelConfiguration_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfiguration", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePriorityLevelConfiguration_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePriorityLevelConfiguration_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfiguration", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePriorityLevelConfiguration_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePriorityLevelConfiguration", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfiguration) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfiguration) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfiguration) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfiguration) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList.go b/pods/imports/k8s/KubePriorityLevelConfigurationList.go deleted file mode 100644 index c0ae06856..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. -type KubePriorityLevelConfigurationList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePriorityLevelConfigurationList -type jsiiProxy_KubePriorityLevelConfigurationList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" API object. -func NewKubePriorityLevelConfigurationList(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) KubePriorityLevelConfigurationList { - _init_.Initialize() - - if err := validateNewKubePriorityLevelConfigurationListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePriorityLevelConfigurationList{} - - _jsii_.Create( - "k8s.KubePriorityLevelConfigurationList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" API object. -func NewKubePriorityLevelConfigurationList_Override(k KubePriorityLevelConfigurationList, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePriorityLevelConfigurationList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePriorityLevelConfigurationList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePriorityLevelConfigurationList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePriorityLevelConfigurationList_Manifest(props *KubePriorityLevelConfigurationListProps) interface{} { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePriorityLevelConfigurationList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePriorityLevelConfigurationList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePriorityLevelConfigurationList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go b/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go deleted file mode 100644 index 05331c000..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. -type KubePriorityLevelConfigurationListProps struct { - // `items` is a list of request-priorities. - Items *[]*KubePriorityLevelConfigurationProps `field:"required" json:"items" yaml:"items"` - // `metadata` is the standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go deleted file mode 100644 index c1c0d3bbe..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. -type KubePriorityLevelConfigurationListV1Beta3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePriorityLevelConfigurationListV1Beta3 -type jsiiProxy_KubePriorityLevelConfigurationListV1Beta3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList" API object. -func NewKubePriorityLevelConfigurationListV1Beta3(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) KubePriorityLevelConfigurationListV1Beta3 { - _init_.Initialize() - - if err := validateNewKubePriorityLevelConfigurationListV1Beta3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePriorityLevelConfigurationListV1Beta3{} - - _jsii_.Create( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList" API object. -func NewKubePriorityLevelConfigurationListV1Beta3_Override(k KubePriorityLevelConfigurationListV1Beta3, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePriorityLevelConfigurationListV1Beta3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationListV1Beta3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePriorityLevelConfigurationListV1Beta3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationListV1Beta3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePriorityLevelConfigurationListV1Beta3_Manifest(props *KubePriorityLevelConfigurationListV1Beta3Props) interface{} { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationListV1Beta3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePriorityLevelConfigurationListV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationListV1Beta3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePriorityLevelConfigurationListV1Beta3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationListV1Beta3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go deleted file mode 100644 index c2e06258a..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. -type KubePriorityLevelConfigurationListV1Beta3Props struct { - // `items` is a list of request-priorities. - Items *[]*KubePriorityLevelConfigurationV1Beta3Props `field:"required" json:"items" yaml:"items"` - // `metadata` is the standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go deleted file mode 100644 index d600b6cc4..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePriorityLevelConfigurationListV1Beta3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfigurationListV1Beta3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfigurationListV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationListV1Beta3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePriorityLevelConfigurationListV1Beta3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePriorityLevelConfigurationListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go deleted file mode 100644 index bf40cca55..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationListV1Beta3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePriorityLevelConfigurationListV1Beta3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePriorityLevelConfigurationListV1Beta3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePriorityLevelConfigurationListV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationListV1Beta3Props) error { - return nil -} - -func validateKubePriorityLevelConfigurationListV1Beta3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePriorityLevelConfigurationListV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListV1Beta3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go deleted file mode 100644 index 1d7259204..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePriorityLevelConfigurationList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfigurationList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfigurationList_ManifestParameters(props *KubePriorityLevelConfigurationListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePriorityLevelConfigurationList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePriorityLevelConfigurationListParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go deleted file mode 100644 index 228d1bdfb..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePriorityLevelConfigurationList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePriorityLevelConfigurationList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePriorityLevelConfigurationList_ManifestParameters(props *KubePriorityLevelConfigurationListProps) error { - return nil -} - -func validateKubePriorityLevelConfigurationList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePriorityLevelConfigurationListParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationProps.go b/pods/imports/k8s/KubePriorityLevelConfigurationProps.go deleted file mode 100644 index e129833a7..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PriorityLevelConfiguration represents the configuration of a priority level. -type KubePriorityLevelConfigurationProps struct { - // `metadata` is the standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // `spec` is the specification of the desired behavior of a "request-priority". - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *PriorityLevelConfigurationSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go deleted file mode 100644 index 283fd39e2..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// PriorityLevelConfiguration represents the configuration of a priority level. -type KubePriorityLevelConfigurationV1Beta3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubePriorityLevelConfigurationV1Beta3 -type jsiiProxy_KubePriorityLevelConfigurationV1Beta3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" API object. -func NewKubePriorityLevelConfigurationV1Beta3(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) KubePriorityLevelConfigurationV1Beta3 { - _init_.Initialize() - - if err := validateNewKubePriorityLevelConfigurationV1Beta3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubePriorityLevelConfigurationV1Beta3{} - - _jsii_.Create( - "k8s.KubePriorityLevelConfigurationV1Beta3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" API object. -func NewKubePriorityLevelConfigurationV1Beta3_Override(k KubePriorityLevelConfigurationV1Beta3, scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubePriorityLevelConfigurationV1Beta3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubePriorityLevelConfigurationV1Beta3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationV1Beta3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationV1Beta3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubePriorityLevelConfigurationV1Beta3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationV1Beta3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationV1Beta3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubePriorityLevelConfigurationV1Beta3_Manifest(props *KubePriorityLevelConfigurationV1Beta3Props) interface{} { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationV1Beta3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationV1Beta3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubePriorityLevelConfigurationV1Beta3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubePriorityLevelConfigurationV1Beta3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubePriorityLevelConfigurationV1Beta3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubePriorityLevelConfigurationV1Beta3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubePriorityLevelConfigurationV1Beta3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubePriorityLevelConfigurationV1Beta3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go deleted file mode 100644 index 9b13d61ac..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PriorityLevelConfiguration represents the configuration of a priority level. -type KubePriorityLevelConfigurationV1Beta3Props struct { - // `metadata` is the standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // `spec` is the specification of the desired behavior of a "request-priority". - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *PriorityLevelConfigurationSpecV1Beta3 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go deleted file mode 100644 index d58bdc619..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePriorityLevelConfigurationV1Beta3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfigurationV1Beta3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfigurationV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationV1Beta3Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePriorityLevelConfigurationV1Beta3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePriorityLevelConfigurationV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go deleted file mode 100644 index e396725b2..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfigurationV1Beta3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePriorityLevelConfigurationV1Beta3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePriorityLevelConfigurationV1Beta3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePriorityLevelConfigurationV1Beta3_ManifestParameters(props *KubePriorityLevelConfigurationV1Beta3Props) error { - return nil -} - -func validateKubePriorityLevelConfigurationV1Beta3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePriorityLevelConfigurationV1Beta3Parameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationV1Beta3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go b/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go deleted file mode 100644 index 07c44ca8a..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfiguration__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubePriorityLevelConfiguration_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfiguration_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubePriorityLevelConfiguration_ManifestParameters(props *KubePriorityLevelConfigurationProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubePriorityLevelConfiguration_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubePriorityLevelConfigurationParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go b/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go deleted file mode 100644 index f5a92c168..000000000 --- a/pods/imports/k8s/KubePriorityLevelConfiguration__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubePriorityLevelConfiguration_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubePriorityLevelConfiguration_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubePriorityLevelConfiguration_ManifestParameters(props *KubePriorityLevelConfigurationProps) error { - return nil -} - -func validateKubePriorityLevelConfiguration_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubePriorityLevelConfigurationParameters(scope constructs.Construct, id *string, props *KubePriorityLevelConfigurationProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeReplicaSet.go b/pods/imports/k8s/KubeReplicaSet.go deleted file mode 100644 index 8a6d1a01f..000000000 --- a/pods/imports/k8s/KubeReplicaSet.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ReplicaSet ensures that a specified number of pod replicas are running at any given time. -type KubeReplicaSet interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeReplicaSet -type jsiiProxy_KubeReplicaSet struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeReplicaSet) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSet) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSet) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSet) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSet) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSet) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSet) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.ReplicaSet" API object. -func NewKubeReplicaSet(scope constructs.Construct, id *string, props *KubeReplicaSetProps) KubeReplicaSet { - _init_.Initialize() - - if err := validateNewKubeReplicaSetParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeReplicaSet{} - - _jsii_.Create( - "k8s.KubeReplicaSet", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.ReplicaSet" API object. -func NewKubeReplicaSet_Override(k KubeReplicaSet, scope constructs.Construct, id *string, props *KubeReplicaSetProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeReplicaSet", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeReplicaSet_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicaSet_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSet", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeReplicaSet_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicaSet_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSet", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ReplicaSet". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeReplicaSet_Manifest(props *KubeReplicaSetProps) interface{} { - _init_.Initialize() - - if err := validateKubeReplicaSet_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSet", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeReplicaSet_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeReplicaSet_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSet", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeReplicaSet_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeReplicaSet", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeReplicaSet) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeReplicaSet) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeReplicaSet) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeReplicaSet) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeReplicaSetList.go b/pods/imports/k8s/KubeReplicaSetList.go deleted file mode 100644 index e11f71b2f..000000000 --- a/pods/imports/k8s/KubeReplicaSetList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ReplicaSetList is a collection of ReplicaSets. -type KubeReplicaSetList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeReplicaSetList -type jsiiProxy_KubeReplicaSetList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeReplicaSetList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSetList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSetList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSetList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSetList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSetList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicaSetList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.ReplicaSetList" API object. -func NewKubeReplicaSetList(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) KubeReplicaSetList { - _init_.Initialize() - - if err := validateNewKubeReplicaSetListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeReplicaSetList{} - - _jsii_.Create( - "k8s.KubeReplicaSetList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.ReplicaSetList" API object. -func NewKubeReplicaSetList_Override(k KubeReplicaSetList, scope constructs.Construct, id *string, props *KubeReplicaSetListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeReplicaSetList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeReplicaSetList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicaSetList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSetList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeReplicaSetList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicaSetList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSetList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ReplicaSetList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeReplicaSetList_Manifest(props *KubeReplicaSetListProps) interface{} { - _init_.Initialize() - - if err := validateKubeReplicaSetList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSetList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeReplicaSetList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeReplicaSetList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeReplicaSetList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeReplicaSetList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeReplicaSetList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeReplicaSetList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeReplicaSetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeReplicaSetList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeReplicaSetList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeReplicaSetListProps.go b/pods/imports/k8s/KubeReplicaSetListProps.go deleted file mode 100644 index fbfa95219..000000000 --- a/pods/imports/k8s/KubeReplicaSetListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ReplicaSetList is a collection of ReplicaSets. -type KubeReplicaSetListProps struct { - // List of ReplicaSets. - // - // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller - Items *[]*KubeReplicaSetProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeReplicaSetList__checks.go b/pods/imports/k8s/KubeReplicaSetList__checks.go deleted file mode 100644 index 36f37f838..000000000 --- a/pods/imports/k8s/KubeReplicaSetList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeReplicaSetList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicaSetList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicaSetList_ManifestParameters(props *KubeReplicaSetListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeReplicaSetList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeReplicaSetListParameters(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeReplicaSetList__no_checks.go b/pods/imports/k8s/KubeReplicaSetList__no_checks.go deleted file mode 100644 index 5ab7a4ebb..000000000 --- a/pods/imports/k8s/KubeReplicaSetList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeReplicaSetList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeReplicaSetList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeReplicaSetList_ManifestParameters(props *KubeReplicaSetListProps) error { - return nil -} - -func validateKubeReplicaSetList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeReplicaSetListParameters(scope constructs.Construct, id *string, props *KubeReplicaSetListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeReplicaSetProps.go b/pods/imports/k8s/KubeReplicaSetProps.go deleted file mode 100644 index 0e1c3fdf5..000000000 --- a/pods/imports/k8s/KubeReplicaSetProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ReplicaSet ensures that a specified number of pod replicas are running at any given time. -type KubeReplicaSetProps struct { - // If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. - // - // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the specification of the desired behavior of the ReplicaSet. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *ReplicaSetSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeReplicaSet__checks.go b/pods/imports/k8s/KubeReplicaSet__checks.go deleted file mode 100644 index 3fb182432..000000000 --- a/pods/imports/k8s/KubeReplicaSet__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeReplicaSet_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicaSet_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicaSet_ManifestParameters(props *KubeReplicaSetProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeReplicaSet_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeReplicaSetParameters(scope constructs.Construct, id *string, props *KubeReplicaSetProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeReplicaSet__no_checks.go b/pods/imports/k8s/KubeReplicaSet__no_checks.go deleted file mode 100644 index 539e53deb..000000000 --- a/pods/imports/k8s/KubeReplicaSet__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeReplicaSet_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeReplicaSet_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeReplicaSet_ManifestParameters(props *KubeReplicaSetProps) error { - return nil -} - -func validateKubeReplicaSet_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeReplicaSetParameters(scope constructs.Construct, id *string, props *KubeReplicaSetProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeReplicationController.go b/pods/imports/k8s/KubeReplicationController.go deleted file mode 100644 index bf295f2af..000000000 --- a/pods/imports/k8s/KubeReplicationController.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ReplicationController represents the configuration of a replication controller. -type KubeReplicationController interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeReplicationController -type jsiiProxy_KubeReplicationController struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeReplicationController) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationController) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationController) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationController) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationController) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationController) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationController) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ReplicationController" API object. -func NewKubeReplicationController(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) KubeReplicationController { - _init_.Initialize() - - if err := validateNewKubeReplicationControllerParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeReplicationController{} - - _jsii_.Create( - "k8s.KubeReplicationController", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ReplicationController" API object. -func NewKubeReplicationController_Override(k KubeReplicationController, scope constructs.Construct, id *string, props *KubeReplicationControllerProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeReplicationController", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeReplicationController_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicationController_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicationController", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeReplicationController_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicationController_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicationController", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ReplicationController". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeReplicationController_Manifest(props *KubeReplicationControllerProps) interface{} { - _init_.Initialize() - - if err := validateKubeReplicationController_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeReplicationController", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeReplicationController_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeReplicationController_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeReplicationController", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeReplicationController_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeReplicationController", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeReplicationController) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeReplicationController) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeReplicationController) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeReplicationController) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeReplicationControllerList.go b/pods/imports/k8s/KubeReplicationControllerList.go deleted file mode 100644 index ea1871545..000000000 --- a/pods/imports/k8s/KubeReplicationControllerList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ReplicationControllerList is a collection of replication controllers. -type KubeReplicationControllerList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeReplicationControllerList -type jsiiProxy_KubeReplicationControllerList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeReplicationControllerList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationControllerList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationControllerList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationControllerList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationControllerList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationControllerList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeReplicationControllerList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ReplicationControllerList" API object. -func NewKubeReplicationControllerList(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) KubeReplicationControllerList { - _init_.Initialize() - - if err := validateNewKubeReplicationControllerListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeReplicationControllerList{} - - _jsii_.Create( - "k8s.KubeReplicationControllerList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ReplicationControllerList" API object. -func NewKubeReplicationControllerList_Override(k KubeReplicationControllerList, scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeReplicationControllerList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeReplicationControllerList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicationControllerList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicationControllerList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeReplicationControllerList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeReplicationControllerList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeReplicationControllerList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ReplicationControllerList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeReplicationControllerList_Manifest(props *KubeReplicationControllerListProps) interface{} { - _init_.Initialize() - - if err := validateKubeReplicationControllerList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeReplicationControllerList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeReplicationControllerList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeReplicationControllerList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeReplicationControllerList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeReplicationControllerList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeReplicationControllerList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeReplicationControllerList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeReplicationControllerList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeReplicationControllerList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeReplicationControllerList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeReplicationControllerListProps.go b/pods/imports/k8s/KubeReplicationControllerListProps.go deleted file mode 100644 index cb9674324..000000000 --- a/pods/imports/k8s/KubeReplicationControllerListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ReplicationControllerList is a collection of replication controllers. -type KubeReplicationControllerListProps struct { - // List of replication controllers. - // - // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller - Items *[]*KubeReplicationControllerProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeReplicationControllerList__checks.go b/pods/imports/k8s/KubeReplicationControllerList__checks.go deleted file mode 100644 index 8d4f7e3bc..000000000 --- a/pods/imports/k8s/KubeReplicationControllerList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeReplicationControllerList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicationControllerList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicationControllerList_ManifestParameters(props *KubeReplicationControllerListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeReplicationControllerList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeReplicationControllerListParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeReplicationControllerList__no_checks.go b/pods/imports/k8s/KubeReplicationControllerList__no_checks.go deleted file mode 100644 index 7246962f7..000000000 --- a/pods/imports/k8s/KubeReplicationControllerList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeReplicationControllerList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeReplicationControllerList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeReplicationControllerList_ManifestParameters(props *KubeReplicationControllerListProps) error { - return nil -} - -func validateKubeReplicationControllerList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeReplicationControllerListParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeReplicationControllerProps.go b/pods/imports/k8s/KubeReplicationControllerProps.go deleted file mode 100644 index a6086573d..000000000 --- a/pods/imports/k8s/KubeReplicationControllerProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ReplicationController represents the configuration of a replication controller. -type KubeReplicationControllerProps struct { - // If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. - // - // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the specification of the desired behavior of the replication controller. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *ReplicationControllerSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeReplicationController__checks.go b/pods/imports/k8s/KubeReplicationController__checks.go deleted file mode 100644 index 279a34a9f..000000000 --- a/pods/imports/k8s/KubeReplicationController__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeReplicationController_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicationController_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeReplicationController_ManifestParameters(props *KubeReplicationControllerProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeReplicationController_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeReplicationControllerParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeReplicationController__no_checks.go b/pods/imports/k8s/KubeReplicationController__no_checks.go deleted file mode 100644 index cd75cd26c..000000000 --- a/pods/imports/k8s/KubeReplicationController__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeReplicationController_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeReplicationController_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeReplicationController_ManifestParameters(props *KubeReplicationControllerProps) error { - return nil -} - -func validateKubeReplicationController_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeReplicationControllerParameters(scope constructs.Construct, id *string, props *KubeReplicationControllerProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go deleted file mode 100644 index d7f7d351c..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceClaimList is a collection of claims. -type KubeResourceClaimListV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceClaimListV1Alpha3 -type jsiiProxy_KubeResourceClaimListV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimListV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimList" API object. -func NewKubeResourceClaimListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) KubeResourceClaimListV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeResourceClaimListV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceClaimListV1Alpha3{} - - _jsii_.Create( - "k8s.KubeResourceClaimListV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimList" API object. -func NewKubeResourceClaimListV1Alpha3_Override(k KubeResourceClaimListV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceClaimListV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimListV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimListV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimListV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimListV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaimList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimListV1Alpha3_Manifest(props *KubeResourceClaimListV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceClaimListV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceClaimListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceClaimListV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimListV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceClaimListV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceClaimListV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceClaimListV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go deleted file mode 100644 index 0bba3d1b0..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ResourceClaimList is a collection of claims. -type KubeResourceClaimListV1Alpha3Props struct { - // Items is the list of resource claims. - Items *[]*KubeResourceClaimV1Alpha3Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go deleted file mode 100644 index 564517f61..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceClaimListV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimListV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimListV1Alpha3_ManifestParameters(props *KubeResourceClaimListV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceClaimListV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceClaimListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go deleted file mode 100644 index bfbef57a4..000000000 --- a/pods/imports/k8s/KubeResourceClaimListV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimListV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimListV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimListV1Alpha3_ManifestParameters(props *KubeResourceClaimListV1Alpha3Props) error { - return nil -} - -func validateKubeResourceClaimListV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimListV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go deleted file mode 100644 index e0891bb89..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceClaimTemplateList is a collection of claim templates. -type KubeResourceClaimTemplateListV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceClaimTemplateListV1Alpha3 -type jsiiProxy_KubeResourceClaimTemplateListV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList" API object. -func NewKubeResourceClaimTemplateListV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) KubeResourceClaimTemplateListV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceClaimTemplateListV1Alpha3{} - - _jsii_.Create( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList" API object. -func NewKubeResourceClaimTemplateListV1Alpha3_Override(k KubeResourceClaimTemplateListV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimTemplateListV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateListV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimTemplateListV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateListV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimTemplateListV1Alpha3_Manifest(props *KubeResourceClaimTemplateListV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateListV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceClaimTemplateListV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceClaimTemplateListV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceClaimTemplateListV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go deleted file mode 100644 index 63a104f9b..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ResourceClaimTemplateList is a collection of claim templates. -type KubeResourceClaimTemplateListV1Alpha3Props struct { - // Items is the list of resource claim templates. - Items *[]*KubeResourceClaimTemplateV1Alpha3Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go deleted file mode 100644 index 4dde6ed62..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceClaimTemplateListV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimTemplateListV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimTemplateListV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateListV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go deleted file mode 100644 index 13c32c654..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateListV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimTemplateListV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateListV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateListV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateListV1Alpha3Props) error { - return nil -} - -func validateKubeResourceClaimTemplateListV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimTemplateListV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateListV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go deleted file mode 100644 index d5bcd2d10..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceClaimTemplate is used to produce ResourceClaim objects. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimTemplateV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceClaimTemplateV1Alpha3 -type jsiiProxy_KubeResourceClaimTemplateV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate" API object. -func NewKubeResourceClaimTemplateV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) KubeResourceClaimTemplateV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceClaimTemplateV1Alpha3{} - - _jsii_.Create( - "k8s.KubeResourceClaimTemplateV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate" API object. -func NewKubeResourceClaimTemplateV1Alpha3_Override(k KubeResourceClaimTemplateV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceClaimTemplateV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimTemplateV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimTemplateV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaimTemplate". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimTemplateV1Alpha3_Manifest(props *KubeResourceClaimTemplateV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceClaimTemplateV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimTemplateV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceClaimTemplateV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceClaimTemplateV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceClaimTemplateV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go deleted file mode 100644 index 84a534528..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ResourceClaimTemplate is used to produce ResourceClaim objects. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimTemplateV1Alpha3Props struct { - // Describes the ResourceClaim that is to be generated. - // - // This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore. - Spec *ResourceClaimTemplateSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go deleted file mode 100644 index 6a2e2623a..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceClaimTemplateV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimTemplateV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimTemplateV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go deleted file mode 100644 index 647885110..000000000 --- a/pods/imports/k8s/KubeResourceClaimTemplateV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimTemplateV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimTemplateV1Alpha3_ManifestParameters(props *KubeResourceClaimTemplateV1Alpha3Props) error { - return nil -} - -func validateKubeResourceClaimTemplateV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimTemplateV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimTemplateV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3.go deleted file mode 100644 index 59babe1a7..000000000 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3.go +++ /dev/null @@ -1,321 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. -// -// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceClaimV1Alpha3 -type jsiiProxy_KubeResourceClaimV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceClaimV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaim" API object. -func NewKubeResourceClaimV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) KubeResourceClaimV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeResourceClaimV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceClaimV1Alpha3{} - - _jsii_.Create( - "k8s.KubeResourceClaimV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceClaim" API object. -func NewKubeResourceClaimV1Alpha3_Override(k KubeResourceClaimV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceClaimV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceClaimV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceClaimV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceClaimV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceClaim". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceClaimV1Alpha3_Manifest(props *KubeResourceClaimV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceClaimV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceClaimV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceClaimV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceClaimV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceClaimV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceClaimV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceClaimV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceClaimV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceClaimV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go deleted file mode 100644 index 3e6127843..000000000 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3Props.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// ResourceClaim describes a request for access to resources in the cluster, for use by workloads. -// -// For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceClaimV1Alpha3Props struct { - // Spec describes what is being requested and how to configure it. - // - // The spec is immutable. - Spec *ResourceClaimSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go deleted file mode 100644 index 2bef07789..000000000 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceClaimV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceClaimV1Alpha3_ManifestParameters(props *KubeResourceClaimV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceClaimV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceClaimV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go deleted file mode 100644 index 4249c9eb4..000000000 --- a/pods/imports/k8s/KubeResourceClaimV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceClaimV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceClaimV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceClaimV1Alpha3_ManifestParameters(props *KubeResourceClaimV1Alpha3Props) error { - return nil -} - -func validateKubeResourceClaimV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceClaimV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceClaimV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceQuota.go b/pods/imports/k8s/KubeResourceQuota.go deleted file mode 100644 index 65a9fa4f1..000000000 --- a/pods/imports/k8s/KubeResourceQuota.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceQuota sets aggregate quota restrictions enforced per namespace. -type KubeResourceQuota interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceQuota -type jsiiProxy_KubeResourceQuota struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceQuota) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuota) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuota) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuota) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuota) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuota) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuota) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ResourceQuota" API object. -func NewKubeResourceQuota(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) KubeResourceQuota { - _init_.Initialize() - - if err := validateNewKubeResourceQuotaParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceQuota{} - - _jsii_.Create( - "k8s.KubeResourceQuota", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ResourceQuota" API object. -func NewKubeResourceQuota_Override(k KubeResourceQuota, scope constructs.Construct, id *string, props *KubeResourceQuotaProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceQuota", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceQuota_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceQuota_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuota", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceQuota_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceQuota_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuota", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ResourceQuota". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceQuota_Manifest(props *KubeResourceQuotaProps) interface{} { - _init_.Initialize() - - if err := validateKubeResourceQuota_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuota", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceQuota_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceQuota_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuota", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceQuota_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceQuota", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceQuota) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceQuota) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceQuota) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceQuota) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceQuotaList.go b/pods/imports/k8s/KubeResourceQuotaList.go deleted file mode 100644 index 96e0a5a8a..000000000 --- a/pods/imports/k8s/KubeResourceQuotaList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceQuotaList is a list of ResourceQuota items. -type KubeResourceQuotaList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceQuotaList -type jsiiProxy_KubeResourceQuotaList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceQuotaList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuotaList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuotaList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuotaList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuotaList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuotaList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceQuotaList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ResourceQuotaList" API object. -func NewKubeResourceQuotaList(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) KubeResourceQuotaList { - _init_.Initialize() - - if err := validateNewKubeResourceQuotaListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceQuotaList{} - - _jsii_.Create( - "k8s.KubeResourceQuotaList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ResourceQuotaList" API object. -func NewKubeResourceQuotaList_Override(k KubeResourceQuotaList, scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceQuotaList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceQuotaList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceQuotaList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuotaList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceQuotaList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceQuotaList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuotaList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ResourceQuotaList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceQuotaList_Manifest(props *KubeResourceQuotaListProps) interface{} { - _init_.Initialize() - - if err := validateKubeResourceQuotaList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuotaList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceQuotaList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceQuotaList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceQuotaList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceQuotaList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceQuotaList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceQuotaList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceQuotaList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceQuotaList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceQuotaList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceQuotaListProps.go b/pods/imports/k8s/KubeResourceQuotaListProps.go deleted file mode 100644 index c9efde984..000000000 --- a/pods/imports/k8s/KubeResourceQuotaListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ResourceQuotaList is a list of ResourceQuota items. -type KubeResourceQuotaListProps struct { - // Items is a list of ResourceQuota objects. - // - // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ - Items *[]*KubeResourceQuotaProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeResourceQuotaList__checks.go b/pods/imports/k8s/KubeResourceQuotaList__checks.go deleted file mode 100644 index c011cb644..000000000 --- a/pods/imports/k8s/KubeResourceQuotaList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceQuotaList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceQuotaList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceQuotaList_ManifestParameters(props *KubeResourceQuotaListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceQuotaList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceQuotaListParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceQuotaList__no_checks.go b/pods/imports/k8s/KubeResourceQuotaList__no_checks.go deleted file mode 100644 index 367e30c2c..000000000 --- a/pods/imports/k8s/KubeResourceQuotaList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceQuotaList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceQuotaList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceQuotaList_ManifestParameters(props *KubeResourceQuotaListProps) error { - return nil -} - -func validateKubeResourceQuotaList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceQuotaListParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceQuotaProps.go b/pods/imports/k8s/KubeResourceQuotaProps.go deleted file mode 100644 index 6f0d5da0a..000000000 --- a/pods/imports/k8s/KubeResourceQuotaProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ResourceQuota sets aggregate quota restrictions enforced per namespace. -type KubeResourceQuotaProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the desired quota. - // - // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *ResourceQuotaSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeResourceQuota__checks.go b/pods/imports/k8s/KubeResourceQuota__checks.go deleted file mode 100644 index c0c977ef1..000000000 --- a/pods/imports/k8s/KubeResourceQuota__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceQuota_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceQuota_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceQuota_ManifestParameters(props *KubeResourceQuotaProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceQuota_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceQuotaParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceQuota__no_checks.go b/pods/imports/k8s/KubeResourceQuota__no_checks.go deleted file mode 100644 index e1c248575..000000000 --- a/pods/imports/k8s/KubeResourceQuota__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceQuota_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceQuota_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceQuota_ManifestParameters(props *KubeResourceQuotaProps) error { - return nil -} - -func validateKubeResourceQuota_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceQuotaParameters(scope constructs.Construct, id *string, props *KubeResourceQuotaProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3.go deleted file mode 100644 index f4b5c155b..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3.go +++ /dev/null @@ -1,329 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. -// -// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. -// -// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . -// -// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. -// -// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. -// -// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceSliceV1Alpha3 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeResourceSliceV1Alpha3 -type jsiiProxy_KubeResourceSliceV1Alpha3 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeResourceSliceV1Alpha3) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceSlice" API object. -func NewKubeResourceSliceV1Alpha3(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) KubeResourceSliceV1Alpha3 { - _init_.Initialize() - - if err := validateNewKubeResourceSliceV1Alpha3Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeResourceSliceV1Alpha3{} - - _jsii_.Create( - "k8s.KubeResourceSliceV1Alpha3", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.resource.v1alpha3.ResourceSlice" API object. -func NewKubeResourceSliceV1Alpha3_Override(k KubeResourceSliceV1Alpha3, scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeResourceSliceV1Alpha3", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeResourceSliceV1Alpha3_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Alpha3_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Alpha3", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeResourceSliceV1Alpha3_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Alpha3_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Alpha3", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha3.ResourceSlice". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeResourceSliceV1Alpha3_Manifest(props *KubeResourceSliceV1Alpha3Props) interface{} { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Alpha3_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Alpha3", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeResourceSliceV1Alpha3_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeResourceSliceV1Alpha3_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeResourceSliceV1Alpha3", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeResourceSliceV1Alpha3_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeResourceSliceV1Alpha3", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeResourceSliceV1Alpha3) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeResourceSliceV1Alpha3) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeResourceSliceV1Alpha3) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeResourceSliceV1Alpha3) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go deleted file mode 100644 index 0ab03da07..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3Props.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. -// -// A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver. -// -// At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , . -// -// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others. -// -// When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool. -// -// For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available. -// -// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate. -type KubeResourceSliceV1Alpha3Props struct { - // Contains the information published by the driver. - // - // Changing the spec automatically increments the metadata.generation number. - Spec *ResourceSliceSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go deleted file mode 100644 index c67b9ced2..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeResourceSliceV1Alpha3_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceSliceV1Alpha3_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeResourceSliceV1Alpha3_ManifestParameters(props *KubeResourceSliceV1Alpha3Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeResourceSliceV1Alpha3_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeResourceSliceV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go b/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go deleted file mode 100644 index 14fc63023..000000000 --- a/pods/imports/k8s/KubeResourceSliceV1Alpha3__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeResourceSliceV1Alpha3_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeResourceSliceV1Alpha3_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeResourceSliceV1Alpha3_ManifestParameters(props *KubeResourceSliceV1Alpha3Props) error { - return nil -} - -func validateKubeResourceSliceV1Alpha3_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeResourceSliceV1Alpha3Parameters(scope constructs.Construct, id *string, props *KubeResourceSliceV1Alpha3Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeRole.go b/pods/imports/k8s/KubeRole.go deleted file mode 100644 index 27912b9e5..000000000 --- a/pods/imports/k8s/KubeRole.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. -type KubeRole interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeRole -type jsiiProxy_KubeRole struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeRole) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRole) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRole) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRole) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRole) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRole) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRole) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.Role" API object. -func NewKubeRole(scope constructs.Construct, id *string, props *KubeRoleProps) KubeRole { - _init_.Initialize() - - if err := validateNewKubeRoleParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeRole{} - - _jsii_.Create( - "k8s.KubeRole", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.Role" API object. -func NewKubeRole_Override(k KubeRole, scope constructs.Construct, id *string, props *KubeRoleProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeRole", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeRole_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRole_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRole", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeRole_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRole_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRole", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.Role". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeRole_Manifest(props *KubeRoleProps) interface{} { - _init_.Initialize() - - if err := validateKubeRole_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeRole", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeRole_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeRole_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeRole", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeRole_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeRole", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeRole) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeRole) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeRole) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeRole) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeRoleBinding.go b/pods/imports/k8s/KubeRoleBinding.go deleted file mode 100644 index a216aa926..000000000 --- a/pods/imports/k8s/KubeRoleBinding.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// RoleBinding references a role, but does not contain it. -// -// It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. -type KubeRoleBinding interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeRoleBinding -type jsiiProxy_KubeRoleBinding struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeRoleBinding) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBinding) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBinding) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBinding) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBinding) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBinding) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.RoleBinding" API object. -func NewKubeRoleBinding(scope constructs.Construct, id *string, props *KubeRoleBindingProps) KubeRoleBinding { - _init_.Initialize() - - if err := validateNewKubeRoleBindingParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeRoleBinding{} - - _jsii_.Create( - "k8s.KubeRoleBinding", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.RoleBinding" API object. -func NewKubeRoleBinding_Override(k KubeRoleBinding, scope constructs.Construct, id *string, props *KubeRoleBindingProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeRoleBinding", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeRoleBinding_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRoleBinding_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRoleBinding", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeRoleBinding_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRoleBinding_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRoleBinding", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleBinding". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeRoleBinding_Manifest(props *KubeRoleBindingProps) interface{} { - _init_.Initialize() - - if err := validateKubeRoleBinding_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeRoleBinding", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeRoleBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeRoleBinding_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeRoleBinding", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeRoleBinding_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeRoleBinding", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeRoleBinding) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeRoleBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeRoleBinding) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeRoleBinding) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeRoleBindingList.go b/pods/imports/k8s/KubeRoleBindingList.go deleted file mode 100644 index fa02ec6a4..000000000 --- a/pods/imports/k8s/KubeRoleBindingList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// RoleBindingList is a collection of RoleBindings. -type KubeRoleBindingList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeRoleBindingList -type jsiiProxy_KubeRoleBindingList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeRoleBindingList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBindingList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBindingList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBindingList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBindingList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBindingList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleBindingList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.RoleBindingList" API object. -func NewKubeRoleBindingList(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) KubeRoleBindingList { - _init_.Initialize() - - if err := validateNewKubeRoleBindingListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeRoleBindingList{} - - _jsii_.Create( - "k8s.KubeRoleBindingList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.RoleBindingList" API object. -func NewKubeRoleBindingList_Override(k KubeRoleBindingList, scope constructs.Construct, id *string, props *KubeRoleBindingListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeRoleBindingList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeRoleBindingList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRoleBindingList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRoleBindingList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeRoleBindingList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRoleBindingList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRoleBindingList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleBindingList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeRoleBindingList_Manifest(props *KubeRoleBindingListProps) interface{} { - _init_.Initialize() - - if err := validateKubeRoleBindingList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeRoleBindingList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeRoleBindingList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeRoleBindingList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeRoleBindingList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeRoleBindingList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeRoleBindingList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeRoleBindingList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeRoleBindingList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeRoleBindingList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeRoleBindingList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeRoleBindingListProps.go b/pods/imports/k8s/KubeRoleBindingListProps.go deleted file mode 100644 index db4566b17..000000000 --- a/pods/imports/k8s/KubeRoleBindingListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// RoleBindingList is a collection of RoleBindings. -type KubeRoleBindingListProps struct { - // Items is a list of RoleBindings. - Items *[]*KubeRoleBindingProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeRoleBindingList__checks.go b/pods/imports/k8s/KubeRoleBindingList__checks.go deleted file mode 100644 index ad0271dee..000000000 --- a/pods/imports/k8s/KubeRoleBindingList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeRoleBindingList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeRoleBindingList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeRoleBindingList_ManifestParameters(props *KubeRoleBindingListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeRoleBindingList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeRoleBindingList__no_checks.go b/pods/imports/k8s/KubeRoleBindingList__no_checks.go deleted file mode 100644 index 92f742358..000000000 --- a/pods/imports/k8s/KubeRoleBindingList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeRoleBindingList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeRoleBindingList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeRoleBindingList_ManifestParameters(props *KubeRoleBindingListProps) error { - return nil -} - -func validateKubeRoleBindingList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeRoleBindingListParameters(scope constructs.Construct, id *string, props *KubeRoleBindingListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeRoleBindingProps.go b/pods/imports/k8s/KubeRoleBindingProps.go deleted file mode 100644 index 9650513f4..000000000 --- a/pods/imports/k8s/KubeRoleBindingProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// RoleBinding references a role, but does not contain it. -// -// It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace. -type KubeRoleBindingProps struct { - // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. - // - // If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable. - RoleRef *RoleRef `field:"required" json:"roleRef" yaml:"roleRef"` - // Standard object's metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Subjects holds references to the objects the role applies to. - Subjects *[]*Subject `field:"optional" json:"subjects" yaml:"subjects"` -} - diff --git a/pods/imports/k8s/KubeRoleBinding__checks.go b/pods/imports/k8s/KubeRoleBinding__checks.go deleted file mode 100644 index 18456a4e3..000000000 --- a/pods/imports/k8s/KubeRoleBinding__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeRoleBinding_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeRoleBinding_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeRoleBinding_ManifestParameters(props *KubeRoleBindingProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeRoleBinding_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeRoleBindingParameters(scope constructs.Construct, id *string, props *KubeRoleBindingProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeRoleBinding__no_checks.go b/pods/imports/k8s/KubeRoleBinding__no_checks.go deleted file mode 100644 index 1b5c7b050..000000000 --- a/pods/imports/k8s/KubeRoleBinding__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeRoleBinding_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeRoleBinding_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeRoleBinding_ManifestParameters(props *KubeRoleBindingProps) error { - return nil -} - -func validateKubeRoleBinding_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeRoleBindingParameters(scope constructs.Construct, id *string, props *KubeRoleBindingProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeRoleList.go b/pods/imports/k8s/KubeRoleList.go deleted file mode 100644 index acd188f1c..000000000 --- a/pods/imports/k8s/KubeRoleList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// RoleList is a collection of Roles. -type KubeRoleList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeRoleList -type jsiiProxy_KubeRoleList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeRoleList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRoleList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.rbac.v1.RoleList" API object. -func NewKubeRoleList(scope constructs.Construct, id *string, props *KubeRoleListProps) KubeRoleList { - _init_.Initialize() - - if err := validateNewKubeRoleListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeRoleList{} - - _jsii_.Create( - "k8s.KubeRoleList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.rbac.v1.RoleList" API object. -func NewKubeRoleList_Override(k KubeRoleList, scope constructs.Construct, id *string, props *KubeRoleListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeRoleList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeRoleList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRoleList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRoleList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeRoleList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRoleList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRoleList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeRoleList_Manifest(props *KubeRoleListProps) interface{} { - _init_.Initialize() - - if err := validateKubeRoleList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeRoleList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeRoleList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeRoleList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeRoleList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeRoleList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeRoleList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeRoleList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeRoleList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeRoleList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeRoleList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeRoleListProps.go b/pods/imports/k8s/KubeRoleListProps.go deleted file mode 100644 index f90d4e5b7..000000000 --- a/pods/imports/k8s/KubeRoleListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// RoleList is a collection of Roles. -type KubeRoleListProps struct { - // Items is a list of Roles. - Items *[]*KubeRoleProps `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeRoleList__checks.go b/pods/imports/k8s/KubeRoleList__checks.go deleted file mode 100644 index ced0b0bbc..000000000 --- a/pods/imports/k8s/KubeRoleList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeRoleList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeRoleList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeRoleList_ManifestParameters(props *KubeRoleListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeRoleList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeRoleListParameters(scope constructs.Construct, id *string, props *KubeRoleListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeRoleList__no_checks.go b/pods/imports/k8s/KubeRoleList__no_checks.go deleted file mode 100644 index 69b766666..000000000 --- a/pods/imports/k8s/KubeRoleList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeRoleList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeRoleList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeRoleList_ManifestParameters(props *KubeRoleListProps) error { - return nil -} - -func validateKubeRoleList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeRoleListParameters(scope constructs.Construct, id *string, props *KubeRoleListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeRoleProps.go b/pods/imports/k8s/KubeRoleProps.go deleted file mode 100644 index 0b089c9d9..000000000 --- a/pods/imports/k8s/KubeRoleProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. -type KubeRoleProps struct { - // Standard object's metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Rules holds all the PolicyRules for this Role. - Rules *[]*PolicyRule `field:"optional" json:"rules" yaml:"rules"` -} - diff --git a/pods/imports/k8s/KubeRole__checks.go b/pods/imports/k8s/KubeRole__checks.go deleted file mode 100644 index 25b759fb7..000000000 --- a/pods/imports/k8s/KubeRole__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeRole_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeRole_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeRole_ManifestParameters(props *KubeRoleProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeRole_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeRoleParameters(scope constructs.Construct, id *string, props *KubeRoleProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeRole__no_checks.go b/pods/imports/k8s/KubeRole__no_checks.go deleted file mode 100644 index 12ff29994..000000000 --- a/pods/imports/k8s/KubeRole__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeRole_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeRole_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeRole_ManifestParameters(props *KubeRoleProps) error { - return nil -} - -func validateKubeRole_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeRoleParameters(scope constructs.Construct, id *string, props *KubeRoleProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeRuntimeClass.go b/pods/imports/k8s/KubeRuntimeClass.go deleted file mode 100644 index 6865c4d97..000000000 --- a/pods/imports/k8s/KubeRuntimeClass.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// RuntimeClass defines a class of container runtime supported in the cluster. -// -// The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/ -type KubeRuntimeClass interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeRuntimeClass -type jsiiProxy_KubeRuntimeClass struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeRuntimeClass) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClass) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClass) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClass) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClass) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClass) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClass) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.node.v1.RuntimeClass" API object. -func NewKubeRuntimeClass(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) KubeRuntimeClass { - _init_.Initialize() - - if err := validateNewKubeRuntimeClassParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeRuntimeClass{} - - _jsii_.Create( - "k8s.KubeRuntimeClass", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.node.v1.RuntimeClass" API object. -func NewKubeRuntimeClass_Override(k KubeRuntimeClass, scope constructs.Construct, id *string, props *KubeRuntimeClassProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeRuntimeClass", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeRuntimeClass_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRuntimeClass_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClass", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeRuntimeClass_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRuntimeClass_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClass", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.node.v1.RuntimeClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeRuntimeClass_Manifest(props *KubeRuntimeClassProps) interface{} { - _init_.Initialize() - - if err := validateKubeRuntimeClass_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClass", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeRuntimeClass_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeRuntimeClass_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClass", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeRuntimeClass_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeRuntimeClass", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeRuntimeClass) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeRuntimeClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeRuntimeClass) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeRuntimeClass) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeRuntimeClassList.go b/pods/imports/k8s/KubeRuntimeClassList.go deleted file mode 100644 index a21677b11..000000000 --- a/pods/imports/k8s/KubeRuntimeClassList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// RuntimeClassList is a list of RuntimeClass objects. -type KubeRuntimeClassList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeRuntimeClassList -type jsiiProxy_KubeRuntimeClassList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeRuntimeClassList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClassList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClassList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClassList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClassList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeRuntimeClassList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.node.v1.RuntimeClassList" API object. -func NewKubeRuntimeClassList(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) KubeRuntimeClassList { - _init_.Initialize() - - if err := validateNewKubeRuntimeClassListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeRuntimeClassList{} - - _jsii_.Create( - "k8s.KubeRuntimeClassList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.node.v1.RuntimeClassList" API object. -func NewKubeRuntimeClassList_Override(k KubeRuntimeClassList, scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeRuntimeClassList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeRuntimeClassList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRuntimeClassList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClassList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeRuntimeClassList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeRuntimeClassList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClassList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.node.v1.RuntimeClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeRuntimeClassList_Manifest(props *KubeRuntimeClassListProps) interface{} { - _init_.Initialize() - - if err := validateKubeRuntimeClassList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClassList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeRuntimeClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeRuntimeClassList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeRuntimeClassList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeRuntimeClassList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeRuntimeClassList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeRuntimeClassList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeRuntimeClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeRuntimeClassList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeRuntimeClassList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeRuntimeClassListProps.go b/pods/imports/k8s/KubeRuntimeClassListProps.go deleted file mode 100644 index 04a16a67d..000000000 --- a/pods/imports/k8s/KubeRuntimeClassListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// RuntimeClassList is a list of RuntimeClass objects. -type KubeRuntimeClassListProps struct { - // items is a list of schema objects. - Items *[]*KubeRuntimeClassProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeRuntimeClassList__checks.go b/pods/imports/k8s/KubeRuntimeClassList__checks.go deleted file mode 100644 index 7e2e13732..000000000 --- a/pods/imports/k8s/KubeRuntimeClassList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeRuntimeClassList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeRuntimeClassList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeRuntimeClassList_ManifestParameters(props *KubeRuntimeClassListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeRuntimeClassList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeRuntimeClassListParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeRuntimeClassList__no_checks.go b/pods/imports/k8s/KubeRuntimeClassList__no_checks.go deleted file mode 100644 index b60decea5..000000000 --- a/pods/imports/k8s/KubeRuntimeClassList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeRuntimeClassList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeRuntimeClassList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeRuntimeClassList_ManifestParameters(props *KubeRuntimeClassListProps) error { - return nil -} - -func validateKubeRuntimeClassList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeRuntimeClassListParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeRuntimeClassProps.go b/pods/imports/k8s/KubeRuntimeClassProps.go deleted file mode 100644 index bb7baaa35..000000000 --- a/pods/imports/k8s/KubeRuntimeClassProps.go +++ /dev/null @@ -1,24 +0,0 @@ -package k8s - - -// RuntimeClass defines a class of container runtime supported in the cluster. -// -// The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod. For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/ -type KubeRuntimeClassProps struct { - // handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. - // - // The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called "runc" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable. - Handler *string `field:"required" json:"handler" yaml:"handler"` - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // overhead represents the resource overhead associated with running a pod for a given RuntimeClass. - // - // For more details, see - // https://kubernetes.io/docs/concepts/scheduling-eviction/pod-overhead/ - Overhead *Overhead `field:"optional" json:"overhead" yaml:"overhead"` - // scheduling holds the scheduling constraints to ensure that pods running with this RuntimeClass are scheduled to nodes that support it. - // - // If scheduling is nil, this RuntimeClass is assumed to be supported by all nodes. - Scheduling *Scheduling `field:"optional" json:"scheduling" yaml:"scheduling"` -} - diff --git a/pods/imports/k8s/KubeRuntimeClass__checks.go b/pods/imports/k8s/KubeRuntimeClass__checks.go deleted file mode 100644 index 9bb23dfd6..000000000 --- a/pods/imports/k8s/KubeRuntimeClass__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeRuntimeClass_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeRuntimeClass_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeRuntimeClass_ManifestParameters(props *KubeRuntimeClassProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeRuntimeClass_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeRuntimeClassParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeRuntimeClass__no_checks.go b/pods/imports/k8s/KubeRuntimeClass__no_checks.go deleted file mode 100644 index 63c9045a9..000000000 --- a/pods/imports/k8s/KubeRuntimeClass__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeRuntimeClass_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeRuntimeClass_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeRuntimeClass_ManifestParameters(props *KubeRuntimeClassProps) error { - return nil -} - -func validateKubeRuntimeClass_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeRuntimeClassParameters(scope constructs.Construct, id *string, props *KubeRuntimeClassProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeScale.go b/pods/imports/k8s/KubeScale.go deleted file mode 100644 index aba5f6023..000000000 --- a/pods/imports/k8s/KubeScale.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Scale represents a scaling request for a resource. -type KubeScale interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeScale -type jsiiProxy_KubeScale struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeScale) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeScale) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeScale) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeScale) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeScale) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeScale) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeScale) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.autoscaling.v1.Scale" API object. -func NewKubeScale(scope constructs.Construct, id *string, props *KubeScaleProps) KubeScale { - _init_.Initialize() - - if err := validateNewKubeScaleParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeScale{} - - _jsii_.Create( - "k8s.KubeScale", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.autoscaling.v1.Scale" API object. -func NewKubeScale_Override(k KubeScale, scope constructs.Construct, id *string, props *KubeScaleProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeScale", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeScale_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeScale_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeScale", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeScale_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeScale_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeScale", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.Scale". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeScale_Manifest(props *KubeScaleProps) interface{} { - _init_.Initialize() - - if err := validateKubeScale_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeScale", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeScale_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeScale_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeScale", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeScale_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeScale", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeScale) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeScale) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeScale) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeScale) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeScaleProps.go b/pods/imports/k8s/KubeScaleProps.go deleted file mode 100644 index 0aa506415..000000000 --- a/pods/imports/k8s/KubeScaleProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Scale represents a scaling request for a resource. -type KubeScaleProps struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec defines the behavior of the scale. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. - Spec *ScaleSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeScale__checks.go b/pods/imports/k8s/KubeScale__checks.go deleted file mode 100644 index 0c4c591f7..000000000 --- a/pods/imports/k8s/KubeScale__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeScale_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeScale_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeScale_ManifestParameters(props *KubeScaleProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeScale_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeScaleParameters(scope constructs.Construct, id *string, props *KubeScaleProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeScale__no_checks.go b/pods/imports/k8s/KubeScale__no_checks.go deleted file mode 100644 index 3afdbbf79..000000000 --- a/pods/imports/k8s/KubeScale__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeScale_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeScale_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeScale_ManifestParameters(props *KubeScaleProps) error { - return nil -} - -func validateKubeScale_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeScaleParameters(scope constructs.Construct, id *string, props *KubeScaleProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSecret.go b/pods/imports/k8s/KubeSecret.go deleted file mode 100644 index ab4b963aa..000000000 --- a/pods/imports/k8s/KubeSecret.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Secret holds secret data of a certain type. -// -// The total bytes of the values in the Data field must be less than MaxSecretSize bytes. -type KubeSecret interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSecret -type jsiiProxy_KubeSecret struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSecret) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecret) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecret) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecret) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecret) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecret) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecret) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Secret" API object. -func NewKubeSecret(scope constructs.Construct, id *string, props *KubeSecretProps) KubeSecret { - _init_.Initialize() - - if err := validateNewKubeSecretParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSecret{} - - _jsii_.Create( - "k8s.KubeSecret", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Secret" API object. -func NewKubeSecret_Override(k KubeSecret, scope constructs.Construct, id *string, props *KubeSecretProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSecret", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSecret_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSecret_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSecret", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSecret_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSecret_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSecret", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Secret". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSecret_Manifest(props *KubeSecretProps) interface{} { - _init_.Initialize() - - if err := validateKubeSecret_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSecret", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSecret_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSecret_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSecret", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSecret_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSecret", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSecret) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSecret) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSecret) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSecret) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSecretList.go b/pods/imports/k8s/KubeSecretList.go deleted file mode 100644 index 82f346883..000000000 --- a/pods/imports/k8s/KubeSecretList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SecretList is a list of Secret. -type KubeSecretList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSecretList -type jsiiProxy_KubeSecretList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSecretList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecretList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecretList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecretList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecretList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecretList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSecretList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.SecretList" API object. -func NewKubeSecretList(scope constructs.Construct, id *string, props *KubeSecretListProps) KubeSecretList { - _init_.Initialize() - - if err := validateNewKubeSecretListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSecretList{} - - _jsii_.Create( - "k8s.KubeSecretList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.SecretList" API object. -func NewKubeSecretList_Override(k KubeSecretList, scope constructs.Construct, id *string, props *KubeSecretListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSecretList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSecretList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSecretList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSecretList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSecretList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSecretList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSecretList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.SecretList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSecretList_Manifest(props *KubeSecretListProps) interface{} { - _init_.Initialize() - - if err := validateKubeSecretList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSecretList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSecretList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSecretList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSecretList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSecretList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSecretList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSecretList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSecretList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSecretList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSecretList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSecretListProps.go b/pods/imports/k8s/KubeSecretListProps.go deleted file mode 100644 index dc539e8b0..000000000 --- a/pods/imports/k8s/KubeSecretListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// SecretList is a list of Secret. -type KubeSecretListProps struct { - // Items is a list of secret objects. - // - // More info: https://kubernetes.io/docs/concepts/configuration/secret - Items *[]*KubeSecretProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSecretList__checks.go b/pods/imports/k8s/KubeSecretList__checks.go deleted file mode 100644 index fb7ecade4..000000000 --- a/pods/imports/k8s/KubeSecretList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSecretList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSecretList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSecretList_ManifestParameters(props *KubeSecretListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSecretList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSecretListParameters(scope constructs.Construct, id *string, props *KubeSecretListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSecretList__no_checks.go b/pods/imports/k8s/KubeSecretList__no_checks.go deleted file mode 100644 index 7240e5164..000000000 --- a/pods/imports/k8s/KubeSecretList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSecretList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSecretList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSecretList_ManifestParameters(props *KubeSecretListProps) error { - return nil -} - -func validateKubeSecretList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSecretListParameters(scope constructs.Construct, id *string, props *KubeSecretListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSecretProps.go b/pods/imports/k8s/KubeSecretProps.go deleted file mode 100644 index d63426fe3..000000000 --- a/pods/imports/k8s/KubeSecretProps.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// Secret holds secret data of a certain type. -// -// The total bytes of the values in the Data field must be less than MaxSecretSize bytes. -type KubeSecretProps struct { - // Data contains the secret data. - // - // Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4 - Data *map[string]*string `field:"optional" json:"data" yaml:"data"` - // Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). - // - // If not set to true, the field can be modified at any time. Defaulted to nil. - Immutable *bool `field:"optional" json:"immutable" yaml:"immutable"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // stringData allows specifying non-binary secret data in string form. - // - // It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API. - StringData *map[string]*string `field:"optional" json:"stringData" yaml:"stringData"` - // Used to facilitate programmatic handling of secret data. - // - // More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/KubeSecret__checks.go b/pods/imports/k8s/KubeSecret__checks.go deleted file mode 100644 index 15c2bafdb..000000000 --- a/pods/imports/k8s/KubeSecret__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSecret_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSecret_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSecret_ManifestParameters(props *KubeSecretProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSecret_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSecretParameters(scope constructs.Construct, id *string, props *KubeSecretProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSecret__no_checks.go b/pods/imports/k8s/KubeSecret__no_checks.go deleted file mode 100644 index f40d1cbb0..000000000 --- a/pods/imports/k8s/KubeSecret__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSecret_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSecret_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSecret_ManifestParameters(props *KubeSecretProps) error { - return nil -} - -func validateKubeSecret_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSecretParameters(scope constructs.Construct, id *string, props *KubeSecretProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview.go b/pods/imports/k8s/KubeSelfSubjectAccessReview.go deleted file mode 100644 index 4d5249d17..000000000 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SelfSubjectAccessReview checks whether or the current user can perform an action. -// -// Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action -type KubeSelfSubjectAccessReview interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSelfSubjectAccessReview -type jsiiProxy_KubeSelfSubjectAccessReview struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectAccessReview) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authorization.v1.SelfSubjectAccessReview" API object. -func NewKubeSelfSubjectAccessReview(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) KubeSelfSubjectAccessReview { - _init_.Initialize() - - if err := validateNewKubeSelfSubjectAccessReviewParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSelfSubjectAccessReview{} - - _jsii_.Create( - "k8s.KubeSelfSubjectAccessReview", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authorization.v1.SelfSubjectAccessReview" API object. -func NewKubeSelfSubjectAccessReview_Override(k KubeSelfSubjectAccessReview, scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSelfSubjectAccessReview", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSelfSubjectAccessReview_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectAccessReview_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectAccessReview", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSelfSubjectAccessReview_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectAccessReview_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectAccessReview", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SelfSubjectAccessReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSelfSubjectAccessReview_Manifest(props *KubeSelfSubjectAccessReviewProps) interface{} { - _init_.Initialize() - - if err := validateKubeSelfSubjectAccessReview_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectAccessReview", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSelfSubjectAccessReview_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSelfSubjectAccessReview_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectAccessReview", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSelfSubjectAccessReview_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSelfSubjectAccessReview", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectAccessReview) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectAccessReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectAccessReview) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectAccessReview) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go b/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go deleted file mode 100644 index dc4e53a9b..000000000 --- a/pods/imports/k8s/KubeSelfSubjectAccessReviewProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// SelfSubjectAccessReview checks whether or the current user can perform an action. -// -// Not filling in a spec.namespace means "in all namespaces". Self is a special case, because users should always be able to check whether they can perform an action -type KubeSelfSubjectAccessReviewProps struct { - // Spec holds information about the request being evaluated. - // - // user and groups must be empty. - Spec *SelfSubjectAccessReviewSpec `field:"required" json:"spec" yaml:"spec"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go b/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go deleted file mode 100644 index 9e018f1f8..000000000 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSelfSubjectAccessReview_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectAccessReview_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectAccessReview_ManifestParameters(props *KubeSelfSubjectAccessReviewProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSelfSubjectAccessReview_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSelfSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go deleted file mode 100644 index 34cafd6af..000000000 --- a/pods/imports/k8s/KubeSelfSubjectAccessReview__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSelfSubjectAccessReview_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSelfSubjectAccessReview_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSelfSubjectAccessReview_ManifestParameters(props *KubeSelfSubjectAccessReviewProps) error { - return nil -} - -func validateKubeSelfSubjectAccessReview_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSelfSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectAccessReviewProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReview.go b/pods/imports/k8s/KubeSelfSubjectReview.go deleted file mode 100644 index 30614d0cb..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReview.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. -// -// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. -type KubeSelfSubjectReview interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSelfSubjectReview -type jsiiProxy_KubeSelfSubjectReview struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSelfSubjectReview) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReview) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReview) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReview) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReview) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReview) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReview) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authentication.v1.SelfSubjectReview" API object. -func NewKubeSelfSubjectReview(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) KubeSelfSubjectReview { - _init_.Initialize() - - if err := validateNewKubeSelfSubjectReviewParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSelfSubjectReview{} - - _jsii_.Create( - "k8s.KubeSelfSubjectReview", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authentication.v1.SelfSubjectReview" API object. -func NewKubeSelfSubjectReview_Override(k KubeSelfSubjectReview, scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSelfSubjectReview", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSelfSubjectReview_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectReview_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReview", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSelfSubjectReview_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectReview_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReview", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.SelfSubjectReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSelfSubjectReview_Manifest(props *KubeSelfSubjectReviewProps) interface{} { - _init_.Initialize() - - if err := validateKubeSelfSubjectReview_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReview", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSelfSubjectReview_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSelfSubjectReview_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReview", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSelfSubjectReview_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSelfSubjectReview", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectReview) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectReview) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectReview) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewProps.go b/pods/imports/k8s/KubeSelfSubjectReviewProps.go deleted file mode 100644 index c3c9fe931..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. -// -// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. -type KubeSelfSubjectReviewProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go deleted file mode 100644 index d8a9ddc08..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. -// -// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. -type KubeSelfSubjectReviewV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSelfSubjectReviewV1Alpha1 -type jsiiProxy_KubeSelfSubjectReviewV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authentication.v1alpha1.SelfSubjectReview" API object. -func NewKubeSelfSubjectReviewV1Alpha1(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) KubeSelfSubjectReviewV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeSelfSubjectReviewV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSelfSubjectReviewV1Alpha1{} - - _jsii_.Create( - "k8s.KubeSelfSubjectReviewV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authentication.v1alpha1.SelfSubjectReview" API object. -func NewKubeSelfSubjectReviewV1Alpha1_Override(k KubeSelfSubjectReviewV1Alpha1, scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSelfSubjectReviewV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSelfSubjectReviewV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSelfSubjectReviewV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1alpha1.SelfSubjectReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSelfSubjectReviewV1Alpha1_Manifest(props *KubeSelfSubjectReviewV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSelfSubjectReviewV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSelfSubjectReviewV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSelfSubjectReviewV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go deleted file mode 100644 index b12e5c275..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. -// -// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. -type KubeSelfSubjectReviewV1Alpha1Props struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go deleted file mode 100644 index 3ef9a2b74..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSelfSubjectReviewV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectReviewV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectReviewV1Alpha1_ManifestParameters(props *KubeSelfSubjectReviewV1Alpha1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSelfSubjectReviewV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSelfSubjectReviewV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go deleted file mode 100644 index 67731034b..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSelfSubjectReviewV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSelfSubjectReviewV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSelfSubjectReviewV1Alpha1_ManifestParameters(props *KubeSelfSubjectReviewV1Alpha1Props) error { - return nil -} - -func validateKubeSelfSubjectReviewV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSelfSubjectReviewV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go deleted file mode 100644 index 60023571c..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. -// -// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. -type KubeSelfSubjectReviewV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSelfSubjectReviewV1Beta1 -type jsiiProxy_KubeSelfSubjectReviewV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectReviewV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authentication.v1beta1.SelfSubjectReview" API object. -func NewKubeSelfSubjectReviewV1Beta1(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) KubeSelfSubjectReviewV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSelfSubjectReviewV1Beta1{} - - _jsii_.Create( - "k8s.KubeSelfSubjectReviewV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authentication.v1beta1.SelfSubjectReview" API object. -func NewKubeSelfSubjectReviewV1Beta1_Override(k KubeSelfSubjectReviewV1Beta1, scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSelfSubjectReviewV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSelfSubjectReviewV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSelfSubjectReviewV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1beta1.SelfSubjectReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSelfSubjectReviewV1Beta1_Manifest(props *KubeSelfSubjectReviewV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSelfSubjectReviewV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSelfSubjectReviewV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectReviewV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSelfSubjectReviewV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSelfSubjectReviewV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectReviewV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go deleted file mode 100644 index 5d6b8d4ea..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. -// -// When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. -type KubeSelfSubjectReviewV1Beta1Props struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go deleted file mode 100644 index 1ea7bb36e..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSelfSubjectReviewV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectReviewV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectReviewV1Beta1_ManifestParameters(props *KubeSelfSubjectReviewV1Beta1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSelfSubjectReviewV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go deleted file mode 100644 index 3330d63f4..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReviewV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSelfSubjectReviewV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSelfSubjectReviewV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSelfSubjectReviewV1Beta1_ManifestParameters(props *KubeSelfSubjectReviewV1Beta1Props) error { - return nil -} - -func validateKubeSelfSubjectReviewV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSelfSubjectReviewV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReview__checks.go b/pods/imports/k8s/KubeSelfSubjectReview__checks.go deleted file mode 100644 index 6d3c9cc6a..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReview__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSelfSubjectReview_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectReview_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectReview_ManifestParameters(props *KubeSelfSubjectReviewProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSelfSubjectReview_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSelfSubjectReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go deleted file mode 100644 index a67744f43..000000000 --- a/pods/imports/k8s/KubeSelfSubjectReview__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSelfSubjectReview_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSelfSubjectReview_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSelfSubjectReview_ManifestParameters(props *KubeSelfSubjectReviewProps) error { - return nil -} - -func validateKubeSelfSubjectReview_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSelfSubjectReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectReviewProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview.go b/pods/imports/k8s/KubeSelfSubjectRulesReview.go deleted file mode 100644 index 7241dde15..000000000 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. -// -// The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. -type KubeSelfSubjectRulesReview interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSelfSubjectRulesReview -type jsiiProxy_KubeSelfSubjectRulesReview struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSelfSubjectRulesReview) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authorization.v1.SelfSubjectRulesReview" API object. -func NewKubeSelfSubjectRulesReview(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) KubeSelfSubjectRulesReview { - _init_.Initialize() - - if err := validateNewKubeSelfSubjectRulesReviewParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSelfSubjectRulesReview{} - - _jsii_.Create( - "k8s.KubeSelfSubjectRulesReview", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authorization.v1.SelfSubjectRulesReview" API object. -func NewKubeSelfSubjectRulesReview_Override(k KubeSelfSubjectRulesReview, scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSelfSubjectRulesReview", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSelfSubjectRulesReview_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectRulesReview_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectRulesReview", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSelfSubjectRulesReview_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSelfSubjectRulesReview_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectRulesReview", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SelfSubjectRulesReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSelfSubjectRulesReview_Manifest(props *KubeSelfSubjectRulesReviewProps) interface{} { - _init_.Initialize() - - if err := validateKubeSelfSubjectRulesReview_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectRulesReview", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSelfSubjectRulesReview_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSelfSubjectRulesReview_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSelfSubjectRulesReview", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSelfSubjectRulesReview_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSelfSubjectRulesReview", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectRulesReview) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectRulesReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSelfSubjectRulesReview) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSelfSubjectRulesReview) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go b/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go deleted file mode 100644 index 5853b1590..000000000 --- a/pods/imports/k8s/KubeSelfSubjectRulesReviewProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. -// -// The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. -type KubeSelfSubjectRulesReviewProps struct { - // Spec holds information about the request being evaluated. - Spec *SelfSubjectRulesReviewSpec `field:"required" json:"spec" yaml:"spec"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go b/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go deleted file mode 100644 index 2cf52f9ba..000000000 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSelfSubjectRulesReview_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectRulesReview_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSelfSubjectRulesReview_ManifestParameters(props *KubeSelfSubjectRulesReviewProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSelfSubjectRulesReview_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSelfSubjectRulesReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go b/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go deleted file mode 100644 index 8617c9320..000000000 --- a/pods/imports/k8s/KubeSelfSubjectRulesReview__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSelfSubjectRulesReview_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSelfSubjectRulesReview_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSelfSubjectRulesReview_ManifestParameters(props *KubeSelfSubjectRulesReviewProps) error { - return nil -} - -func validateKubeSelfSubjectRulesReview_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSelfSubjectRulesReviewParameters(scope constructs.Construct, id *string, props *KubeSelfSubjectRulesReviewProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeService.go b/pods/imports/k8s/KubeService.go deleted file mode 100644 index 143840d8f..000000000 --- a/pods/imports/k8s/KubeService.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. -type KubeService interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeService -type jsiiProxy_KubeService struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeService) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeService) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeService) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeService) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeService) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeService) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeService) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.Service" API object. -func NewKubeService(scope constructs.Construct, id *string, props *KubeServiceProps) KubeService { - _init_.Initialize() - - if err := validateNewKubeServiceParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeService{} - - _jsii_.Create( - "k8s.KubeService", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.Service" API object. -func NewKubeService_Override(k KubeService, scope constructs.Construct, id *string, props *KubeServiceProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeService", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeService_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeService_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeService", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeService_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeService_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeService", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.Service". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeService_Manifest(props *KubeServiceProps) interface{} { - _init_.Initialize() - - if err := validateKubeService_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeService", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeService_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeService_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeService", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeService_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeService", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeService) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeService) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeService) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeService) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeServiceAccount.go b/pods/imports/k8s/KubeServiceAccount.go deleted file mode 100644 index ac6349744..000000000 --- a/pods/imports/k8s/KubeServiceAccount.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets. -type KubeServiceAccount interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeServiceAccount -type jsiiProxy_KubeServiceAccount struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeServiceAccount) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccount) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccount) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccount) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccount) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccount) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccount) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ServiceAccount" API object. -func NewKubeServiceAccount(scope constructs.Construct, id *string, props *KubeServiceAccountProps) KubeServiceAccount { - _init_.Initialize() - - if err := validateNewKubeServiceAccountParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeServiceAccount{} - - _jsii_.Create( - "k8s.KubeServiceAccount", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ServiceAccount" API object. -func NewKubeServiceAccount_Override(k KubeServiceAccount, scope constructs.Construct, id *string, props *KubeServiceAccountProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeServiceAccount", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeServiceAccount_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceAccount_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccount", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeServiceAccount_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceAccount_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccount", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceAccount". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeServiceAccount_Manifest(props *KubeServiceAccountProps) interface{} { - _init_.Initialize() - - if err := validateKubeServiceAccount_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccount", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeServiceAccount_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeServiceAccount_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccount", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeServiceAccount_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeServiceAccount", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeServiceAccount) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeServiceAccount) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeServiceAccount) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeServiceAccount) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeServiceAccountList.go b/pods/imports/k8s/KubeServiceAccountList.go deleted file mode 100644 index fbe1f268e..000000000 --- a/pods/imports/k8s/KubeServiceAccountList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ServiceAccountList is a list of ServiceAccount objects. -type KubeServiceAccountList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeServiceAccountList -type jsiiProxy_KubeServiceAccountList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeServiceAccountList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccountList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccountList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccountList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccountList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccountList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceAccountList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ServiceAccountList" API object. -func NewKubeServiceAccountList(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) KubeServiceAccountList { - _init_.Initialize() - - if err := validateNewKubeServiceAccountListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeServiceAccountList{} - - _jsii_.Create( - "k8s.KubeServiceAccountList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ServiceAccountList" API object. -func NewKubeServiceAccountList_Override(k KubeServiceAccountList, scope constructs.Construct, id *string, props *KubeServiceAccountListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeServiceAccountList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeServiceAccountList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceAccountList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccountList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeServiceAccountList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceAccountList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccountList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceAccountList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeServiceAccountList_Manifest(props *KubeServiceAccountListProps) interface{} { - _init_.Initialize() - - if err := validateKubeServiceAccountList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccountList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeServiceAccountList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeServiceAccountList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeServiceAccountList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeServiceAccountList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeServiceAccountList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeServiceAccountList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeServiceAccountList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeServiceAccountList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeServiceAccountList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeServiceAccountListProps.go b/pods/imports/k8s/KubeServiceAccountListProps.go deleted file mode 100644 index 2237b29e8..000000000 --- a/pods/imports/k8s/KubeServiceAccountListProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ServiceAccountList is a list of ServiceAccount objects. -type KubeServiceAccountListProps struct { - // List of ServiceAccounts. - // - // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - Items *[]*KubeServiceAccountProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeServiceAccountList__checks.go b/pods/imports/k8s/KubeServiceAccountList__checks.go deleted file mode 100644 index b6af31c9a..000000000 --- a/pods/imports/k8s/KubeServiceAccountList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeServiceAccountList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceAccountList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceAccountList_ManifestParameters(props *KubeServiceAccountListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeServiceAccountList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeServiceAccountListParameters(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeServiceAccountList__no_checks.go b/pods/imports/k8s/KubeServiceAccountList__no_checks.go deleted file mode 100644 index 82df03e9c..000000000 --- a/pods/imports/k8s/KubeServiceAccountList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeServiceAccountList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeServiceAccountList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeServiceAccountList_ManifestParameters(props *KubeServiceAccountListProps) error { - return nil -} - -func validateKubeServiceAccountList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeServiceAccountListParameters(scope constructs.Construct, id *string, props *KubeServiceAccountListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeServiceAccountProps.go b/pods/imports/k8s/KubeServiceAccountProps.go deleted file mode 100644 index a0037f5bf..000000000 --- a/pods/imports/k8s/KubeServiceAccountProps.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets. -type KubeServiceAccountProps struct { - // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. - // - // Can be overridden at the pod level. - AutomountServiceAccountToken *bool `field:"optional" json:"automountServiceAccountToken" yaml:"automountServiceAccountToken"` - // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. - // - // ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod - ImagePullSecrets *[]*LocalObjectReference `field:"optional" json:"imagePullSecrets" yaml:"imagePullSecrets"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. - // - // Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret - Secrets *[]*ObjectReference `field:"optional" json:"secrets" yaml:"secrets"` -} - diff --git a/pods/imports/k8s/KubeServiceAccount__checks.go b/pods/imports/k8s/KubeServiceAccount__checks.go deleted file mode 100644 index 0392ed8c1..000000000 --- a/pods/imports/k8s/KubeServiceAccount__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeServiceAccount_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceAccount_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceAccount_ManifestParameters(props *KubeServiceAccountProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeServiceAccount_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeServiceAccountParameters(scope constructs.Construct, id *string, props *KubeServiceAccountProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeServiceAccount__no_checks.go b/pods/imports/k8s/KubeServiceAccount__no_checks.go deleted file mode 100644 index 5a6b42478..000000000 --- a/pods/imports/k8s/KubeServiceAccount__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeServiceAccount_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeServiceAccount_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeServiceAccount_ManifestParameters(props *KubeServiceAccountProps) error { - return nil -} - -func validateKubeServiceAccount_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeServiceAccountParameters(scope constructs.Construct, id *string, props *KubeServiceAccountProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1.go deleted file mode 100644 index b10e1ca84..000000000 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ServiceCIDRList contains a list of ServiceCIDR objects. -type KubeServiceCidrListV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeServiceCidrListV1Beta1 -type jsiiProxy_KubeServiceCidrListV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrListV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDRList" API object. -func NewKubeServiceCidrListV1Beta1(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) KubeServiceCidrListV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeServiceCidrListV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeServiceCidrListV1Beta1{} - - _jsii_.Create( - "k8s.KubeServiceCidrListV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDRList" API object. -func NewKubeServiceCidrListV1Beta1_Override(k KubeServiceCidrListV1Beta1, scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeServiceCidrListV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeServiceCidrListV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceCidrListV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrListV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeServiceCidrListV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceCidrListV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrListV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.ServiceCIDRList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeServiceCidrListV1Beta1_Manifest(props *KubeServiceCidrListV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeServiceCidrListV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrListV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeServiceCidrListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeServiceCidrListV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrListV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeServiceCidrListV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeServiceCidrListV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeServiceCidrListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeServiceCidrListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeServiceCidrListV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeServiceCidrListV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go deleted file mode 100644 index 33b07709c..000000000 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ServiceCIDRList contains a list of ServiceCIDR objects. -type KubeServiceCidrListV1Beta1Props struct { - // items is the list of ServiceCIDRs. - Items *[]*KubeServiceCidrv1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go deleted file mode 100644 index 1fb52b122..000000000 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeServiceCidrListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceCidrListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceCidrListV1Beta1_ManifestParameters(props *KubeServiceCidrListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeServiceCidrListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeServiceCidrListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go b/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go deleted file mode 100644 index 7d88459c6..000000000 --- a/pods/imports/k8s/KubeServiceCidrListV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeServiceCidrListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeServiceCidrListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeServiceCidrListV1Beta1_ManifestParameters(props *KubeServiceCidrListV1Beta1Props) error { - return nil -} - -func validateKubeServiceCidrListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeServiceCidrListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrListV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1.go b/pods/imports/k8s/KubeServiceCidrv1Beta1.go deleted file mode 100644 index 860e51bf6..000000000 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. -type KubeServiceCidrv1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeServiceCidrv1Beta1 -type jsiiProxy_KubeServiceCidrv1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceCidrv1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDR" API object. -func NewKubeServiceCidrv1Beta1(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) KubeServiceCidrv1Beta1 { - _init_.Initialize() - - if err := validateNewKubeServiceCidrv1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeServiceCidrv1Beta1{} - - _jsii_.Create( - "k8s.KubeServiceCidrv1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.networking.v1beta1.ServiceCIDR" API object. -func NewKubeServiceCidrv1Beta1_Override(k KubeServiceCidrv1Beta1, scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeServiceCidrv1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeServiceCidrv1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceCidrv1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrv1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeServiceCidrv1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceCidrv1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrv1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.networking.v1beta1.ServiceCIDR". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeServiceCidrv1Beta1_Manifest(props *KubeServiceCidrv1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeServiceCidrv1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrv1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeServiceCidrv1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeServiceCidrv1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeServiceCidrv1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeServiceCidrv1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeServiceCidrv1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeServiceCidrv1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeServiceCidrv1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeServiceCidrv1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeServiceCidrv1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go b/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go deleted file mode 100644 index 2a583790f..000000000 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1Props.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. -type KubeServiceCidrv1Beta1Props struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // spec is the desired state of the ServiceCIDR. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *ServiceCidrSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go b/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go deleted file mode 100644 index 224876a46..000000000 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeServiceCidrv1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceCidrv1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceCidrv1Beta1_ManifestParameters(props *KubeServiceCidrv1Beta1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeServiceCidrv1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeServiceCidrv1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go b/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go deleted file mode 100644 index 728c58d81..000000000 --- a/pods/imports/k8s/KubeServiceCidrv1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeServiceCidrv1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeServiceCidrv1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeServiceCidrv1Beta1_ManifestParameters(props *KubeServiceCidrv1Beta1Props) error { - return nil -} - -func validateKubeServiceCidrv1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeServiceCidrv1Beta1Parameters(scope constructs.Construct, id *string, props *KubeServiceCidrv1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeServiceList.go b/pods/imports/k8s/KubeServiceList.go deleted file mode 100644 index d281435eb..000000000 --- a/pods/imports/k8s/KubeServiceList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ServiceList holds a list of services. -type KubeServiceList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeServiceList -type jsiiProxy_KubeServiceList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeServiceList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeServiceList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.core.v1.ServiceList" API object. -func NewKubeServiceList(scope constructs.Construct, id *string, props *KubeServiceListProps) KubeServiceList { - _init_.Initialize() - - if err := validateNewKubeServiceListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeServiceList{} - - _jsii_.Create( - "k8s.KubeServiceList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.core.v1.ServiceList" API object. -func NewKubeServiceList_Override(k KubeServiceList, scope constructs.Construct, id *string, props *KubeServiceListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeServiceList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeServiceList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeServiceList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeServiceList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeServiceList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeServiceList_Manifest(props *KubeServiceListProps) interface{} { - _init_.Initialize() - - if err := validateKubeServiceList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeServiceList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeServiceList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeServiceList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeServiceList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeServiceList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeServiceList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeServiceList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeServiceList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeServiceList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeServiceList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeServiceListProps.go b/pods/imports/k8s/KubeServiceListProps.go deleted file mode 100644 index 774a18048..000000000 --- a/pods/imports/k8s/KubeServiceListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ServiceList holds a list of services. -type KubeServiceListProps struct { - // List of services. - Items *[]*KubeServiceProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeServiceList__checks.go b/pods/imports/k8s/KubeServiceList__checks.go deleted file mode 100644 index 31b3291f7..000000000 --- a/pods/imports/k8s/KubeServiceList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeServiceList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeServiceList_ManifestParameters(props *KubeServiceListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeServiceList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeServiceListParameters(scope constructs.Construct, id *string, props *KubeServiceListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeServiceList__no_checks.go b/pods/imports/k8s/KubeServiceList__no_checks.go deleted file mode 100644 index 206daf75e..000000000 --- a/pods/imports/k8s/KubeServiceList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeServiceList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeServiceList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeServiceList_ManifestParameters(props *KubeServiceListProps) error { - return nil -} - -func validateKubeServiceList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeServiceListParameters(scope constructs.Construct, id *string, props *KubeServiceListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeServiceProps.go b/pods/imports/k8s/KubeServiceProps.go deleted file mode 100644 index 000ea7d90..000000000 --- a/pods/imports/k8s/KubeServiceProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. -type KubeServiceProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the behavior of a service. - // - // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *ServiceSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeService__checks.go b/pods/imports/k8s/KubeService__checks.go deleted file mode 100644 index fc5ca84b3..000000000 --- a/pods/imports/k8s/KubeService__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeService_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeService_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeService_ManifestParameters(props *KubeServiceProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeService_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeServiceParameters(scope constructs.Construct, id *string, props *KubeServiceProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeService__no_checks.go b/pods/imports/k8s/KubeService__no_checks.go deleted file mode 100644 index 59ce76c48..000000000 --- a/pods/imports/k8s/KubeService__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeService_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeService_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeService_ManifestParameters(props *KubeServiceProps) error { - return nil -} - -func validateKubeService_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeServiceParameters(scope constructs.Construct, id *string, props *KubeServiceProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStatefulSet.go b/pods/imports/k8s/KubeStatefulSet.go deleted file mode 100644 index ab8484be0..000000000 --- a/pods/imports/k8s/KubeStatefulSet.go +++ /dev/null @@ -1,323 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// StatefulSet represents a set of pods with consistent identities. -// -// Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. -// -// The StatefulSet guarantees that a given network identity will always map to the same storage identity. -type KubeStatefulSet interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStatefulSet -type jsiiProxy_KubeStatefulSet struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStatefulSet) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSet) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSet) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSet) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSet) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSet) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSet) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.StatefulSet" API object. -func NewKubeStatefulSet(scope constructs.Construct, id *string, props *KubeStatefulSetProps) KubeStatefulSet { - _init_.Initialize() - - if err := validateNewKubeStatefulSetParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStatefulSet{} - - _jsii_.Create( - "k8s.KubeStatefulSet", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.StatefulSet" API object. -func NewKubeStatefulSet_Override(k KubeStatefulSet, scope constructs.Construct, id *string, props *KubeStatefulSetProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStatefulSet", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStatefulSet_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStatefulSet_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSet", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStatefulSet_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStatefulSet_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSet", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.StatefulSet". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStatefulSet_Manifest(props *KubeStatefulSetProps) interface{} { - _init_.Initialize() - - if err := validateKubeStatefulSet_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSet", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStatefulSet_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStatefulSet_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSet", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStatefulSet_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStatefulSet", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStatefulSet) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStatefulSet) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStatefulSet) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStatefulSet) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStatefulSetList.go b/pods/imports/k8s/KubeStatefulSetList.go deleted file mode 100644 index 3cf7b670d..000000000 --- a/pods/imports/k8s/KubeStatefulSetList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// StatefulSetList is a collection of StatefulSets. -type KubeStatefulSetList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStatefulSetList -type jsiiProxy_KubeStatefulSetList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStatefulSetList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSetList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSetList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSetList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSetList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSetList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatefulSetList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apps.v1.StatefulSetList" API object. -func NewKubeStatefulSetList(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) KubeStatefulSetList { - _init_.Initialize() - - if err := validateNewKubeStatefulSetListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStatefulSetList{} - - _jsii_.Create( - "k8s.KubeStatefulSetList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apps.v1.StatefulSetList" API object. -func NewKubeStatefulSetList_Override(k KubeStatefulSetList, scope constructs.Construct, id *string, props *KubeStatefulSetListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStatefulSetList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStatefulSetList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStatefulSetList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSetList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStatefulSetList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStatefulSetList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSetList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apps.v1.StatefulSetList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStatefulSetList_Manifest(props *KubeStatefulSetListProps) interface{} { - _init_.Initialize() - - if err := validateKubeStatefulSetList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSetList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStatefulSetList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStatefulSetList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStatefulSetList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStatefulSetList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStatefulSetList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStatefulSetList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStatefulSetList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStatefulSetList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStatefulSetList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStatefulSetListProps.go b/pods/imports/k8s/KubeStatefulSetListProps.go deleted file mode 100644 index 1b8312460..000000000 --- a/pods/imports/k8s/KubeStatefulSetListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// StatefulSetList is a collection of StatefulSets. -type KubeStatefulSetListProps struct { - // Items is the list of stateful sets. - Items *[]*KubeStatefulSetProps `field:"required" json:"items" yaml:"items"` - // Standard list's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeStatefulSetList__checks.go b/pods/imports/k8s/KubeStatefulSetList__checks.go deleted file mode 100644 index 258c076d8..000000000 --- a/pods/imports/k8s/KubeStatefulSetList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStatefulSetList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStatefulSetList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStatefulSetList_ManifestParameters(props *KubeStatefulSetListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStatefulSetList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStatefulSetListParameters(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStatefulSetList__no_checks.go b/pods/imports/k8s/KubeStatefulSetList__no_checks.go deleted file mode 100644 index b427fe8e2..000000000 --- a/pods/imports/k8s/KubeStatefulSetList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStatefulSetList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStatefulSetList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStatefulSetList_ManifestParameters(props *KubeStatefulSetListProps) error { - return nil -} - -func validateKubeStatefulSetList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStatefulSetListParameters(scope constructs.Construct, id *string, props *KubeStatefulSetListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStatefulSetProps.go b/pods/imports/k8s/KubeStatefulSetProps.go deleted file mode 100644 index 6e5e665f5..000000000 --- a/pods/imports/k8s/KubeStatefulSetProps.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// StatefulSet represents a set of pods with consistent identities. -// -// Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. -// -// The StatefulSet guarantees that a given network identity will always map to the same storage identity. -type KubeStatefulSetProps struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Spec defines the desired identities of pods in this set. - Spec *StatefulSetSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeStatefulSet__checks.go b/pods/imports/k8s/KubeStatefulSet__checks.go deleted file mode 100644 index de044d3c0..000000000 --- a/pods/imports/k8s/KubeStatefulSet__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStatefulSet_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStatefulSet_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStatefulSet_ManifestParameters(props *KubeStatefulSetProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStatefulSet_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStatefulSetParameters(scope constructs.Construct, id *string, props *KubeStatefulSetProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStatefulSet__no_checks.go b/pods/imports/k8s/KubeStatefulSet__no_checks.go deleted file mode 100644 index dd1c8486e..000000000 --- a/pods/imports/k8s/KubeStatefulSet__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStatefulSet_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStatefulSet_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStatefulSet_ManifestParameters(props *KubeStatefulSetProps) error { - return nil -} - -func validateKubeStatefulSet_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStatefulSetParameters(scope constructs.Construct, id *string, props *KubeStatefulSetProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStatus.go b/pods/imports/k8s/KubeStatus.go deleted file mode 100644 index b7e59409c..000000000 --- a/pods/imports/k8s/KubeStatus.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Status is a return value for calls that don't return other objects. -type KubeStatus interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStatus -type jsiiProxy_KubeStatus struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStatus) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatus) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatus) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatus) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatus) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatus) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStatus) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.apimachinery.pkg.apis.meta.v1.Status" API object. -func NewKubeStatus(scope constructs.Construct, id *string, props *KubeStatusProps) KubeStatus { - _init_.Initialize() - - if err := validateNewKubeStatusParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStatus{} - - _jsii_.Create( - "k8s.KubeStatus", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.apimachinery.pkg.apis.meta.v1.Status" API object. -func NewKubeStatus_Override(k KubeStatus, scope constructs.Construct, id *string, props *KubeStatusProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStatus", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStatus_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStatus_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStatus", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStatus_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStatus_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStatus", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.apimachinery.pkg.apis.meta.v1.Status". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStatus_Manifest(props *KubeStatusProps) interface{} { - _init_.Initialize() - - if err := validateKubeStatus_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStatus", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStatus_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStatus_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStatus", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStatus_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStatus", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStatus) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStatus) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStatus) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStatus) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStatusProps.go b/pods/imports/k8s/KubeStatusProps.go deleted file mode 100644 index 2ce8a8609..000000000 --- a/pods/imports/k8s/KubeStatusProps.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// Status is a return value for calls that don't return other objects. -type KubeStatusProps struct { - // Suggested HTTP return code for this status, 0 if not set. - Code *float64 `field:"optional" json:"code" yaml:"code"` - // Extended data associated with the reason. - // - // Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type. - Details *StatusDetails `field:"optional" json:"details" yaml:"details"` - // A human-readable description of the status of this operation. - Message *string `field:"optional" json:"message" yaml:"message"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` - // A machine-readable description of why this operation is in the "Failure" status. - // - // If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it. - Reason *string `field:"optional" json:"reason" yaml:"reason"` -} - diff --git a/pods/imports/k8s/KubeStatus__checks.go b/pods/imports/k8s/KubeStatus__checks.go deleted file mode 100644 index 9165c9c9e..000000000 --- a/pods/imports/k8s/KubeStatus__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStatus_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStatus_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStatus_ManifestParameters(props *KubeStatusProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStatus_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStatusParameters(scope constructs.Construct, id *string, props *KubeStatusProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStatus__no_checks.go b/pods/imports/k8s/KubeStatus__no_checks.go deleted file mode 100644 index fc92ca2ed..000000000 --- a/pods/imports/k8s/KubeStatus__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStatus_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStatus_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStatus_ManifestParameters(props *KubeStatusProps) error { - return nil -} - -func validateKubeStatus_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStatusParameters(scope constructs.Construct, id *string, props *KubeStatusProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStorageClass.go b/pods/imports/k8s/KubeStorageClass.go deleted file mode 100644 index ae2d831e2..000000000 --- a/pods/imports/k8s/KubeStorageClass.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned. -// -// StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name. -type KubeStorageClass interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStorageClass -type jsiiProxy_KubeStorageClass struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStorageClass) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClass) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClass) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClass) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClass) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClass) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClass) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.StorageClass" API object. -func NewKubeStorageClass(scope constructs.Construct, id *string, props *KubeStorageClassProps) KubeStorageClass { - _init_.Initialize() - - if err := validateNewKubeStorageClassParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStorageClass{} - - _jsii_.Create( - "k8s.KubeStorageClass", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.StorageClass" API object. -func NewKubeStorageClass_Override(k KubeStorageClass, scope constructs.Construct, id *string, props *KubeStorageClassProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStorageClass", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStorageClass_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageClass_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageClass", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStorageClass_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageClass_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageClass", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStorageClass_Manifest(props *KubeStorageClassProps) interface{} { - _init_.Initialize() - - if err := validateKubeStorageClass_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStorageClass", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStorageClass_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStorageClass_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStorageClass", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStorageClass_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStorageClass", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStorageClass) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStorageClass) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStorageClass) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStorageClass) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStorageClassList.go b/pods/imports/k8s/KubeStorageClassList.go deleted file mode 100644 index c7c823bd0..000000000 --- a/pods/imports/k8s/KubeStorageClassList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// StorageClassList is a collection of storage classes. -type KubeStorageClassList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStorageClassList -type jsiiProxy_KubeStorageClassList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStorageClassList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClassList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClassList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClassList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClassList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClassList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageClassList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.StorageClassList" API object. -func NewKubeStorageClassList(scope constructs.Construct, id *string, props *KubeStorageClassListProps) KubeStorageClassList { - _init_.Initialize() - - if err := validateNewKubeStorageClassListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStorageClassList{} - - _jsii_.Create( - "k8s.KubeStorageClassList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.StorageClassList" API object. -func NewKubeStorageClassList_Override(k KubeStorageClassList, scope constructs.Construct, id *string, props *KubeStorageClassListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStorageClassList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStorageClassList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageClassList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageClassList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStorageClassList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageClassList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageClassList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStorageClassList_Manifest(props *KubeStorageClassListProps) interface{} { - _init_.Initialize() - - if err := validateKubeStorageClassList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStorageClassList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStorageClassList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStorageClassList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStorageClassList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStorageClassList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStorageClassList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStorageClassList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStorageClassList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStorageClassList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStorageClassList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStorageClassListProps.go b/pods/imports/k8s/KubeStorageClassListProps.go deleted file mode 100644 index db38e7303..000000000 --- a/pods/imports/k8s/KubeStorageClassListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// StorageClassList is a collection of storage classes. -type KubeStorageClassListProps struct { - // items is the list of StorageClasses. - Items *[]*KubeStorageClassProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeStorageClassList__checks.go b/pods/imports/k8s/KubeStorageClassList__checks.go deleted file mode 100644 index 488b17a70..000000000 --- a/pods/imports/k8s/KubeStorageClassList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStorageClassList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageClassList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageClassList_ManifestParameters(props *KubeStorageClassListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStorageClassList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStorageClassListParameters(scope constructs.Construct, id *string, props *KubeStorageClassListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStorageClassList__no_checks.go b/pods/imports/k8s/KubeStorageClassList__no_checks.go deleted file mode 100644 index de4fb5efe..000000000 --- a/pods/imports/k8s/KubeStorageClassList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStorageClassList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStorageClassList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStorageClassList_ManifestParameters(props *KubeStorageClassListProps) error { - return nil -} - -func validateKubeStorageClassList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStorageClassListParameters(scope constructs.Construct, id *string, props *KubeStorageClassListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStorageClassProps.go b/pods/imports/k8s/KubeStorageClassProps.go deleted file mode 100644 index 008b38e33..000000000 --- a/pods/imports/k8s/KubeStorageClassProps.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned. -// -// StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name. -type KubeStorageClassProps struct { - // provisioner indicates the type of the provisioner. - Provisioner *string `field:"required" json:"provisioner" yaml:"provisioner"` - // allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. - // - // Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature. - AllowedTopologies *[]*TopologySelectorTerm `field:"optional" json:"allowedTopologies" yaml:"allowedTopologies"` - // allowVolumeExpansion shows whether the storage class allow volume expand. - AllowVolumeExpansion *bool `field:"optional" json:"allowVolumeExpansion" yaml:"allowVolumeExpansion"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. - // - // e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid. - MountOptions *[]*string `field:"optional" json:"mountOptions" yaml:"mountOptions"` - // parameters holds the parameters for the provisioner that should create volumes of this storage class. - Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` - // reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. - // - // Defaults to Delete. - // Default: Delete. - // - ReclaimPolicy *string `field:"optional" json:"reclaimPolicy" yaml:"reclaimPolicy"` - // volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. - // - // When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature. - VolumeBindingMode *string `field:"optional" json:"volumeBindingMode" yaml:"volumeBindingMode"` -} - diff --git a/pods/imports/k8s/KubeStorageClass__checks.go b/pods/imports/k8s/KubeStorageClass__checks.go deleted file mode 100644 index db7916a34..000000000 --- a/pods/imports/k8s/KubeStorageClass__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStorageClass_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageClass_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageClass_ManifestParameters(props *KubeStorageClassProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStorageClass_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStorageClassParameters(scope constructs.Construct, id *string, props *KubeStorageClassProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStorageClass__no_checks.go b/pods/imports/k8s/KubeStorageClass__no_checks.go deleted file mode 100644 index 0496b2157..000000000 --- a/pods/imports/k8s/KubeStorageClass__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStorageClass_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStorageClass_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStorageClass_ManifestParameters(props *KubeStorageClassProps) error { - return nil -} - -func validateKubeStorageClass_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStorageClassParameters(scope constructs.Construct, id *string, props *KubeStorageClassProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go deleted file mode 100644 index 36bf5ed00..000000000 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// A list of StorageVersions. -type KubeStorageVersionListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStorageVersionListV1Alpha1 -type jsiiProxy_KubeStorageVersionListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList" API object. -func NewKubeStorageVersionListV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) KubeStorageVersionListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeStorageVersionListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStorageVersionListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeStorageVersionListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList" API object. -func NewKubeStorageVersionListV1Alpha1_Override(k KubeStorageVersionListV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStorageVersionListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStorageVersionListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStorageVersionListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStorageVersionListV1Alpha1_Manifest(props *KubeStorageVersionListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeStorageVersionListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStorageVersionListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStorageVersionListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStorageVersionListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStorageVersionListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStorageVersionListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go deleted file mode 100644 index 7daad05e1..000000000 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// A list of StorageVersions. -type KubeStorageVersionListV1Alpha1Props struct { - // Items holds a list of StorageVersion. - Items *[]*KubeStorageVersionV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go deleted file mode 100644 index ea6b9a483..000000000 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStorageVersionListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionListV1Alpha1_ManifestParameters(props *KubeStorageVersionListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStorageVersionListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStorageVersionListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go deleted file mode 100644 index 47b08d3a6..000000000 --- a/pods/imports/k8s/KubeStorageVersionListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStorageVersionListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStorageVersionListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStorageVersionListV1Alpha1_ManifestParameters(props *KubeStorageVersionListV1Alpha1Props) error { - return nil -} - -func validateKubeStorageVersionListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStorageVersionListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go deleted file mode 100644 index d3dbf83d6..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// StorageVersionMigrationList is a collection of storage version migrations. -type KubeStorageVersionMigrationListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStorageVersionMigrationListV1Alpha1 -type jsiiProxy_KubeStorageVersionMigrationListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList" API object. -func NewKubeStorageVersionMigrationListV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) KubeStorageVersionMigrationListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStorageVersionMigrationListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList" API object. -func NewKubeStorageVersionMigrationListV1Alpha1_Override(k KubeStorageVersionMigrationListV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStorageVersionMigrationListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStorageVersionMigrationListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStorageVersionMigrationListV1Alpha1_Manifest(props *KubeStorageVersionMigrationListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStorageVersionMigrationListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStorageVersionMigrationListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStorageVersionMigrationListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go deleted file mode 100644 index 7280acefa..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// StorageVersionMigrationList is a collection of storage version migrations. -type KubeStorageVersionMigrationListV1Alpha1Props struct { - // Items is the list of StorageVersionMigration. - Items *[]*KubeStorageVersionMigrationV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go deleted file mode 100644 index 1838571d1..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStorageVersionMigrationListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionMigrationListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionMigrationListV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go deleted file mode 100644 index 095676cb4..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStorageVersionMigrationListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStorageVersionMigrationListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStorageVersionMigrationListV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationListV1Alpha1Props) error { - return nil -} - -func validateKubeStorageVersionMigrationListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStorageVersionMigrationListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go deleted file mode 100644 index f8e9efd4f..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// StorageVersionMigration represents a migration of stored data to the latest storage version. -type KubeStorageVersionMigrationV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStorageVersionMigrationV1Alpha1 -type jsiiProxy_KubeStorageVersionMigrationV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration" API object. -func NewKubeStorageVersionMigrationV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) KubeStorageVersionMigrationV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStorageVersionMigrationV1Alpha1{} - - _jsii_.Create( - "k8s.KubeStorageVersionMigrationV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration" API object. -func NewKubeStorageVersionMigrationV1Alpha1_Override(k KubeStorageVersionMigrationV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStorageVersionMigrationV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStorageVersionMigrationV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStorageVersionMigrationV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStorageVersionMigrationV1Alpha1_Manifest(props *KubeStorageVersionMigrationV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStorageVersionMigrationV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionMigrationV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStorageVersionMigrationV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStorageVersionMigrationV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStorageVersionMigrationV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go deleted file mode 100644 index 3f2696e6d..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// StorageVersionMigration represents a migration of stored data to the latest storage version. -type KubeStorageVersionMigrationV1Alpha1Props struct { - // Standard object metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the migration. - Spec *StorageVersionMigrationSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go deleted file mode 100644 index ba162cba6..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStorageVersionMigrationV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionMigrationV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionMigrationV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationV1Alpha1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go deleted file mode 100644 index 1113d04b1..000000000 --- a/pods/imports/k8s/KubeStorageVersionMigrationV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStorageVersionMigrationV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStorageVersionMigrationV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStorageVersionMigrationV1Alpha1_ManifestParameters(props *KubeStorageVersionMigrationV1Alpha1Props) error { - return nil -} - -func validateKubeStorageVersionMigrationV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStorageVersionMigrationV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionMigrationV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1.go deleted file mode 100644 index 837cda24b..000000000 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// Storage version of a specific resource. -type KubeStorageVersionV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeStorageVersionV1Alpha1 -type jsiiProxy_KubeStorageVersionV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeStorageVersionV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion" API object. -func NewKubeStorageVersionV1Alpha1(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) KubeStorageVersionV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeStorageVersionV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeStorageVersionV1Alpha1{} - - _jsii_.Create( - "k8s.KubeStorageVersionV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion" API object. -func NewKubeStorageVersionV1Alpha1_Override(k KubeStorageVersionV1Alpha1, scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeStorageVersionV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeStorageVersionV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeStorageVersionV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeStorageVersionV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeStorageVersionV1Alpha1_Manifest(props *KubeStorageVersionV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeStorageVersionV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeStorageVersionV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeStorageVersionV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeStorageVersionV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeStorageVersionV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeStorageVersionV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeStorageVersionV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeStorageVersionV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeStorageVersionV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go deleted file mode 100644 index 40328574d..000000000 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Storage version of a specific resource. -type KubeStorageVersionV1Alpha1Props struct { - // Spec is an empty spec. - // - // It is here to comply with Kubernetes API style. - Spec interface{} `field:"required" json:"spec" yaml:"spec"` - // The name is .. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go deleted file mode 100644 index 083ca8201..000000000 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeStorageVersionV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeStorageVersionV1Alpha1_ManifestParameters(props *KubeStorageVersionV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeStorageVersionV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeStorageVersionV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go b/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go deleted file mode 100644 index 8a6251492..000000000 --- a/pods/imports/k8s/KubeStorageVersionV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeStorageVersionV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeStorageVersionV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeStorageVersionV1Alpha1_ManifestParameters(props *KubeStorageVersionV1Alpha1Props) error { - return nil -} - -func validateKubeStorageVersionV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeStorageVersionV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeStorageVersionV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeSubjectAccessReview.go b/pods/imports/k8s/KubeSubjectAccessReview.go deleted file mode 100644 index 7ffaa7d62..000000000 --- a/pods/imports/k8s/KubeSubjectAccessReview.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// SubjectAccessReview checks whether or not a user or group can perform an action. -type KubeSubjectAccessReview interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeSubjectAccessReview -type jsiiProxy_KubeSubjectAccessReview struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeSubjectAccessReview) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSubjectAccessReview) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSubjectAccessReview) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSubjectAccessReview) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSubjectAccessReview) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSubjectAccessReview) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeSubjectAccessReview) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authorization.v1.SubjectAccessReview" API object. -func NewKubeSubjectAccessReview(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) KubeSubjectAccessReview { - _init_.Initialize() - - if err := validateNewKubeSubjectAccessReviewParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeSubjectAccessReview{} - - _jsii_.Create( - "k8s.KubeSubjectAccessReview", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authorization.v1.SubjectAccessReview" API object. -func NewKubeSubjectAccessReview_Override(k KubeSubjectAccessReview, scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeSubjectAccessReview", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeSubjectAccessReview_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSubjectAccessReview_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSubjectAccessReview", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeSubjectAccessReview_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeSubjectAccessReview_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeSubjectAccessReview", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SubjectAccessReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeSubjectAccessReview_Manifest(props *KubeSubjectAccessReviewProps) interface{} { - _init_.Initialize() - - if err := validateKubeSubjectAccessReview_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeSubjectAccessReview", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeSubjectAccessReview_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeSubjectAccessReview_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeSubjectAccessReview", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeSubjectAccessReview_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeSubjectAccessReview", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeSubjectAccessReview) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeSubjectAccessReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeSubjectAccessReview) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeSubjectAccessReview) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeSubjectAccessReviewProps.go b/pods/imports/k8s/KubeSubjectAccessReviewProps.go deleted file mode 100644 index b3a459aaa..000000000 --- a/pods/imports/k8s/KubeSubjectAccessReviewProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// SubjectAccessReview checks whether or not a user or group can perform an action. -type KubeSubjectAccessReviewProps struct { - // Spec holds information about the request being evaluated. - Spec *SubjectAccessReviewSpec `field:"required" json:"spec" yaml:"spec"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeSubjectAccessReview__checks.go b/pods/imports/k8s/KubeSubjectAccessReview__checks.go deleted file mode 100644 index ad4561dc4..000000000 --- a/pods/imports/k8s/KubeSubjectAccessReview__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeSubjectAccessReview_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeSubjectAccessReview_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeSubjectAccessReview_ManifestParameters(props *KubeSubjectAccessReviewProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeSubjectAccessReview_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go b/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go deleted file mode 100644 index 825b66a42..000000000 --- a/pods/imports/k8s/KubeSubjectAccessReview__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeSubjectAccessReview_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeSubjectAccessReview_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeSubjectAccessReview_ManifestParameters(props *KubeSubjectAccessReviewProps) error { - return nil -} - -func validateKubeSubjectAccessReview_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeSubjectAccessReviewParameters(scope constructs.Construct, id *string, props *KubeSubjectAccessReviewProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeTokenRequest.go b/pods/imports/k8s/KubeTokenRequest.go deleted file mode 100644 index 3b35d8ea1..000000000 --- a/pods/imports/k8s/KubeTokenRequest.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// TokenRequest requests a token for a given service account. -type KubeTokenRequest interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeTokenRequest -type jsiiProxy_KubeTokenRequest struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeTokenRequest) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenRequest) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenRequest) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenRequest) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenRequest) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenRequest) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenRequest) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authentication.v1.TokenRequest" API object. -func NewKubeTokenRequest(scope constructs.Construct, id *string, props *KubeTokenRequestProps) KubeTokenRequest { - _init_.Initialize() - - if err := validateNewKubeTokenRequestParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeTokenRequest{} - - _jsii_.Create( - "k8s.KubeTokenRequest", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authentication.v1.TokenRequest" API object. -func NewKubeTokenRequest_Override(k KubeTokenRequest, scope constructs.Construct, id *string, props *KubeTokenRequestProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeTokenRequest", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeTokenRequest_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeTokenRequest_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeTokenRequest", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeTokenRequest_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeTokenRequest_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeTokenRequest", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.TokenRequest". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeTokenRequest_Manifest(props *KubeTokenRequestProps) interface{} { - _init_.Initialize() - - if err := validateKubeTokenRequest_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeTokenRequest", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeTokenRequest_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeTokenRequest_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeTokenRequest", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeTokenRequest_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeTokenRequest", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeTokenRequest) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeTokenRequest) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeTokenRequest) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeTokenRequest) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeTokenRequestProps.go b/pods/imports/k8s/KubeTokenRequestProps.go deleted file mode 100644 index d018ce066..000000000 --- a/pods/imports/k8s/KubeTokenRequestProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// TokenRequest requests a token for a given service account. -type KubeTokenRequestProps struct { - // Spec holds information about the request being evaluated. - Spec *TokenRequestSpec `field:"required" json:"spec" yaml:"spec"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeTokenRequest__checks.go b/pods/imports/k8s/KubeTokenRequest__checks.go deleted file mode 100644 index 807c66c9e..000000000 --- a/pods/imports/k8s/KubeTokenRequest__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeTokenRequest_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeTokenRequest_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeTokenRequest_ManifestParameters(props *KubeTokenRequestProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeTokenRequest_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeTokenRequestParameters(scope constructs.Construct, id *string, props *KubeTokenRequestProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeTokenRequest__no_checks.go b/pods/imports/k8s/KubeTokenRequest__no_checks.go deleted file mode 100644 index 6434cbf0e..000000000 --- a/pods/imports/k8s/KubeTokenRequest__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeTokenRequest_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeTokenRequest_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeTokenRequest_ManifestParameters(props *KubeTokenRequestProps) error { - return nil -} - -func validateKubeTokenRequest_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeTokenRequestParameters(scope constructs.Construct, id *string, props *KubeTokenRequestProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeTokenReview.go b/pods/imports/k8s/KubeTokenReview.go deleted file mode 100644 index 0cae23c53..000000000 --- a/pods/imports/k8s/KubeTokenReview.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// TokenReview attempts to authenticate a token to a known user. -// -// Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. -type KubeTokenReview interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeTokenReview -type jsiiProxy_KubeTokenReview struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeTokenReview) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenReview) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenReview) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenReview) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenReview) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenReview) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeTokenReview) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.authentication.v1.TokenReview" API object. -func NewKubeTokenReview(scope constructs.Construct, id *string, props *KubeTokenReviewProps) KubeTokenReview { - _init_.Initialize() - - if err := validateNewKubeTokenReviewParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeTokenReview{} - - _jsii_.Create( - "k8s.KubeTokenReview", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.authentication.v1.TokenReview" API object. -func NewKubeTokenReview_Override(k KubeTokenReview, scope constructs.Construct, id *string, props *KubeTokenReviewProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeTokenReview", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeTokenReview_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeTokenReview_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeTokenReview", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeTokenReview_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeTokenReview_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeTokenReview", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.TokenReview". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeTokenReview_Manifest(props *KubeTokenReviewProps) interface{} { - _init_.Initialize() - - if err := validateKubeTokenReview_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeTokenReview", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeTokenReview_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeTokenReview_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeTokenReview", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeTokenReview_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeTokenReview", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeTokenReview) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeTokenReview) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeTokenReview) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeTokenReview) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeTokenReviewProps.go b/pods/imports/k8s/KubeTokenReviewProps.go deleted file mode 100644 index 4baf8478a..000000000 --- a/pods/imports/k8s/KubeTokenReviewProps.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// TokenReview attempts to authenticate a token to a known user. -// -// Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. -type KubeTokenReviewProps struct { - // Spec holds information about the request being evaluated. - Spec *TokenReviewSpec `field:"required" json:"spec" yaml:"spec"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeTokenReview__checks.go b/pods/imports/k8s/KubeTokenReview__checks.go deleted file mode 100644 index 2f5538b8a..000000000 --- a/pods/imports/k8s/KubeTokenReview__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeTokenReview_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeTokenReview_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeTokenReview_ManifestParameters(props *KubeTokenReviewProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeTokenReview_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeTokenReviewParameters(scope constructs.Construct, id *string, props *KubeTokenReviewProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeTokenReview__no_checks.go b/pods/imports/k8s/KubeTokenReview__no_checks.go deleted file mode 100644 index f5232f066..000000000 --- a/pods/imports/k8s/KubeTokenReview__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeTokenReview_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeTokenReview_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeTokenReview_ManifestParameters(props *KubeTokenReviewProps) error { - return nil -} - -func validateKubeTokenReview_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeTokenReviewParameters(scope constructs.Construct, id *string, props *KubeTokenReviewProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy.go deleted file mode 100644 index fbf700924..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. -type KubeValidatingAdmissionPolicy interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicy -type jsiiProxy_KubeValidatingAdmissionPolicy struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicy) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy" API object. -func NewKubeValidatingAdmissionPolicy(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) KubeValidatingAdmissionPolicy { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicy{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicy", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy" API object. -func NewKubeValidatingAdmissionPolicy_Override(k KubeValidatingAdmissionPolicy, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicy", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicy_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicy_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicy", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicy_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicy_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicy", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicy_Manifest(props *KubeValidatingAdmissionPolicyProps) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicy_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicy", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicy_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicy_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicy", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicy_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicy", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicy) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicy) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicy) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicy) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go deleted file mode 100644 index 97afae71c..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding.go +++ /dev/null @@ -1,323 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. -// -// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. -// -// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeValidatingAdmissionPolicyBinding interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyBinding -type jsiiProxy_KubeValidatingAdmissionPolicyBinding struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBinding) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding" API object. -func NewKubeValidatingAdmissionPolicyBinding(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) KubeValidatingAdmissionPolicyBinding { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyBindingParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyBinding{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBinding", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding" API object. -func NewKubeValidatingAdmissionPolicyBinding_Override(k KubeValidatingAdmissionPolicyBinding, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBinding", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyBinding_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBinding_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBinding", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyBinding_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBinding_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBinding", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyBinding_Manifest(props *KubeValidatingAdmissionPolicyBindingProps) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBinding_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBinding", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyBinding_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBinding_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBinding", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyBinding_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyBinding", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBinding) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go deleted file mode 100644 index 02d62357e..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. -type KubeValidatingAdmissionPolicyBindingList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingList -type jsiiProxy_KubeValidatingAdmissionPolicyBindingList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList" API object. -func NewKubeValidatingAdmissionPolicyBindingList(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) KubeValidatingAdmissionPolicyBindingList { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingList{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList" API object. -func NewKubeValidatingAdmissionPolicyBindingList_Override(k KubeValidatingAdmissionPolicyBindingList, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyBindingList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyBindingList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyBindingList_Manifest(props *KubeValidatingAdmissionPolicyBindingListProps) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyBindingList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyBindingList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyBindingList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go deleted file mode 100644 index 1b7c7a344..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. -type KubeValidatingAdmissionPolicyBindingListProps struct { - // List of PolicyBinding. - Items *[]*KubeValidatingAdmissionPolicyBindingProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go deleted file mode 100644 index c915a470d..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. -type KubeValidatingAdmissionPolicyBindingListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingListV1Alpha1 -type jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList" API object. -func NewKubeValidatingAdmissionPolicyBindingListV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) KubeValidatingAdmissionPolicyBindingListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyBindingListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList" API object. -func NewKubeValidatingAdmissionPolicyBindingListV1Alpha1_Override(k KubeValidatingAdmissionPolicyBindingListV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyBindingListV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyBindingListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyBindingListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go deleted file mode 100644 index 54293cb44..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. -type KubeValidatingAdmissionPolicyBindingListV1Alpha1Props struct { - // List of PolicyBinding. - Items *[]*KubeValidatingAdmissionPolicyBindingV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go deleted file mode 100644 index 719fe4b2d..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go deleted file mode 100644 index 33c452aac..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go deleted file mode 100644 index f3c205cf0..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. -type KubeValidatingAdmissionPolicyBindingListV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingListV1Beta1 -type jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" API object. -func NewKubeValidatingAdmissionPolicyBindingListV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) KubeValidatingAdmissionPolicyBindingListV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" API object. -func NewKubeValidatingAdmissionPolicyBindingListV1Beta1_Override(k KubeValidatingAdmissionPolicyBindingListV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyBindingListV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyBindingListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyBindingListV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go deleted file mode 100644 index 1fd845775..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. -type KubeValidatingAdmissionPolicyBindingListV1Beta1Props struct { - // List of PolicyBinding. - Items *[]*KubeValidatingAdmissionPolicyBindingV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go deleted file mode 100644 index fce3a813d..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go deleted file mode 100644 index e317f483a..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingListV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go deleted file mode 100644 index aa1489799..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyBindingList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingList_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go deleted file mode 100644 index 83056e929..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyBindingList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingList_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingListProps) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go deleted file mode 100644 index 95e685122..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingProps.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. -// -// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. -// -// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeValidatingAdmissionPolicyBindingProps struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. - Spec *ValidatingAdmissionPolicyBindingSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go deleted file mode 100644 index 4e213851b..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1.go +++ /dev/null @@ -1,323 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. -// -// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. -// -// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeValidatingAdmissionPolicyBindingV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingV1Alpha1 -type jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding" API object. -func NewKubeValidatingAdmissionPolicyBindingV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) KubeValidatingAdmissionPolicyBindingV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyBindingV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding" API object. -func NewKubeValidatingAdmissionPolicyBindingV1Alpha1_Override(k KubeValidatingAdmissionPolicyBindingV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyBindingV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyBindingV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyBindingV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go deleted file mode 100644 index 7236b189f..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1Props.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. -// -// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. -// -// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeValidatingAdmissionPolicyBindingV1Alpha1Props struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. - Spec *ValidatingAdmissionPolicyBindingSpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go deleted file mode 100644 index 6c5998922..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go deleted file mode 100644 index 235bfbc04..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go deleted file mode 100644 index 332f0d20c..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1.go +++ /dev/null @@ -1,323 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. -// -// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. -// -// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeValidatingAdmissionPolicyBindingV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyBindingV1Beta1 -type jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" API object. -func NewKubeValidatingAdmissionPolicyBindingV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) KubeValidatingAdmissionPolicyBindingV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" API object. -func NewKubeValidatingAdmissionPolicyBindingV1Beta1_Override(k KubeValidatingAdmissionPolicyBindingV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyBindingV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyBindingV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyBindingV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyBindingV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go deleted file mode 100644 index 066929394..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1Props.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. -// -// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. -// -// For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. -// -// The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. -type KubeValidatingAdmissionPolicyBindingV1Beta1Props struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. - Spec *ValidatingAdmissionPolicyBindingSpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go deleted file mode 100644 index 56baad344..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go deleted file mode 100644 index ea229b5dc..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBindingV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBindingV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go deleted file mode 100644 index 6230c2234..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyBinding_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBinding_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBinding_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyBinding_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go deleted file mode 100644 index 5e4274be6..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyBinding__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyBinding_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBinding_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBinding_ManifestParameters(props *KubeValidatingAdmissionPolicyBindingProps) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyBinding_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyBindingParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyBindingProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go deleted file mode 100644 index 7f20fd5d6..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. -type KubeValidatingAdmissionPolicyList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyList -type jsiiProxy_KubeValidatingAdmissionPolicyList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList" API object. -func NewKubeValidatingAdmissionPolicyList(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) KubeValidatingAdmissionPolicyList { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyList{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList" API object. -func NewKubeValidatingAdmissionPolicyList_Override(k KubeValidatingAdmissionPolicyList, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyList_Manifest(props *KubeValidatingAdmissionPolicyListProps) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go deleted file mode 100644 index ba6d4810c..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. -type KubeValidatingAdmissionPolicyListProps struct { - // List of ValidatingAdmissionPolicy. - Items *[]*KubeValidatingAdmissionPolicyProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go deleted file mode 100644 index eb38f9059..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. -type KubeValidatingAdmissionPolicyListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyListV1Alpha1 -type jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList" API object. -func NewKubeValidatingAdmissionPolicyListV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) KubeValidatingAdmissionPolicyListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList" API object. -func NewKubeValidatingAdmissionPolicyListV1Alpha1_Override(k KubeValidatingAdmissionPolicyListV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyListV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go deleted file mode 100644 index 2f381f031..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. -type KubeValidatingAdmissionPolicyListV1Alpha1Props struct { - // List of ValidatingAdmissionPolicy. - Items *[]*KubeValidatingAdmissionPolicyV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go deleted file mode 100644 index f51f8ef27..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go deleted file mode 100644 index 7995fe8f6..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go deleted file mode 100644 index 7de5e69f5..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. -type KubeValidatingAdmissionPolicyListV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyListV1Beta1 -type jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" API object. -func NewKubeValidatingAdmissionPolicyListV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) KubeValidatingAdmissionPolicyListV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" API object. -func NewKubeValidatingAdmissionPolicyListV1Beta1_Override(k KubeValidatingAdmissionPolicyListV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyListV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyListV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyListV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyListV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyListV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go deleted file mode 100644 index 340913600..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. -type KubeValidatingAdmissionPolicyListV1Beta1Props struct { - // List of ValidatingAdmissionPolicy. - Items *[]*KubeValidatingAdmissionPolicyV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go deleted file mode 100644 index dd33aa0da..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go deleted file mode 100644 index 55bdd4054..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyListV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go deleted file mode 100644 index f697c6fa2..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyList_ManifestParameters(props *KubeValidatingAdmissionPolicyListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go deleted file mode 100644 index 8ac2dadfd..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyList_ManifestParameters(props *KubeValidatingAdmissionPolicyListProps) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyListParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go deleted file mode 100644 index dd9096a92..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. -type KubeValidatingAdmissionPolicyProps struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the ValidatingAdmissionPolicy. - Spec *ValidatingAdmissionPolicySpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go deleted file mode 100644 index aa3c38683..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. -type KubeValidatingAdmissionPolicyV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyV1Alpha1 -type jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy" API object. -func NewKubeValidatingAdmissionPolicyV1Alpha1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) KubeValidatingAdmissionPolicyV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy" API object. -func NewKubeValidatingAdmissionPolicyV1Alpha1_Override(k KubeValidatingAdmissionPolicyV1Alpha1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyV1Alpha1_Manifest(props *KubeValidatingAdmissionPolicyV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go deleted file mode 100644 index 64046ea17..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. -type KubeValidatingAdmissionPolicyV1Alpha1Props struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the ValidatingAdmissionPolicy. - Spec *ValidatingAdmissionPolicySpecV1Alpha1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go deleted file mode 100644 index 769215830..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go deleted file mode 100644 index 6b411afc6..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Alpha1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go deleted file mode 100644 index a2481ae90..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. -type KubeValidatingAdmissionPolicyV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingAdmissionPolicyV1Beta1 -type jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" API object. -func NewKubeValidatingAdmissionPolicyV1Beta1(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) KubeValidatingAdmissionPolicyV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1{} - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" API object. -func NewKubeValidatingAdmissionPolicyV1Beta1_Override(k KubeValidatingAdmissionPolicyV1Beta1, scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingAdmissionPolicyV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingAdmissionPolicyV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingAdmissionPolicyV1Beta1_Manifest(props *KubeValidatingAdmissionPolicyV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingAdmissionPolicyV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingAdmissionPolicyV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go deleted file mode 100644 index 18fe40f90..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1Props.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. -type KubeValidatingAdmissionPolicyV1Beta1Props struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the ValidatingAdmissionPolicy. - Spec *ValidatingAdmissionPolicySpecV1Beta1 `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go deleted file mode 100644 index f9a5d5d99..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicyV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Beta1Props) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go deleted file mode 100644 index e6e02b4b0..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicyV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicyV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Beta1_ManifestParameters(props *KubeValidatingAdmissionPolicyV1Beta1Props) error { - return nil -} - -func validateKubeValidatingAdmissionPolicyV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go deleted file mode 100644 index c52ed2f0c..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingAdmissionPolicy_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicy_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingAdmissionPolicy_ManifestParameters(props *KubeValidatingAdmissionPolicyProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingAdmissionPolicy_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingAdmissionPolicyParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go b/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go deleted file mode 100644 index 672218f18..000000000 --- a/pods/imports/k8s/KubeValidatingAdmissionPolicy__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingAdmissionPolicy_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicy_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingAdmissionPolicy_ManifestParameters(props *KubeValidatingAdmissionPolicyProps) error { - return nil -} - -func validateKubeValidatingAdmissionPolicy_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingAdmissionPolicyParameters(scope constructs.Construct, id *string, props *KubeValidatingAdmissionPolicyProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration.go deleted file mode 100644 index 38fe8dd1c..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. -type KubeValidatingWebhookConfiguration interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingWebhookConfiguration -type jsiiProxy_KubeValidatingWebhookConfiguration struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfiguration) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" API object. -func NewKubeValidatingWebhookConfiguration(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) KubeValidatingWebhookConfiguration { - _init_.Initialize() - - if err := validateNewKubeValidatingWebhookConfigurationParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingWebhookConfiguration{} - - _jsii_.Create( - "k8s.KubeValidatingWebhookConfiguration", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" API object. -func NewKubeValidatingWebhookConfiguration_Override(k KubeValidatingWebhookConfiguration, scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingWebhookConfiguration", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingWebhookConfiguration_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfiguration_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfiguration", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingWebhookConfiguration_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfiguration_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfiguration", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingWebhookConfiguration_Manifest(props *KubeValidatingWebhookConfigurationProps) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfiguration_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfiguration", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingWebhookConfiguration_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfiguration_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfiguration", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingWebhookConfiguration_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingWebhookConfiguration", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingWebhookConfiguration) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingWebhookConfiguration) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingWebhookConfiguration) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingWebhookConfiguration) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go deleted file mode 100644 index fb9d97622..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration. -type KubeValidatingWebhookConfigurationList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeValidatingWebhookConfigurationList -type jsiiProxy_KubeValidatingWebhookConfigurationList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeValidatingWebhookConfigurationList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" API object. -func NewKubeValidatingWebhookConfigurationList(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) KubeValidatingWebhookConfigurationList { - _init_.Initialize() - - if err := validateNewKubeValidatingWebhookConfigurationListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeValidatingWebhookConfigurationList{} - - _jsii_.Create( - "k8s.KubeValidatingWebhookConfigurationList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" API object. -func NewKubeValidatingWebhookConfigurationList_Override(k KubeValidatingWebhookConfigurationList, scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeValidatingWebhookConfigurationList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeValidatingWebhookConfigurationList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfigurationList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfigurationList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeValidatingWebhookConfigurationList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfigurationList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfigurationList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeValidatingWebhookConfigurationList_Manifest(props *KubeValidatingWebhookConfigurationListProps) interface{} { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfigurationList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfigurationList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeValidatingWebhookConfigurationList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeValidatingWebhookConfigurationList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeValidatingWebhookConfigurationList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeValidatingWebhookConfigurationList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeValidatingWebhookConfigurationList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeValidatingWebhookConfigurationList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go deleted file mode 100644 index 08016dcc9..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationListProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration. -type KubeValidatingWebhookConfigurationListProps struct { - // List of ValidatingWebhookConfiguration. - Items *[]*KubeValidatingWebhookConfigurationProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go deleted file mode 100644 index b19978a86..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingWebhookConfigurationList_ManifestParameters(props *KubeValidatingWebhookConfigurationListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go deleted file mode 100644 index b71350538..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingWebhookConfigurationList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingWebhookConfigurationList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingWebhookConfigurationList_ManifestParameters(props *KubeValidatingWebhookConfigurationListProps) error { - return nil -} - -func validateKubeValidatingWebhookConfigurationList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingWebhookConfigurationListParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go b/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go deleted file mode 100644 index 0b26037bf..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfigurationProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it. -type KubeValidatingWebhookConfigurationProps struct { - // Standard object metadata; - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Webhooks is a list of webhooks and the affected resources and operations. - Webhooks *[]*ValidatingWebhook `field:"optional" json:"webhooks" yaml:"webhooks"` -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go deleted file mode 100644 index 8d62ac533..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration__checks.go +++ /dev/null @@ -1,60 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeValidatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingWebhookConfiguration_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeValidatingWebhookConfiguration_ManifestParameters(props *KubeValidatingWebhookConfigurationProps) error { - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeValidatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeValidatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go b/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go deleted file mode 100644 index 0513253fa..000000000 --- a/pods/imports/k8s/KubeValidatingWebhookConfiguration__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeValidatingWebhookConfiguration_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeValidatingWebhookConfiguration_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeValidatingWebhookConfiguration_ManifestParameters(props *KubeValidatingWebhookConfigurationProps) error { - return nil -} - -func validateKubeValidatingWebhookConfiguration_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeValidatingWebhookConfigurationParameters(scope constructs.Construct, id *string, props *KubeValidatingWebhookConfigurationProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttachment.go b/pods/imports/k8s/KubeVolumeAttachment.go deleted file mode 100644 index 2e91fdfb4..000000000 --- a/pods/imports/k8s/KubeVolumeAttachment.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node. -// -// VolumeAttachment objects are non-namespaced. -type KubeVolumeAttachment interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeVolumeAttachment -type jsiiProxy_KubeVolumeAttachment struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeVolumeAttachment) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachment) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachment) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachment) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachment) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachment) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachment) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.VolumeAttachment" API object. -func NewKubeVolumeAttachment(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) KubeVolumeAttachment { - _init_.Initialize() - - if err := validateNewKubeVolumeAttachmentParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeVolumeAttachment{} - - _jsii_.Create( - "k8s.KubeVolumeAttachment", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.VolumeAttachment" API object. -func NewKubeVolumeAttachment_Override(k KubeVolumeAttachment, scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeVolumeAttachment", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeVolumeAttachment_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttachment_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachment", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeVolumeAttachment_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttachment_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachment", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.VolumeAttachment". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeVolumeAttachment_Manifest(props *KubeVolumeAttachmentProps) interface{} { - _init_.Initialize() - - if err := validateKubeVolumeAttachment_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachment", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeVolumeAttachment_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeVolumeAttachment_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachment", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeVolumeAttachment_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeVolumeAttachment", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeVolumeAttachment) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttachment) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttachment) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeVolumeAttachment) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeVolumeAttachmentList.go b/pods/imports/k8s/KubeVolumeAttachmentList.go deleted file mode 100644 index 12ba6594e..000000000 --- a/pods/imports/k8s/KubeVolumeAttachmentList.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// VolumeAttachmentList is a collection of VolumeAttachment objects. -type KubeVolumeAttachmentList interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeVolumeAttachmentList -type jsiiProxy_KubeVolumeAttachmentList struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttachmentList) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1.VolumeAttachmentList" API object. -func NewKubeVolumeAttachmentList(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) KubeVolumeAttachmentList { - _init_.Initialize() - - if err := validateNewKubeVolumeAttachmentListParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeVolumeAttachmentList{} - - _jsii_.Create( - "k8s.KubeVolumeAttachmentList", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1.VolumeAttachmentList" API object. -func NewKubeVolumeAttachmentList_Override(k KubeVolumeAttachmentList, scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeVolumeAttachmentList", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeVolumeAttachmentList_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttachmentList_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachmentList", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeVolumeAttachmentList_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttachmentList_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachmentList", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1.VolumeAttachmentList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeVolumeAttachmentList_Manifest(props *KubeVolumeAttachmentListProps) interface{} { - _init_.Initialize() - - if err := validateKubeVolumeAttachmentList_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachmentList", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeVolumeAttachmentList_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeVolumeAttachmentList_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttachmentList", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeVolumeAttachmentList_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeVolumeAttachmentList", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeVolumeAttachmentList) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttachmentList) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttachmentList) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeVolumeAttachmentList) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeVolumeAttachmentListProps.go b/pods/imports/k8s/KubeVolumeAttachmentListProps.go deleted file mode 100644 index f931e98e4..000000000 --- a/pods/imports/k8s/KubeVolumeAttachmentListProps.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// VolumeAttachmentList is a collection of VolumeAttachment objects. -type KubeVolumeAttachmentListProps struct { - // items is the list of VolumeAttachments. - Items *[]*KubeVolumeAttachmentProps `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeVolumeAttachmentList__checks.go b/pods/imports/k8s/KubeVolumeAttachmentList__checks.go deleted file mode 100644 index 43e23fb80..000000000 --- a/pods/imports/k8s/KubeVolumeAttachmentList__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeVolumeAttachmentList_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttachmentList_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttachmentList_ManifestParameters(props *KubeVolumeAttachmentListProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeVolumeAttachmentList_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeVolumeAttachmentListParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go b/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go deleted file mode 100644 index c57023f3e..000000000 --- a/pods/imports/k8s/KubeVolumeAttachmentList__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeVolumeAttachmentList_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeVolumeAttachmentList_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeVolumeAttachmentList_ManifestParameters(props *KubeVolumeAttachmentListProps) error { - return nil -} - -func validateKubeVolumeAttachmentList_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeVolumeAttachmentListParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentListProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttachmentProps.go b/pods/imports/k8s/KubeVolumeAttachmentProps.go deleted file mode 100644 index 9b811b477..000000000 --- a/pods/imports/k8s/KubeVolumeAttachmentProps.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node. -// -// VolumeAttachment objects are non-namespaced. -type KubeVolumeAttachmentProps struct { - // spec represents specification of the desired attach/detach volume behavior. - // - // Populated by the Kubernetes system. - Spec *VolumeAttachmentSpec `field:"required" json:"spec" yaml:"spec"` - // Standard object metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeVolumeAttachment__checks.go b/pods/imports/k8s/KubeVolumeAttachment__checks.go deleted file mode 100644 index 1ecb4b1b6..000000000 --- a/pods/imports/k8s/KubeVolumeAttachment__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeVolumeAttachment_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttachment_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttachment_ManifestParameters(props *KubeVolumeAttachmentProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeVolumeAttachment_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeVolumeAttachmentParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttachment__no_checks.go b/pods/imports/k8s/KubeVolumeAttachment__no_checks.go deleted file mode 100644 index 63142603a..000000000 --- a/pods/imports/k8s/KubeVolumeAttachment__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeVolumeAttachment_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeVolumeAttachment_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeVolumeAttachment_ManifestParameters(props *KubeVolumeAttachmentProps) error { - return nil -} - -func validateKubeVolumeAttachment_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeVolumeAttachmentParameters(scope constructs.Construct, id *string, props *KubeVolumeAttachmentProps) error { - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go deleted file mode 100644 index f6cdeac55..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. -type KubeVolumeAttributesClassListV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeVolumeAttributesClassListV1Alpha1 -type jsiiProxy_KubeVolumeAttributesClassListV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" API object. -func NewKubeVolumeAttributesClassListV1Alpha1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) KubeVolumeAttributesClassListV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeVolumeAttributesClassListV1Alpha1{} - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" API object. -func NewKubeVolumeAttributesClassListV1Alpha1_Override(k KubeVolumeAttributesClassListV1Alpha1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeVolumeAttributesClassListV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeVolumeAttributesClassListV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeVolumeAttributesClassListV1Alpha1_Manifest(props *KubeVolumeAttributesClassListV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeVolumeAttributesClassListV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeVolumeAttributesClassListV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go deleted file mode 100644 index 4bd86dac1..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. -type KubeVolumeAttributesClassListV1Alpha1Props struct { - // items is the list of VolumeAttributesClass objects. - Items *[]*KubeVolumeAttributesClassV1Alpha1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go deleted file mode 100644 index c4ff1e04b..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeVolumeAttributesClassListV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassListV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassListV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassListV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go deleted file mode 100644 index e10619200..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeVolumeAttributesClassListV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassListV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassListV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassListV1Alpha1Props) error { - return nil -} - -func validateKubeVolumeAttributesClassListV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeVolumeAttributesClassListV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go deleted file mode 100644 index 0c04c1cbb..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1.go +++ /dev/null @@ -1,317 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. -type KubeVolumeAttributesClassListV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeVolumeAttributesClassListV1Beta1 -type jsiiProxy_KubeVolumeAttributesClassListV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClassList" API object. -func NewKubeVolumeAttributesClassListV1Beta1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) KubeVolumeAttributesClassListV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeVolumeAttributesClassListV1Beta1{} - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassListV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClassList" API object. -func NewKubeVolumeAttributesClassListV1Beta1_Override(k KubeVolumeAttributesClassListV1Beta1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassListV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeVolumeAttributesClassListV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeVolumeAttributesClassListV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1beta1.VolumeAttributesClassList". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeVolumeAttributesClassListV1Beta1_Manifest(props *KubeVolumeAttributesClassListV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeVolumeAttributesClassListV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassListV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeVolumeAttributesClassListV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeVolumeAttributesClassListV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassListV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go deleted file mode 100644 index 243aea445..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1Props.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// VolumeAttributesClassList is a collection of VolumeAttributesClass objects. -type KubeVolumeAttributesClassListV1Beta1Props struct { - // items is the list of VolumeAttributesClass objects. - Items *[]*KubeVolumeAttributesClassV1Beta1Props `field:"required" json:"items" yaml:"items"` - // Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. - Metadata *ListMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go deleted file mode 100644 index 2c9b43ee8..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeVolumeAttributesClassListV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassListV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassListV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassListV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go deleted file mode 100644 index 4d13b16ba..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassListV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeVolumeAttributesClassListV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassListV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassListV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassListV1Beta1Props) error { - return nil -} - -func validateKubeVolumeAttributesClassListV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeVolumeAttributesClassListV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassListV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go deleted file mode 100644 index baf1c108d..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. -// -// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. -type KubeVolumeAttributesClassV1Alpha1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeVolumeAttributesClassV1Alpha1 -type jsiiProxy_KubeVolumeAttributesClassV1Alpha1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" API object. -func NewKubeVolumeAttributesClassV1Alpha1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) KubeVolumeAttributesClassV1Alpha1 { - _init_.Initialize() - - if err := validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeVolumeAttributesClassV1Alpha1{} - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassV1Alpha1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" API object. -func NewKubeVolumeAttributesClassV1Alpha1_Override(k KubeVolumeAttributesClassV1Alpha1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassV1Alpha1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeVolumeAttributesClassV1Alpha1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Alpha1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Alpha1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeVolumeAttributesClassV1Alpha1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Alpha1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Alpha1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1alpha1.VolumeAttributesClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeVolumeAttributesClassV1Alpha1_Manifest(props *KubeVolumeAttributesClassV1Alpha1Props) interface{} { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Alpha1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Alpha1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeVolumeAttributesClassV1Alpha1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Alpha1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeVolumeAttributesClassV1Alpha1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeVolumeAttributesClassV1Alpha1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Alpha1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go deleted file mode 100644 index f6c9ecc4e..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1Props.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. -// -// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. -type KubeVolumeAttributesClassV1Alpha1Props struct { - // Name of the CSI driver This field is immutable. - DriverName *string `field:"required" json:"driverName" yaml:"driverName"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // parameters hold volume attributes defined by the CSI driver. - // - // These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. - // - // This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. - Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go deleted file mode 100644 index 818f18769..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeVolumeAttributesClassV1Alpha1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassV1Alpha1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassV1Alpha1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go deleted file mode 100644 index 69ba234df..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Alpha1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeVolumeAttributesClassV1Alpha1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassV1Alpha1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassV1Alpha1_ManifestParameters(props *KubeVolumeAttributesClassV1Alpha1Props) error { - return nil -} - -func validateKubeVolumeAttributesClassV1Alpha1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeVolumeAttributesClassV1Alpha1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Alpha1Props) error { - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go deleted file mode 100644 index 6cfddbf52..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1.go +++ /dev/null @@ -1,319 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/internal" -) - -// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. -// -// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. -type KubeVolumeAttributesClassV1Beta1 interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for KubeVolumeAttributesClassV1Beta1 -type jsiiProxy_KubeVolumeAttributesClassV1Beta1 struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_KubeVolumeAttributesClassV1Beta1) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClass" API object. -func NewKubeVolumeAttributesClassV1Beta1(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) KubeVolumeAttributesClassV1Beta1 { - _init_.Initialize() - - if err := validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_KubeVolumeAttributesClassV1Beta1{} - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassV1Beta1", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "io.k8s.api.storage.v1beta1.VolumeAttributesClass" API object. -func NewKubeVolumeAttributesClassV1Beta1_Override(k KubeVolumeAttributesClassV1Beta1, scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) { - _init_.Initialize() - - _jsii_.Create( - "k8s.KubeVolumeAttributesClassV1Beta1", - []interface{}{scope, id, props}, - k, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func KubeVolumeAttributesClassV1Beta1_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Beta1_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Beta1", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func KubeVolumeAttributesClassV1Beta1_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Beta1_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Beta1", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "io.k8s.api.storage.v1beta1.VolumeAttributesClass". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func KubeVolumeAttributesClassV1Beta1_Manifest(props *KubeVolumeAttributesClassV1Beta1Props) interface{} { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Beta1_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Beta1", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func KubeVolumeAttributesClassV1Beta1_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateKubeVolumeAttributesClassV1Beta1_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "k8s.KubeVolumeAttributesClassV1Beta1", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func KubeVolumeAttributesClassV1Beta1_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "k8s.KubeVolumeAttributesClassV1Beta1", - "GVK", - &returns, - ) - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addDependency", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - k, - "addJsonPatch", - args, - ) -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - k, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (k *jsiiProxy_KubeVolumeAttributesClassV1Beta1) ToString() *string { - var returns *string - - _jsii_.Invoke( - k, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go deleted file mode 100644 index 43918c615..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1Props.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. -// -// The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. -type KubeVolumeAttributesClassV1Beta1Props struct { - // Name of the CSI driver This field is immutable. - DriverName *string `field:"required" json:"driverName" yaml:"driverName"` - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // parameters hold volume attributes defined by the CSI driver. - // - // These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. - // - // This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. - Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"` -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go deleted file mode 100644 index dae63195c..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateKubeVolumeAttributesClassV1Beta1_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassV1Beta1_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateKubeVolumeAttributesClassV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassV1Beta1Props) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateKubeVolumeAttributesClassV1Beta1_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go b/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go deleted file mode 100644 index 8303d2685..000000000 --- a/pods/imports/k8s/KubeVolumeAttributesClassV1Beta1__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateKubeVolumeAttributesClassV1Beta1_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassV1Beta1_IsConstructParameters(x interface{}) error { - return nil -} - -func validateKubeVolumeAttributesClassV1Beta1_ManifestParameters(props *KubeVolumeAttributesClassV1Beta1Props) error { - return nil -} - -func validateKubeVolumeAttributesClassV1Beta1_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewKubeVolumeAttributesClassV1Beta1Parameters(scope constructs.Construct, id *string, props *KubeVolumeAttributesClassV1Beta1Props) error { - return nil -} - diff --git a/pods/imports/k8s/LabelSelector.go b/pods/imports/k8s/LabelSelector.go deleted file mode 100644 index c1a7d1b81..000000000 --- a/pods/imports/k8s/LabelSelector.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// A label selector is a label query over a set of resources. -// -// The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. -type LabelSelector struct { - // matchExpressions is a list of label selector requirements. - // - // The requirements are ANDed. - MatchExpressions *[]*LabelSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` - // matchLabels is a map of {key,value} pairs. - // - // A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - MatchLabels *map[string]*string `field:"optional" json:"matchLabels" yaml:"matchLabels"` -} - diff --git a/pods/imports/k8s/LabelSelectorAttributes.go b/pods/imports/k8s/LabelSelectorAttributes.go deleted file mode 100644 index 987fc19c0..000000000 --- a/pods/imports/k8s/LabelSelectorAttributes.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// LabelSelectorAttributes indicates a label limited access. -// -// Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid. -type LabelSelectorAttributes struct { - // rawSelector is the serialization of a field selector that would be included in a query parameter. - // - // Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present. - RawSelector *string `field:"optional" json:"rawSelector" yaml:"rawSelector"` - // requirements is the parsed interpretation of a label selector. - // - // All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood. - Requirements *[]*LabelSelectorRequirement `field:"optional" json:"requirements" yaml:"requirements"` -} - diff --git a/pods/imports/k8s/LabelSelectorRequirement.go b/pods/imports/k8s/LabelSelectorRequirement.go deleted file mode 100644 index 778a8757f..000000000 --- a/pods/imports/k8s/LabelSelectorRequirement.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -type LabelSelectorRequirement struct { - // key is the label key that the selector applies to. - Key *string `field:"required" json:"key" yaml:"key"` - // operator represents a key's relationship to a set of values. - // - // Valid operators are In, NotIn, Exists and DoesNotExist. - Operator *string `field:"required" json:"operator" yaml:"operator"` - // values is an array of string values. - // - // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - Values *[]*string `field:"optional" json:"values" yaml:"values"` -} - diff --git a/pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go b/pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go deleted file mode 100644 index 3a76fdc2e..000000000 --- a/pods/imports/k8s/LeaseCandidateSpecV1Alpha1.go +++ /dev/null @@ -1,38 +0,0 @@ -package k8s - -import ( - "time" -) - -// LeaseCandidateSpec is a specification of a Lease. -type LeaseCandidateSpecV1Alpha1 struct { - // LeaseName is the name of the lease for which this candidate is contending. - // - // This field is immutable. - LeaseName *string `field:"required" json:"leaseName" yaml:"leaseName"` - // PreferredStrategies indicates the list of strategies for picking the leader for coordinated leader election. - // - // The list is ordered, and the first strategy supersedes all other strategies. The list is used by coordinated leader election to make a decision about the final election strategy. This follows as - If all clients have strategy X as the first element in this list, strategy X will be used. - If a candidate has strategy [X] and another candidate has strategy [Y, X], Y supersedes X and strategy Y - // will be used. - // - If a candidate has strategy [X, Y] and another candidate has strategy [Y, X], this is a user error and leader - // election will not operate the Lease until resolved. - // (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. - PreferredStrategies *[]*string `field:"required" json:"preferredStrategies" yaml:"preferredStrategies"` - // BinaryVersion is the binary version. - // - // It must be in a semver format without leading `v`. This field is required when strategy is "OldestEmulationVersion" - BinaryVersion *string `field:"optional" json:"binaryVersion" yaml:"binaryVersion"` - // EmulationVersion is the emulation version. - // - // It must be in a semver format without leading `v`. EmulationVersion must be less than or equal to BinaryVersion. This field is required when strategy is "OldestEmulationVersion" - EmulationVersion *string `field:"optional" json:"emulationVersion" yaml:"emulationVersion"` - // PingTime is the last time that the server has requested the LeaseCandidate to renew. - // - // It is only done during leader election to check if any LeaseCandidates have become ineligible. When PingTime is updated, the LeaseCandidate will respond by updating RenewTime. - PingTime *time.Time `field:"optional" json:"pingTime" yaml:"pingTime"` - // RenewTime is the time that the LeaseCandidate was last updated. - // - // Any time a Lease needs to do leader election, the PingTime field is updated to signal to the LeaseCandidate that they should update the RenewTime. Old LeaseCandidate objects are also garbage collected if it has been hours since the last renew. The PingTime field is updated regularly to prevent garbage collection for still active LeaseCandidates. - RenewTime *time.Time `field:"optional" json:"renewTime" yaml:"renewTime"` -} - diff --git a/pods/imports/k8s/LeaseSpec.go b/pods/imports/k8s/LeaseSpec.go deleted file mode 100644 index 6308b6bf6..000000000 --- a/pods/imports/k8s/LeaseSpec.go +++ /dev/null @@ -1,32 +0,0 @@ -package k8s - -import ( - "time" -) - -// LeaseSpec is a specification of a Lease. -type LeaseSpec struct { - // acquireTime is a time when the current lease was acquired. - AcquireTime *time.Time `field:"optional" json:"acquireTime" yaml:"acquireTime"` - // holderIdentity contains the identity of the holder of a current lease. - // - // If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field. - HolderIdentity *string `field:"optional" json:"holderIdentity" yaml:"holderIdentity"` - // leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. - // - // This is measured against the time of last observed renewTime. - LeaseDurationSeconds *float64 `field:"optional" json:"leaseDurationSeconds" yaml:"leaseDurationSeconds"` - // leaseTransitions is the number of transitions of a lease between holders. - LeaseTransitions *float64 `field:"optional" json:"leaseTransitions" yaml:"leaseTransitions"` - // PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up. - // - // This field can only be set if Strategy is also set. - PreferredHolder *string `field:"optional" json:"preferredHolder" yaml:"preferredHolder"` - // renewTime is a time when the current holder of a lease has last updated the lease. - RenewTime *time.Time `field:"optional" json:"renewTime" yaml:"renewTime"` - // Strategy indicates the strategy for picking the leader for coordinated leader election. - // - // If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled. - Strategy *string `field:"optional" json:"strategy" yaml:"strategy"` -} - diff --git a/pods/imports/k8s/Lifecycle.go b/pods/imports/k8s/Lifecycle.go deleted file mode 100644 index bfb8a9347..000000000 --- a/pods/imports/k8s/Lifecycle.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Lifecycle describes actions that the management system should take in response to container lifecycle events. -// -// For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted. -type Lifecycle struct { - // PostStart is called immediately after a container is created. - // - // If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks - PostStart *LifecycleHandler `field:"optional" json:"postStart" yaml:"postStart"` - // PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. - // - // The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks - PreStop *LifecycleHandler `field:"optional" json:"preStop" yaml:"preStop"` -} - diff --git a/pods/imports/k8s/LifecycleHandler.go b/pods/imports/k8s/LifecycleHandler.go deleted file mode 100644 index 210c2a961..000000000 --- a/pods/imports/k8s/LifecycleHandler.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// LifecycleHandler defines a specific action that should be taken in a lifecycle hook. -// -// One and only one of the fields, except TCPSocket must be specified. -type LifecycleHandler struct { - // Exec specifies the action to take. - Exec *ExecAction `field:"optional" json:"exec" yaml:"exec"` - // HTTPGet specifies the http request to perform. - HttpGet *HttpGetAction `field:"optional" json:"httpGet" yaml:"httpGet"` - // Sleep represents the duration that the container should sleep before being terminated. - Sleep *SleepAction `field:"optional" json:"sleep" yaml:"sleep"` - // Deprecated. - // - // TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. - TcpSocket *TcpSocketAction `field:"optional" json:"tcpSocket" yaml:"tcpSocket"` -} - diff --git a/pods/imports/k8s/LimitRangeItem.go b/pods/imports/k8s/LimitRangeItem.go deleted file mode 100644 index a1440b38a..000000000 --- a/pods/imports/k8s/LimitRangeItem.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// LimitRangeItem defines a min/max usage limit for any resource that matches on kind. -type LimitRangeItem struct { - // Type of resource that this limit applies to. - Type *string `field:"required" json:"type" yaml:"type"` - // Default resource requirement limit value by resource name if resource limit is omitted. - Default *map[string]Quantity `field:"optional" json:"default" yaml:"default"` - // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. - DefaultRequest *map[string]Quantity `field:"optional" json:"defaultRequest" yaml:"defaultRequest"` - // Max usage constraints on this kind by resource name. - Max *map[string]Quantity `field:"optional" json:"max" yaml:"max"` - // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; - // - // this represents the max burst for the named resource. - MaxLimitRequestRatio *map[string]Quantity `field:"optional" json:"maxLimitRequestRatio" yaml:"maxLimitRequestRatio"` - // Min usage constraints on this kind by resource name. - Min *map[string]Quantity `field:"optional" json:"min" yaml:"min"` -} - diff --git a/pods/imports/k8s/LimitRangeSpec.go b/pods/imports/k8s/LimitRangeSpec.go deleted file mode 100644 index 2050c15ef..000000000 --- a/pods/imports/k8s/LimitRangeSpec.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// LimitRangeSpec defines a min/max usage limit for resources that match on kind. -type LimitRangeSpec struct { - // Limits is the list of LimitRangeItem objects that are enforced. - Limits *[]*LimitRangeItem `field:"required" json:"limits" yaml:"limits"` -} - diff --git a/pods/imports/k8s/LimitResponse.go b/pods/imports/k8s/LimitResponse.go deleted file mode 100644 index 4d36c5b33..000000000 --- a/pods/imports/k8s/LimitResponse.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// LimitResponse defines how to handle requests that can not be executed right now. -type LimitResponse struct { - // `type` is "Queue" or "Reject". - // - // "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required. - Type *string `field:"required" json:"type" yaml:"type"` - // `queuing` holds the configuration parameters for queuing. - // - // This field may be non-empty only if `type` is `"Queue"`. - Queuing *QueuingConfiguration `field:"optional" json:"queuing" yaml:"queuing"` -} - diff --git a/pods/imports/k8s/LimitResponseV1Beta3.go b/pods/imports/k8s/LimitResponseV1Beta3.go deleted file mode 100644 index b365a2483..000000000 --- a/pods/imports/k8s/LimitResponseV1Beta3.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// LimitResponse defines how to handle requests that can not be executed right now. -type LimitResponseV1Beta3 struct { - // `type` is "Queue" or "Reject". - // - // "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required. - Type *string `field:"required" json:"type" yaml:"type"` - // `queuing` holds the configuration parameters for queuing. - // - // This field may be non-empty only if `type` is `"Queue"`. - Queuing *QueuingConfigurationV1Beta3 `field:"optional" json:"queuing" yaml:"queuing"` -} - diff --git a/pods/imports/k8s/LimitedPriorityLevelConfiguration.go b/pods/imports/k8s/LimitedPriorityLevelConfiguration.go deleted file mode 100644 index 954f313c9..000000000 --- a/pods/imports/k8s/LimitedPriorityLevelConfiguration.go +++ /dev/null @@ -1,39 +0,0 @@ -package k8s - - -// LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. -// -// It addresses two issues: -// - How are requests for this priority level limited? -// - What should be done with requests that exceed the limit? -type LimitedPriorityLevelConfiguration struct { - // `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. - // - // The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. - // - // BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) - // - // The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. - BorrowingLimitPercent *float64 `field:"optional" json:"borrowingLimitPercent" yaml:"borrowingLimitPercent"` - // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. - // - // The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. - // - // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) - LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` - // `limitResponse` indicates what to do with requests that can not be executed right now. - LimitResponse *LimitResponse `field:"optional" json:"limitResponse" yaml:"limitResponse"` - // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. - // - // This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: - // - // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) - // - // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. - // - // If not specified, this field defaults to a value of 30. - // - // Setting this field to zero supports the construction of a "jail" for this priority level that is used to hold some request(s). - NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` -} - diff --git a/pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go b/pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go deleted file mode 100644 index cc554283f..000000000 --- a/pods/imports/k8s/LimitedPriorityLevelConfigurationV1Beta3.go +++ /dev/null @@ -1,35 +0,0 @@ -package k8s - - -// LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. -// -// It addresses two issues: -// - How are requests for this priority level limited? -// - What should be done with requests that exceed the limit? -type LimitedPriorityLevelConfigurationV1Beta3 struct { - // `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. - // - // The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. - // - // BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) - // - // The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. - BorrowingLimitPercent *float64 `field:"optional" json:"borrowingLimitPercent" yaml:"borrowingLimitPercent"` - // `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. - // - // The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. - // - // LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) - LendablePercent *float64 `field:"optional" json:"lendablePercent" yaml:"lendablePercent"` - // `limitResponse` indicates what to do with requests that can not be executed right now. - LimitResponse *LimitResponseV1Beta3 `field:"optional" json:"limitResponse" yaml:"limitResponse"` - // `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. - // - // This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: - // - // NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) - // - // Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30. - NominalConcurrencyShares *float64 `field:"optional" json:"nominalConcurrencyShares" yaml:"nominalConcurrencyShares"` -} - diff --git a/pods/imports/k8s/ListMeta.go b/pods/imports/k8s/ListMeta.go deleted file mode 100644 index 0e1ab21d4..000000000 --- a/pods/imports/k8s/ListMeta.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ListMeta describes metadata that synthetic resources must have, including lists and various status objects. -// -// A resource may have only one of {ObjectMeta, ListMeta}. -type ListMeta struct { - // continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. - // - // The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message. - Continue *string `field:"optional" json:"continue" yaml:"continue"` - // remainingItemCount is the number of subsequent items in the list which are not included in this list response. - // - // If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact. - RemainingItemCount *float64 `field:"optional" json:"remainingItemCount" yaml:"remainingItemCount"` - // String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. - // - // Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` - // Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. - SelfLink *string `field:"optional" json:"selfLink" yaml:"selfLink"` -} - diff --git a/pods/imports/k8s/LocalObjectReference.go b/pods/imports/k8s/LocalObjectReference.go deleted file mode 100644 index a6336b323..000000000 --- a/pods/imports/k8s/LocalObjectReference.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. -type LocalObjectReference struct { - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/LocalVolumeSource.go b/pods/imports/k8s/LocalVolumeSource.go deleted file mode 100644 index cbb3c5f1d..000000000 --- a/pods/imports/k8s/LocalVolumeSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Local represents directly-attached storage with node affinity (Beta feature). -type LocalVolumeSource struct { - // path of the full path to the volume on the node. - // - // It can be either a directory or block device (disk, partition, ...). - Path *string `field:"required" json:"path" yaml:"path"` - // fsType is the filesystem type to mount. - // - // It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` -} - diff --git a/pods/imports/k8s/ManagedFieldsEntry.go b/pods/imports/k8s/ManagedFieldsEntry.go deleted file mode 100644 index 46bbaedc6..000000000 --- a/pods/imports/k8s/ManagedFieldsEntry.go +++ /dev/null @@ -1,34 +0,0 @@ -package k8s - -import ( - "time" -) - -// ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to. -type ManagedFieldsEntry struct { - // APIVersion defines the version of this resource that this field set applies to. - // - // The format is "group/version" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // FieldsType is the discriminator for the different fields format and version. - // - // There is currently only one possible value: "FieldsV1". - FieldsType *string `field:"optional" json:"fieldsType" yaml:"fieldsType"` - // FieldsV1 holds the first JSON version format as described in the "FieldsV1" type. - FieldsV1 interface{} `field:"optional" json:"fieldsV1" yaml:"fieldsV1"` - // Manager is an identifier of the workflow managing these fields. - Manager *string `field:"optional" json:"manager" yaml:"manager"` - // Operation is the type of operation which lead to this ManagedFieldsEntry being created. - // - // The only valid values for this field are 'Apply' and 'Update'. - Operation *string `field:"optional" json:"operation" yaml:"operation"` - // Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. - // - // The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource. - Subresource *string `field:"optional" json:"subresource" yaml:"subresource"` - // Time is the timestamp of when the ManagedFields entry was added. - // - // The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over. - Time *time.Time `field:"optional" json:"time" yaml:"time"` -} - diff --git a/pods/imports/k8s/MatchCondition.go b/pods/imports/k8s/MatchCondition.go deleted file mode 100644 index 585a3ab79..000000000 --- a/pods/imports/k8s/MatchCondition.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook. -type MatchCondition struct { - // Expression represents the expression which will be evaluated by CEL. - // - // Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: - // - // 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ - // - // Required. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. - // - // A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') - // - // Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/MatchConditionV1Alpha1.go b/pods/imports/k8s/MatchConditionV1Alpha1.go deleted file mode 100644 index eb735b5f6..000000000 --- a/pods/imports/k8s/MatchConditionV1Alpha1.go +++ /dev/null @@ -1,24 +0,0 @@ -package k8s - - -type MatchConditionV1Alpha1 struct { - // Expression represents the expression which will be evaluated by CEL. - // - // Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: - // - // 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ - // - // Required. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. - // - // A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') - // - // Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/MatchConditionV1Beta1.go b/pods/imports/k8s/MatchConditionV1Beta1.go deleted file mode 100644 index e715314b9..000000000 --- a/pods/imports/k8s/MatchConditionV1Beta1.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook. -type MatchConditionV1Beta1 struct { - // Expression represents the expression which will be evaluated by CEL. - // - // Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: - // - // 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ - // - // Required. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. - // - // A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') - // - // Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/MatchResources.go b/pods/imports/k8s/MatchResources.go deleted file mode 100644 index 05a785100..000000000 --- a/pods/imports/k8s/MatchResources.go +++ /dev/null @@ -1,69 +0,0 @@ -package k8s - - -// MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. -// -// The exclude rules take precedence over include rules (if a resource matches both, it is excluded). -type MatchResources struct { - // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. - // - // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). - ExcludeResourceRules *[]*NamedRuleWithOperations `field:"optional" json:"excludeResourceRules" yaml:"excludeResourceRules"` - // matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". - // - // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - // - // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. - // - // Defaults to "Equivalent". - // Default: Equivalent". - // - MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` - // NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. - // - // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. - // - // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "runlevel", - // "operator": "NotIn", - // "values": [ - // "0", - // "1" - // ] - // } - // ] - // } - // - // If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "environment", - // "operator": "In", - // "values": [ - // "prod", - // "staging" - // ] - // } - // ] - // } - // - // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. - // - // Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // ObjectSelector decides whether to run the validation based on if the object has matching labels. - // - // objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` - // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. - // - // The policy cares about an operation if it matches _any_ Rule. - ResourceRules *[]*NamedRuleWithOperations `field:"optional" json:"resourceRules" yaml:"resourceRules"` -} - diff --git a/pods/imports/k8s/MatchResourcesV1Alpha1.go b/pods/imports/k8s/MatchResourcesV1Alpha1.go deleted file mode 100644 index a862a817d..000000000 --- a/pods/imports/k8s/MatchResourcesV1Alpha1.go +++ /dev/null @@ -1,69 +0,0 @@ -package k8s - - -// MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. -// -// The exclude rules take precedence over include rules (if a resource matches both, it is excluded). -type MatchResourcesV1Alpha1 struct { - // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. - // - // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). - ExcludeResourceRules *[]*NamedRuleWithOperationsV1Alpha1 `field:"optional" json:"excludeResourceRules" yaml:"excludeResourceRules"` - // matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". - // - // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - // - // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. - // - // Defaults to "Equivalent". - // Default: Equivalent". - // - MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` - // NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. - // - // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. - // - // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "runlevel", - // "operator": "NotIn", - // "values": [ - // "0", - // "1" - // ] - // } - // ] - // } - // - // If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "environment", - // "operator": "In", - // "values": [ - // "prod", - // "staging" - // ] - // } - // ] - // } - // - // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. - // - // Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // ObjectSelector decides whether to run the validation based on if the object has matching labels. - // - // objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` - // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. - // - // The policy cares about an operation if it matches _any_ Rule. - ResourceRules *[]*NamedRuleWithOperationsV1Alpha1 `field:"optional" json:"resourceRules" yaml:"resourceRules"` -} - diff --git a/pods/imports/k8s/MatchResourcesV1Beta1.go b/pods/imports/k8s/MatchResourcesV1Beta1.go deleted file mode 100644 index 575991cc1..000000000 --- a/pods/imports/k8s/MatchResourcesV1Beta1.go +++ /dev/null @@ -1,69 +0,0 @@ -package k8s - - -// MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. -// -// The exclude rules take precedence over include rules (if a resource matches both, it is excluded). -type MatchResourcesV1Beta1 struct { - // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. - // - // The exclude rules take precedence over include rules (if a resource matches both, it is excluded). - ExcludeResourceRules *[]*NamedRuleWithOperationsV1Beta1 `field:"optional" json:"excludeResourceRules" yaml:"excludeResourceRules"` - // matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". - // - // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - // - // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. - // - // Defaults to "Equivalent". - // Default: Equivalent". - // - MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` - // NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. - // - // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. - // - // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "runlevel", - // "operator": "NotIn", - // "values": [ - // "0", - // "1" - // ] - // } - // ] - // } - // - // If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "environment", - // "operator": "In", - // "values": [ - // "prod", - // "staging" - // ] - // } - // ] - // } - // - // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. - // - // Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // ObjectSelector decides whether to run the validation based on if the object has matching labels. - // - // objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` - // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. - // - // The policy cares about an operation if it matches _any_ Rule. - ResourceRules *[]*NamedRuleWithOperationsV1Beta1 `field:"optional" json:"resourceRules" yaml:"resourceRules"` -} - diff --git a/pods/imports/k8s/MetricIdentifierV2.go b/pods/imports/k8s/MetricIdentifierV2.go deleted file mode 100644 index 19109d745..000000000 --- a/pods/imports/k8s/MetricIdentifierV2.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// MetricIdentifier defines the name and optionally selector for a metric. -type MetricIdentifierV2 struct { - // name is the name of the given metric. - Name *string `field:"required" json:"name" yaml:"name"` - // selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - // - // When unset, just the metricName will be used to gather metrics. - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` -} - diff --git a/pods/imports/k8s/MetricSpecV2.go b/pods/imports/k8s/MetricSpecV2.go deleted file mode 100644 index 3572e1143..000000000 --- a/pods/imports/k8s/MetricSpecV2.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once). -type MetricSpecV2 struct { - // type is the type of metric source. - // - // It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled - Type *string `field:"required" json:"type" yaml:"type"` - // containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. - ContainerResource *ContainerResourceMetricSourceV2 `field:"optional" json:"containerResource" yaml:"containerResource"` - // external refers to a global metric that is not associated with any Kubernetes object. - // - // It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). - External *ExternalMetricSourceV2 `field:"optional" json:"external" yaml:"external"` - // object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object). - Object *ObjectMetricSourceV2 `field:"optional" json:"object" yaml:"object"` - // pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). - // - // The values will be averaged together before being compared to the target value. - Pods *PodsMetricSourceV2 `field:"optional" json:"pods" yaml:"pods"` - // resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. - Resource *ResourceMetricSourceV2 `field:"optional" json:"resource" yaml:"resource"` -} - diff --git a/pods/imports/k8s/MetricTargetV2.go b/pods/imports/k8s/MetricTargetV2.go deleted file mode 100644 index ba6fd9299..000000000 --- a/pods/imports/k8s/MetricTargetV2.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// MetricTarget defines the target value, average value, or average utilization of a specific metric. -type MetricTargetV2 struct { - // type represents whether the metric type is Utilization, Value, or AverageValue. - Type *string `field:"required" json:"type" yaml:"type"` - // averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. - // - // Currently only valid for Resource metric source type. - AverageUtilization *float64 `field:"optional" json:"averageUtilization" yaml:"averageUtilization"` - // averageValue is the target value of the average of the metric across all relevant pods (as a quantity). - AverageValue Quantity `field:"optional" json:"averageValue" yaml:"averageValue"` - // value is the target value of the metric (as a quantity). - Value Quantity `field:"optional" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/MutatingWebhook.go b/pods/imports/k8s/MutatingWebhook.go deleted file mode 100644 index d13311fed..000000000 --- a/pods/imports/k8s/MutatingWebhook.go +++ /dev/null @@ -1,114 +0,0 @@ -package k8s - - -// MutatingWebhook describes an admission webhook and the resources and operations it applies to. -type MutatingWebhook struct { - // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. - // - // API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. - AdmissionReviewVersions *[]*string `field:"required" json:"admissionReviewVersions" yaml:"admissionReviewVersions"` - // ClientConfig defines how to communicate with the hook. - // - // Required. - ClientConfig *WebhookClientConfig `field:"required" json:"clientConfig" yaml:"clientConfig"` - // The name of the admission webhook. - // - // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required. - Name *string `field:"required" json:"name" yaml:"name"` - // SideEffects states whether this webhook has side effects. - // - // Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. - SideEffects *string `field:"required" json:"sideEffects" yaml:"sideEffects"` - // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. - // - // Defaults to Fail. - // Default: Fail. - // - FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` - // MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. - // - // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. - // - // The exact matching logic is (in order): - // 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. - // 2. If ALL matchConditions evaluate to TRUE, the webhook is called. - // 3. If any matchCondition evaluates to an error (but none are FALSE): - // - If failurePolicy=Fail, reject the request - // - If failurePolicy=Ignore, the error is ignored and the webhook is skipped. - MatchConditions *[]*MatchCondition `field:"optional" json:"matchConditions" yaml:"matchConditions"` - // matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". - // - // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. - // - // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. - // - // Defaults to "Equivalent". - // Default: Equivalent". - // - MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` - // NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. - // - // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook. - // - // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "runlevel", - // "operator": "NotIn", - // "values": [ - // "0", - // "1" - // ] - // } - // ] - // } - // - // If instead you want to only run the webhook on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "environment", - // "operator": "In", - // "values": [ - // "prod", - // "staging" - // ] - // } - // ] - // } - // - // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. - // - // Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // ObjectSelector decides whether to run the webhook based on if the object has matching labels. - // - // objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` - // reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. - // - // Allowed values are "Never" and "IfNeeded". - // - // Never: the webhook will not be called more than once in a single admission evaluation. - // - // IfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead. - // - // Defaults to "Never". - // Default: Never". - // - ReinvocationPolicy *string `field:"optional" json:"reinvocationPolicy" yaml:"reinvocationPolicy"` - // Rules describes what operations on what resources/subresources the webhook cares about. - // - // The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. - Rules *[]*RuleWithOperations `field:"optional" json:"rules" yaml:"rules"` - // TimeoutSeconds specifies the timeout for this webhook. - // - // After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. - // Default: 10 seconds. - // - TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` -} - diff --git a/pods/imports/k8s/NamedRuleWithOperations.go b/pods/imports/k8s/NamedRuleWithOperations.go deleted file mode 100644 index 183d1a696..000000000 --- a/pods/imports/k8s/NamedRuleWithOperations.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. -type NamedRuleWithOperations struct { - // APIGroups is the API groups the resources belong to. - // - // '*' is all groups. If '*' is present, the length of the slice must be one. Required. - ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` - // APIVersions is the API versions the resources belong to. - // - // '*' is all versions. If '*' is present, the length of the slice must be one. Required. - ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` - // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. - // - // If '*' is present, the length of the slice must be one. Required. - Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` - // ResourceNames is an optional white list of names that the rule applies to. - // - // An empty set means that everything is allowed. - ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` - // Resources is a list of resources this rule applies to. - // - // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. - // - // If wildcard is present, the validation rule will ensure resources do not overlap with each other. - // - // Depending on the enclosing object, subresources might not be allowed. Required. - Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` - // scope specifies the scope of this rule. - // - // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". - // Default: . - // - Scope *string `field:"optional" json:"scope" yaml:"scope"` -} - diff --git a/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go b/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go deleted file mode 100644 index 87a63f0f8..000000000 --- a/pods/imports/k8s/NamedRuleWithOperationsV1Alpha1.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. -type NamedRuleWithOperationsV1Alpha1 struct { - // APIGroups is the API groups the resources belong to. - // - // '*' is all groups. If '*' is present, the length of the slice must be one. Required. - ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` - // APIVersions is the API versions the resources belong to. - // - // '*' is all versions. If '*' is present, the length of the slice must be one. Required. - ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` - // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. - // - // If '*' is present, the length of the slice must be one. Required. - Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` - // ResourceNames is an optional white list of names that the rule applies to. - // - // An empty set means that everything is allowed. - ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` - // Resources is a list of resources this rule applies to. - // - // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. - // - // If wildcard is present, the validation rule will ensure resources do not overlap with each other. - // - // Depending on the enclosing object, subresources might not be allowed. Required. - Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` - // scope specifies the scope of this rule. - // - // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". - // Default: . - // - Scope *string `field:"optional" json:"scope" yaml:"scope"` -} - diff --git a/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go b/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go deleted file mode 100644 index 429d0a6bc..000000000 --- a/pods/imports/k8s/NamedRuleWithOperationsV1Beta1.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. -type NamedRuleWithOperationsV1Beta1 struct { - // APIGroups is the API groups the resources belong to. - // - // '*' is all groups. If '*' is present, the length of the slice must be one. Required. - ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` - // APIVersions is the API versions the resources belong to. - // - // '*' is all versions. If '*' is present, the length of the slice must be one. Required. - ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` - // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. - // - // If '*' is present, the length of the slice must be one. Required. - Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` - // ResourceNames is an optional white list of names that the rule applies to. - // - // An empty set means that everything is allowed. - ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` - // Resources is a list of resources this rule applies to. - // - // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. - // - // If wildcard is present, the validation rule will ensure resources do not overlap with each other. - // - // Depending on the enclosing object, subresources might not be allowed. Required. - Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` - // scope specifies the scope of this rule. - // - // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". - // Default: . - // - Scope *string `field:"optional" json:"scope" yaml:"scope"` -} - diff --git a/pods/imports/k8s/NamespaceSpec.go b/pods/imports/k8s/NamespaceSpec.go deleted file mode 100644 index f064f84a7..000000000 --- a/pods/imports/k8s/NamespaceSpec.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// NamespaceSpec describes the attributes on a Namespace. -type NamespaceSpec struct { - // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. - // - // More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ - Finalizers *[]*string `field:"optional" json:"finalizers" yaml:"finalizers"` -} - diff --git a/pods/imports/k8s/NetworkPolicyEgressRule.go b/pods/imports/k8s/NetworkPolicyEgressRule.go deleted file mode 100644 index aef9a7c4e..000000000 --- a/pods/imports/k8s/NetworkPolicyEgressRule.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. -// -// The traffic must match both ports and to. This type is beta-level in 1.8 -type NetworkPolicyEgressRule struct { - // ports is a list of destination ports for outgoing traffic. - // - // Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. - Ports *[]*NetworkPolicyPort `field:"optional" json:"ports" yaml:"ports"` - // to is a list of destinations for outgoing traffic of pods selected for this rule. - // - // Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list. - To *[]*NetworkPolicyPeer `field:"optional" json:"to" yaml:"to"` -} - diff --git a/pods/imports/k8s/NetworkPolicyIngressRule.go b/pods/imports/k8s/NetworkPolicyIngressRule.go deleted file mode 100644 index 413cb90bb..000000000 --- a/pods/imports/k8s/NetworkPolicyIngressRule.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. -// -// The traffic must match both ports and from. -type NetworkPolicyIngressRule struct { - // from is a list of sources which should be able to access the pods selected for this rule. - // - // Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list. - From *[]*NetworkPolicyPeer `field:"optional" json:"from" yaml:"from"` - // ports is a list of ports which should be made accessible on the pods selected for this rule. - // - // Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. - Ports *[]*NetworkPolicyPort `field:"optional" json:"ports" yaml:"ports"` -} - diff --git a/pods/imports/k8s/NetworkPolicyPeer.go b/pods/imports/k8s/NetworkPolicyPeer.go deleted file mode 100644 index 2f765cd8a..000000000 --- a/pods/imports/k8s/NetworkPolicyPeer.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// NetworkPolicyPeer describes a peer to allow traffic to/from. -// -// Only certain combinations of fields are allowed. -type NetworkPolicyPeer struct { - // ipBlock defines policy on a particular IPBlock. - // - // If this field is set then neither of the other fields can be. - IpBlock *IpBlock `field:"optional" json:"ipBlock" yaml:"ipBlock"` - // namespaceSelector selects namespaces using cluster-scoped labels. - // - // This field follows standard label selector semantics; if present but empty, it selects all namespaces. - // - // If podSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the namespaces selected by namespaceSelector. Otherwise it selects all pods in the namespaces selected by namespaceSelector. - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // podSelector is a label selector which selects pods. - // - // This field follows standard label selector semantics; if present but empty, it selects all pods. - // - // If namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects the pods matching podSelector in the policy's own namespace. - PodSelector *LabelSelector `field:"optional" json:"podSelector" yaml:"podSelector"` -} - diff --git a/pods/imports/k8s/NetworkPolicyPort.go b/pods/imports/k8s/NetworkPolicyPort.go deleted file mode 100644 index dc3b06bdc..000000000 --- a/pods/imports/k8s/NetworkPolicyPort.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// NetworkPolicyPort describes a port to allow traffic on. -type NetworkPolicyPort struct { - // endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. - // - // This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. - EndPort *float64 `field:"optional" json:"endPort" yaml:"endPort"` - // port represents the port on the given protocol. - // - // This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched. - Port IntOrString `field:"optional" json:"port" yaml:"port"` - // protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. - // - // If not specified, this field defaults to TCP. - Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` -} - diff --git a/pods/imports/k8s/NetworkPolicySpec.go b/pods/imports/k8s/NetworkPolicySpec.go deleted file mode 100644 index c685f972c..000000000 --- a/pods/imports/k8s/NetworkPolicySpec.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// NetworkPolicySpec provides the specification of a NetworkPolicy. -type NetworkPolicySpec struct { - // podSelector selects the pods to which this NetworkPolicy object applies. - // - // The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace. - PodSelector *LabelSelector `field:"required" json:"podSelector" yaml:"podSelector"` - // egress is a list of egress rules to be applied to the selected pods. - // - // Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8 - Egress *[]*NetworkPolicyEgressRule `field:"optional" json:"egress" yaml:"egress"` - // ingress is a list of ingress rules to be applied to the selected pods. - // - // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default) - Ingress *[]*NetworkPolicyIngressRule `field:"optional" json:"ingress" yaml:"ingress"` - // policyTypes is a list of rule types that the NetworkPolicy relates to. - // - // Valid options are ["Ingress"], ["Egress"], or ["Ingress", "Egress"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8 - PolicyTypes *[]*string `field:"optional" json:"policyTypes" yaml:"policyTypes"` -} - diff --git a/pods/imports/k8s/NfsVolumeSource.go b/pods/imports/k8s/NfsVolumeSource.go deleted file mode 100644 index 5f33eb9bb..000000000 --- a/pods/imports/k8s/NfsVolumeSource.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// Represents an NFS mount that lasts the lifetime of a pod. -// -// NFS volumes do not support ownership management or SELinux relabeling. -type NfsVolumeSource struct { - // path that is exported by the NFS server. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - Path *string `field:"required" json:"path" yaml:"path"` - // server is the hostname or IP address of the NFS server. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - Server *string `field:"required" json:"server" yaml:"server"` - // readOnly here will force the NFS export to be mounted with read-only permissions. - // - // Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - // Default: false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/NodeAffinity.go b/pods/imports/k8s/NodeAffinity.go deleted file mode 100644 index 8bec2f31b..000000000 --- a/pods/imports/k8s/NodeAffinity.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Node affinity is a group of node affinity scheduling rules. -type NodeAffinity struct { - // The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. - // - // The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - PreferredDuringSchedulingIgnoredDuringExecution *[]*PreferredSchedulingTerm `field:"optional" json:"preferredDuringSchedulingIgnoredDuringExecution" yaml:"preferredDuringSchedulingIgnoredDuringExecution"` - // If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. - // - // If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` -} - diff --git a/pods/imports/k8s/NodeConfigSource.go b/pods/imports/k8s/NodeConfigSource.go deleted file mode 100644 index ef8e92ef2..000000000 --- a/pods/imports/k8s/NodeConfigSource.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// NodeConfigSource specifies a source of node configuration. -// -// Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22 -type NodeConfigSource struct { - // ConfigMap is a reference to a Node's ConfigMap. - ConfigMap *ConfigMapNodeConfigSource `field:"optional" json:"configMap" yaml:"configMap"` -} - diff --git a/pods/imports/k8s/NodeSelector.go b/pods/imports/k8s/NodeSelector.go deleted file mode 100644 index 4dfb030ab..000000000 --- a/pods/imports/k8s/NodeSelector.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// A node selector represents the union of the results of one or more label queries over a set of nodes; -// -// that is, it represents the OR of the selectors represented by the node selector terms. -type NodeSelector struct { - // Required. - // - // A list of node selector terms. The terms are ORed. - NodeSelectorTerms *[]*NodeSelectorTerm `field:"required" json:"nodeSelectorTerms" yaml:"nodeSelectorTerms"` -} - diff --git a/pods/imports/k8s/NodeSelectorRequirement.go b/pods/imports/k8s/NodeSelectorRequirement.go deleted file mode 100644 index e4eafadb6..000000000 --- a/pods/imports/k8s/NodeSelectorRequirement.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -type NodeSelectorRequirement struct { - // The label key that the selector applies to. - Key *string `field:"required" json:"key" yaml:"key"` - // Represents a key's relationship to a set of values. - // - // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - Operator *string `field:"required" json:"operator" yaml:"operator"` - // An array of string values. - // - // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - Values *[]*string `field:"optional" json:"values" yaml:"values"` -} - diff --git a/pods/imports/k8s/NodeSelectorTerm.go b/pods/imports/k8s/NodeSelectorTerm.go deleted file mode 100644 index 77e714672..000000000 --- a/pods/imports/k8s/NodeSelectorTerm.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// A null or empty node selector term matches no objects. -// -// The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. -type NodeSelectorTerm struct { - // A list of node selector requirements by node's labels. - MatchExpressions *[]*NodeSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` - // A list of node selector requirements by node's fields. - MatchFields *[]*NodeSelectorRequirement `field:"optional" json:"matchFields" yaml:"matchFields"` -} - diff --git a/pods/imports/k8s/NodeSpec.go b/pods/imports/k8s/NodeSpec.go deleted file mode 100644 index 95889070e..000000000 --- a/pods/imports/k8s/NodeSpec.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// NodeSpec describes the attributes that a node is created with. -type NodeSpec struct { - // Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. - // - // This feature is removed. - ConfigSource *NodeConfigSource `field:"optional" json:"configSource" yaml:"configSource"` - // Deprecated. - // - // Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966 - ExternalId *string `field:"optional" json:"externalId" yaml:"externalId"` - // PodCIDR represents the pod IP range assigned to the node. - PodCidr *string `field:"optional" json:"podCidr" yaml:"podCidr"` - // podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. - // - // If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6. - PodCidRs *[]*string `field:"optional" json:"podCidRs" yaml:"podCidRs"` - // ID of the node assigned by the cloud provider in the format: ://. - ProviderId *string `field:"optional" json:"providerId" yaml:"providerId"` - // If specified, the node's taints. - Taints *[]*Taint `field:"optional" json:"taints" yaml:"taints"` - // Unschedulable controls node schedulability of new pods. - // - // By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration - Unschedulable *bool `field:"optional" json:"unschedulable" yaml:"unschedulable"` -} - diff --git a/pods/imports/k8s/NonResourceAttributes.go b/pods/imports/k8s/NonResourceAttributes.go deleted file mode 100644 index ed290a914..000000000 --- a/pods/imports/k8s/NonResourceAttributes.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface. -type NonResourceAttributes struct { - // Path is the URL path of the request. - Path *string `field:"optional" json:"path" yaml:"path"` - // Verb is the standard HTTP verb. - Verb *string `field:"optional" json:"verb" yaml:"verb"` -} - diff --git a/pods/imports/k8s/NonResourcePolicyRule.go b/pods/imports/k8s/NonResourcePolicyRule.go deleted file mode 100644 index 342d61438..000000000 --- a/pods/imports/k8s/NonResourcePolicyRule.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. -// -// A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request. -type NonResourcePolicyRule struct { - // `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. - // - // For example: - // - "/healthz" is legal - // - "/hea*" is illegal - // - "/hea" is legal but matches nothing - // - "/hea/*" also matches nothing - // - "/healthz/*" matches all per-component health checks. - // "*" matches all non-resource urls. if it is present, it must be the only entry. Required. - NonResourceUrLs *[]*string `field:"required" json:"nonResourceUrLs" yaml:"nonResourceUrLs"` - // `verbs` is a list of matching verbs and may not be empty. - // - // "*" matches all verbs. If it is present, it must be the only entry. Required. - Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` -} - diff --git a/pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go b/pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go deleted file mode 100644 index 5d23cb580..000000000 --- a/pods/imports/k8s/NonResourcePolicyRuleV1Beta3.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. -// -// A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request. -type NonResourcePolicyRuleV1Beta3 struct { - // `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. - // - // For example: - // - "/healthz" is legal - // - "/hea*" is illegal - // - "/hea" is legal but matches nothing - // - "/hea/*" also matches nothing - // - "/healthz/*" matches all per-component health checks. - // "*" matches all non-resource urls. if it is present, it must be the only entry. Required. - NonResourceUrLs *[]*string `field:"required" json:"nonResourceUrLs" yaml:"nonResourceUrLs"` - // `verbs` is a list of matching verbs and may not be empty. - // - // "*" matches all verbs. If it is present, it must be the only entry. Required. - Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` -} - diff --git a/pods/imports/k8s/ObjectFieldSelector.go b/pods/imports/k8s/ObjectFieldSelector.go deleted file mode 100644 index d762c54ea..000000000 --- a/pods/imports/k8s/ObjectFieldSelector.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ObjectFieldSelector selects an APIVersioned field of an object. -type ObjectFieldSelector struct { - // Path of the field to select in the specified API version. - FieldPath *string `field:"required" json:"fieldPath" yaml:"fieldPath"` - // Version of the schema the FieldPath is written in terms of, defaults to "v1". - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` -} - diff --git a/pods/imports/k8s/ObjectMeta.go b/pods/imports/k8s/ObjectMeta.go deleted file mode 100644 index 0c6cfa3a0..000000000 --- a/pods/imports/k8s/ObjectMeta.go +++ /dev/null @@ -1,82 +0,0 @@ -package k8s - -import ( - "time" -) - -// ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. -type ObjectMeta struct { - // Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. - // - // They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations - Annotations *map[string]*string `field:"optional" json:"annotations" yaml:"annotations"` - // CreationTimestamp is a timestamp representing the server time when this object was created. - // - // It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - // - // Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - CreationTimestamp *time.Time `field:"optional" json:"creationTimestamp" yaml:"creationTimestamp"` - // Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. - // - // Only set when deletionTimestamp is also set. May only be shortened. Read-only. - DeletionGracePeriodSeconds *float64 `field:"optional" json:"deletionGracePeriodSeconds" yaml:"deletionGracePeriodSeconds"` - // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. - // - // This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. - // - // Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - DeletionTimestamp *time.Time `field:"optional" json:"deletionTimestamp" yaml:"deletionTimestamp"` - // Must be empty before the object is deleted from the registry. - // - // Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list. - Finalizers *[]*string `field:"optional" json:"finalizers" yaml:"finalizers"` - // GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. - // - // If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. - // - // If this field is specified and the generated name exists, the server will return a 409. - // - // Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency - GenerateName *string `field:"optional" json:"generateName" yaml:"generateName"` - // A sequence number representing a specific generation of the desired state. - // - // Populated by the system. Read-only. - Generation *float64 `field:"optional" json:"generation" yaml:"generation"` - // Map of string keys and values that can be used to organize and categorize (scope and select) objects. - // - // May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels - Labels *map[string]*string `field:"optional" json:"labels" yaml:"labels"` - // ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. - // - // This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like "ci-cd". The set of fields is always in the version that the workflow used when modifying the object. - ManagedFields *[]*ManagedFieldsEntry `field:"optional" json:"managedFields" yaml:"managedFields"` - // Name must be unique within a namespace. - // - // Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names - Name *string `field:"optional" json:"name" yaml:"name"` - // Namespace defines the space within which each name must be unique. - // - // An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - // - // Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // List of objects depended by this object. - // - // If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. - OwnerReferences *[]*OwnerReference `field:"optional" json:"ownerReferences" yaml:"ownerReferences"` - // An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. - // - // May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. - // - // Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` - // Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. - SelfLink *string `field:"optional" json:"selfLink" yaml:"selfLink"` - // UID is the unique in time and space value for this object. - // - // It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - // - // Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids - Uid *string `field:"optional" json:"uid" yaml:"uid"` -} - diff --git a/pods/imports/k8s/ObjectMetricSourceV2.go b/pods/imports/k8s/ObjectMetricSourceV2.go deleted file mode 100644 index a5eee2b6c..000000000 --- a/pods/imports/k8s/ObjectMetricSourceV2.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object). -type ObjectMetricSourceV2 struct { - // describedObject specifies the descriptions of a object,such as kind,name apiVersion. - DescribedObject *CrossVersionObjectReferenceV2 `field:"required" json:"describedObject" yaml:"describedObject"` - // metric identifies the target metric by name and selector. - Metric *MetricIdentifierV2 `field:"required" json:"metric" yaml:"metric"` - // target specifies the target value for the given metric. - Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` -} - diff --git a/pods/imports/k8s/ObjectReference.go b/pods/imports/k8s/ObjectReference.go deleted file mode 100644 index c7c1a51e7..000000000 --- a/pods/imports/k8s/ObjectReference.go +++ /dev/null @@ -1,31 +0,0 @@ -package k8s - - -// ObjectReference contains enough information to let you inspect or modify the referred object. -type ObjectReference struct { - // API version of the referent. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. - FieldPath *string `field:"optional" json:"fieldPath" yaml:"fieldPath"` - // Kind of the referent. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Kind *string `field:"optional" json:"kind" yaml:"kind"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // Namespace of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // Specific resourceVersion to which this reference is made, if any. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` - // UID of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - Uid *string `field:"optional" json:"uid" yaml:"uid"` -} - diff --git a/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go b/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go deleted file mode 100644 index 5cbf0c267..000000000 --- a/pods/imports/k8s/OpaqueDeviceConfigurationV1Alpha3.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor. -type OpaqueDeviceConfigurationV1Alpha3 struct { - // Driver is used to determine which kubelet plugin needs to be passed these configuration parameters. - // - // An admission policy provided by the driver developer could use this to decide whether it needs to validate them. - // - // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // Parameters can contain arbitrary data. - // - // It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions. - Parameters interface{} `field:"required" json:"parameters" yaml:"parameters"` -} - diff --git a/pods/imports/k8s/Overhead.go b/pods/imports/k8s/Overhead.go deleted file mode 100644 index 624b02dba..000000000 --- a/pods/imports/k8s/Overhead.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// Overhead structure represents the resource overhead associated with running a pod. -type Overhead struct { - // podFixed represents the fixed resource overhead associated with running a pod. - PodFixed *map[string]Quantity `field:"optional" json:"podFixed" yaml:"podFixed"` -} - diff --git a/pods/imports/k8s/OwnerReference.go b/pods/imports/k8s/OwnerReference.go deleted file mode 100644 index 136b6af04..000000000 --- a/pods/imports/k8s/OwnerReference.go +++ /dev/null @@ -1,31 +0,0 @@ -package k8s - - -// OwnerReference contains enough information to let you identify an owning object. -// -// An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field. -type OwnerReference struct { - // API version of the referent. - ApiVersion *string `field:"required" json:"apiVersion" yaml:"apiVersion"` - // Kind of the referent. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Kind *string `field:"required" json:"kind" yaml:"kind"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names - Name *string `field:"required" json:"name" yaml:"name"` - // UID of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids - Uid *string `field:"required" json:"uid" yaml:"uid"` - // If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. - // - // See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. - // Default: false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. - // - BlockOwnerDeletion *bool `field:"optional" json:"blockOwnerDeletion" yaml:"blockOwnerDeletion"` - // If true, this reference points to the managing controller. - Controller *bool `field:"optional" json:"controller" yaml:"controller"` -} - diff --git a/pods/imports/k8s/ParamKind.go b/pods/imports/k8s/ParamKind.go deleted file mode 100644 index be2115de4..000000000 --- a/pods/imports/k8s/ParamKind.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ParamKind is a tuple of Group Kind and Version. -type ParamKind struct { - // APIVersion is the API group version the resources belong to. - // - // In format of "group/version". Required. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // Kind is the API kind the resources belong to. - // - // Required. - Kind *string `field:"optional" json:"kind" yaml:"kind"` -} - diff --git a/pods/imports/k8s/ParamKindV1Alpha1.go b/pods/imports/k8s/ParamKindV1Alpha1.go deleted file mode 100644 index e9a52de2a..000000000 --- a/pods/imports/k8s/ParamKindV1Alpha1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ParamKind is a tuple of Group Kind and Version. -type ParamKindV1Alpha1 struct { - // APIVersion is the API group version the resources belong to. - // - // In format of "group/version". Required. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // Kind is the API kind the resources belong to. - // - // Required. - Kind *string `field:"optional" json:"kind" yaml:"kind"` -} - diff --git a/pods/imports/k8s/ParamKindV1Beta1.go b/pods/imports/k8s/ParamKindV1Beta1.go deleted file mode 100644 index 034d27ce1..000000000 --- a/pods/imports/k8s/ParamKindV1Beta1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ParamKind is a tuple of Group Kind and Version. -type ParamKindV1Beta1 struct { - // APIVersion is the API group version the resources belong to. - // - // In format of "group/version". Required. - ApiVersion *string `field:"optional" json:"apiVersion" yaml:"apiVersion"` - // Kind is the API kind the resources belong to. - // - // Required. - Kind *string `field:"optional" json:"kind" yaml:"kind"` -} - diff --git a/pods/imports/k8s/ParamRef.go b/pods/imports/k8s/ParamRef.go deleted file mode 100644 index 82bd9d534..000000000 --- a/pods/imports/k8s/ParamRef.go +++ /dev/null @@ -1,39 +0,0 @@ -package k8s - - -// ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. -type ParamRef struct { - // name is the name of the resource being referenced. - // - // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. - // - // A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. - Name *string `field:"optional" json:"name" yaml:"name"` - // namespace is the namespace of the referenced resource. - // - // Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. - // - // A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - // - // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - // - // - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. - // - // If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. - // - // Allowed values are `Allow` or `Deny` - // - // Required. - ParameterNotFoundAction *string `field:"optional" json:"parameterNotFoundAction" yaml:"parameterNotFoundAction"` - // selector can be used to match multiple param objects based on their labels. - // - // Supply selector: {} to match all resources of the ParamKind. - // - // If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. - // - // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` -} - diff --git a/pods/imports/k8s/ParamRefV1Alpha1.go b/pods/imports/k8s/ParamRefV1Alpha1.go deleted file mode 100644 index 6758c591c..000000000 --- a/pods/imports/k8s/ParamRefV1Alpha1.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. -type ParamRefV1Alpha1 struct { - // `name` is the name of the resource being referenced. - // - // `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. - Name *string `field:"optional" json:"name" yaml:"name"` - // namespace is the namespace of the referenced resource. - // - // Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. - // - // A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - // - // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - // - // - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. - // - // If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. - // - // Allowed values are `Allow` or `Deny` Default to `Deny`. - // Default: Deny`. - // - ParameterNotFoundAction *string `field:"optional" json:"parameterNotFoundAction" yaml:"parameterNotFoundAction"` - // selector can be used to match multiple param objects based on their labels. - // - // Supply selector: {} to match all resources of the ParamKind. - // - // If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. - // - // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` -} - diff --git a/pods/imports/k8s/ParamRefV1Beta1.go b/pods/imports/k8s/ParamRefV1Beta1.go deleted file mode 100644 index 0a9d6ee3a..000000000 --- a/pods/imports/k8s/ParamRefV1Beta1.go +++ /dev/null @@ -1,39 +0,0 @@ -package k8s - - -// ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. -type ParamRefV1Beta1 struct { - // name is the name of the resource being referenced. - // - // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. - // - // A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. - Name *string `field:"optional" json:"name" yaml:"name"` - // namespace is the namespace of the referenced resource. - // - // Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. - // - // A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - // - // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - // - // - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. - // - // If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. - // - // Allowed values are `Allow` or `Deny` - // - // Required. - ParameterNotFoundAction *string `field:"optional" json:"parameterNotFoundAction" yaml:"parameterNotFoundAction"` - // selector can be used to match multiple param objects based on their labels. - // - // Supply selector: {} to match all resources of the ParamKind. - // - // If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. - // - // One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` -} - diff --git a/pods/imports/k8s/ParentReferenceV1Beta1.go b/pods/imports/k8s/ParentReferenceV1Beta1.go deleted file mode 100644 index 53ac50e8c..000000000 --- a/pods/imports/k8s/ParentReferenceV1Beta1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ParentReference describes a reference to a parent object. -type ParentReferenceV1Beta1 struct { - // Name is the name of the object being referenced. - Name *string `field:"required" json:"name" yaml:"name"` - // Resource is the resource of the object being referenced. - Resource *string `field:"required" json:"resource" yaml:"resource"` - // Group is the group of the object being referenced. - Group *string `field:"optional" json:"group" yaml:"group"` - // Namespace is the namespace of the object being referenced. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` -} - diff --git a/pods/imports/k8s/PersistentVolumeClaimSpec.go b/pods/imports/k8s/PersistentVolumeClaimSpec.go deleted file mode 100644 index e5954cf52..000000000 --- a/pods/imports/k8s/PersistentVolumeClaimSpec.go +++ /dev/null @@ -1,44 +0,0 @@ -package k8s - - -// PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes. -type PersistentVolumeClaimSpec struct { - // accessModes contains the desired access modes the volume should have. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - AccessModes *[]*string `field:"optional" json:"accessModes" yaml:"accessModes"` - // dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - DataSource *TypedLocalObjectReference `field:"optional" json:"dataSource" yaml:"dataSource"` - // dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. - // - // This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef - // allows any non-core object, as well as PersistentVolumeClaim objects. - // * While dataSource ignores disallowed values (dropping them), dataSourceRef - // preserves all values, and generates an error if a disallowed value is - // specified. - // * While dataSource only allows local objects, dataSourceRef allows objects - // in any namespaces. - // (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - DataSourceRef *TypedObjectReference `field:"optional" json:"dataSourceRef" yaml:"dataSourceRef"` - // resources represents the minimum resources the volume should have. - // - // If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - Resources *VolumeResourceRequirements `field:"optional" json:"resources" yaml:"resources"` - // selector is a label query over volumes to consider for binding. - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` - // storageClassName is the name of the StorageClass required by the claim. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - StorageClassName *string `field:"optional" json:"storageClassName" yaml:"storageClassName"` - // volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. - // - // If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default). - VolumeAttributesClassName *string `field:"optional" json:"volumeAttributesClassName" yaml:"volumeAttributesClassName"` - // volumeMode defines what type of volume is required by the claim. - // - // Value of Filesystem is implied when not included in claim spec. - VolumeMode *string `field:"optional" json:"volumeMode" yaml:"volumeMode"` - // volumeName is the binding reference to the PersistentVolume backing this claim. - VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` -} - diff --git a/pods/imports/k8s/PersistentVolumeClaimTemplate.go b/pods/imports/k8s/PersistentVolumeClaimTemplate.go deleted file mode 100644 index 8ed01f2b2..000000000 --- a/pods/imports/k8s/PersistentVolumeClaimTemplate.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource. -type PersistentVolumeClaimTemplate struct { - // The specification for the PersistentVolumeClaim. - // - // The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. - Spec *PersistentVolumeClaimSpec `field:"required" json:"spec" yaml:"spec"` - // May contain labels and annotations that will be copied into the PVC when creating it. - // - // No other fields are allowed and will be rejected during validation. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go b/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go deleted file mode 100644 index d2dddaf6e..000000000 --- a/pods/imports/k8s/PersistentVolumeClaimVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. -// -// This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system). -type PersistentVolumeClaimVolumeSource struct { - // claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - ClaimName *string `field:"required" json:"claimName" yaml:"claimName"` - // readOnly Will force the ReadOnly setting in VolumeMounts. - // - // Default false. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/PersistentVolumeSpec.go b/pods/imports/k8s/PersistentVolumeSpec.go deleted file mode 100644 index 9e5484289..000000000 --- a/pods/imports/k8s/PersistentVolumeSpec.go +++ /dev/null @@ -1,103 +0,0 @@ -package k8s - - -// PersistentVolumeSpec is the specification of a persistent volume. -type PersistentVolumeSpec struct { - // accessModes contains all ways the volume can be mounted. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes - AccessModes *[]*string `field:"optional" json:"accessModes" yaml:"accessModes"` - // awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - AwsElasticBlockStore *AwsElasticBlockStoreVolumeSource `field:"optional" json:"awsElasticBlockStore" yaml:"awsElasticBlockStore"` - // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - AzureDisk *AzureDiskVolumeSource `field:"optional" json:"azureDisk" yaml:"azureDisk"` - // azureFile represents an Azure File Service mount on the host and bind mount to the pod. - AzureFile *AzureFilePersistentVolumeSource `field:"optional" json:"azureFile" yaml:"azureFile"` - // capacity is the description of the persistent volume's resources and capacity. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity - Capacity *map[string]Quantity `field:"optional" json:"capacity" yaml:"capacity"` - // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. - Cephfs *CephFsPersistentVolumeSource `field:"optional" json:"cephfs" yaml:"cephfs"` - // cinder represents a cinder volume attached and mounted on kubelets host machine. - // - // More info: https://examples.k8s.io/mysql-cinder-pd/README.md - Cinder *CinderPersistentVolumeSource `field:"optional" json:"cinder" yaml:"cinder"` - // claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. - // - // Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding - ClaimRef *ObjectReference `field:"optional" json:"claimRef" yaml:"claimRef"` - // csi represents storage that is handled by an external CSI driver (Beta feature). - Csi *CsiPersistentVolumeSource `field:"optional" json:"csi" yaml:"csi"` - // fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. - Fc *FcVolumeSource `field:"optional" json:"fc" yaml:"fc"` - // flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - FlexVolume *FlexPersistentVolumeSource `field:"optional" json:"flexVolume" yaml:"flexVolume"` - // flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. - // - // This depends on the Flocker control service being running. - Flocker *FlockerVolumeSource `field:"optional" json:"flocker" yaml:"flocker"` - // gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. - // - // Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - GcePersistentDisk *GcePersistentDiskVolumeSource `field:"optional" json:"gcePersistentDisk" yaml:"gcePersistentDisk"` - // glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. - // - // Provisioned by an admin. More info: https://examples.k8s.io/volumes/glusterfs/README.md - Glusterfs *GlusterfsPersistentVolumeSource `field:"optional" json:"glusterfs" yaml:"glusterfs"` - // hostPath represents a directory on the host. - // - // Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - HostPath *HostPathVolumeSource `field:"optional" json:"hostPath" yaml:"hostPath"` - // iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. - // - // Provisioned by an admin. - Iscsi *IscsiPersistentVolumeSource `field:"optional" json:"iscsi" yaml:"iscsi"` - // local represents directly-attached storage with node affinity. - Local *LocalVolumeSource `field:"optional" json:"local" yaml:"local"` - // mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options. - MountOptions *[]*string `field:"optional" json:"mountOptions" yaml:"mountOptions"` - // nfs represents an NFS mount on the host. - // - // Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - Nfs *NfsVolumeSource `field:"optional" json:"nfs" yaml:"nfs"` - // nodeAffinity defines constraints that limit what nodes this volume can be accessed from. - // - // This field influences the scheduling of pods that use this volume. - NodeAffinity *VolumeNodeAffinity `field:"optional" json:"nodeAffinity" yaml:"nodeAffinity"` - // persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. - // - // Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming - PersistentVolumeReclaimPolicy *string `field:"optional" json:"persistentVolumeReclaimPolicy" yaml:"persistentVolumeReclaimPolicy"` - // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. - PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `field:"optional" json:"photonPersistentDisk" yaml:"photonPersistentDisk"` - // portworxVolume represents a portworx volume attached and mounted on kubelets host machine. - PortworxVolume *PortworxVolumeSource `field:"optional" json:"portworxVolume" yaml:"portworxVolume"` - // quobyte represents a Quobyte mount on the host that shares a pod's lifetime. - Quobyte *QuobyteVolumeSource `field:"optional" json:"quobyte" yaml:"quobyte"` - // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. - // - // More info: https://examples.k8s.io/volumes/rbd/README.md - Rbd *RbdPersistentVolumeSource `field:"optional" json:"rbd" yaml:"rbd"` - // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - ScaleIo *ScaleIoPersistentVolumeSource `field:"optional" json:"scaleIo" yaml:"scaleIo"` - // storageClassName is the name of StorageClass to which this persistent volume belongs. - // - // Empty value means that this volume does not belong to any StorageClass. - StorageClassName *string `field:"optional" json:"storageClassName" yaml:"storageClassName"` - // storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md. - Storageos *StorageOsPersistentVolumeSource `field:"optional" json:"storageos" yaml:"storageos"` - // Name of VolumeAttributesClass to which this persistent volume belongs. - // - // Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is a beta field and requires enabling VolumeAttributesClass feature (off by default). - VolumeAttributesClassName *string `field:"optional" json:"volumeAttributesClassName" yaml:"volumeAttributesClassName"` - // volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. - // - // Value of Filesystem is implied when not included in spec. - VolumeMode *string `field:"optional" json:"volumeMode" yaml:"volumeMode"` - // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. - VsphereVolume *VsphereVirtualDiskVolumeSource `field:"optional" json:"vsphereVolume" yaml:"vsphereVolume"` -} - diff --git a/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go b/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go deleted file mode 100644 index dae63b3f4..000000000 --- a/pods/imports/k8s/PhotonPersistentDiskVolumeSource.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Represents a Photon Controller persistent disk resource. -type PhotonPersistentDiskVolumeSource struct { - // pdID is the ID that identifies Photon Controller persistent disk. - PdId *string `field:"required" json:"pdId" yaml:"pdId"` - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` -} - diff --git a/pods/imports/k8s/PodAffinity.go b/pods/imports/k8s/PodAffinity.go deleted file mode 100644 index dc11af2ac..000000000 --- a/pods/imports/k8s/PodAffinity.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Pod affinity is a group of inter pod affinity scheduling rules. -type PodAffinity struct { - // The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. - // - // The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - PreferredDuringSchedulingIgnoredDuringExecution *[]*WeightedPodAffinityTerm `field:"optional" json:"preferredDuringSchedulingIgnoredDuringExecution" yaml:"preferredDuringSchedulingIgnoredDuringExecution"` - // If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. - // - // If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - RequiredDuringSchedulingIgnoredDuringExecution *[]*PodAffinityTerm `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` -} - diff --git a/pods/imports/k8s/PodAffinityTerm.go b/pods/imports/k8s/PodAffinityTerm.go deleted file mode 100644 index 8c968f898..000000000 --- a/pods/imports/k8s/PodAffinityTerm.go +++ /dev/null @@ -1,31 +0,0 @@ -package k8s - - -// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running. -type PodAffinityTerm struct { - // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. - // - // Empty topologyKey is not allowed. - TopologyKey *string `field:"required" json:"topologyKey" yaml:"topologyKey"` - // A label query over a set of resources, in this case pods. - // - // If it's null, this PodAffinityTerm matches with no Pods. - LabelSelector *LabelSelector `field:"optional" json:"labelSelector" yaml:"labelSelector"` - // MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. - // - // The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - MatchLabelKeys *[]*string `field:"optional" json:"matchLabelKeys" yaml:"matchLabelKeys"` - // MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. - // - // The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - MismatchLabelKeys *[]*string `field:"optional" json:"mismatchLabelKeys" yaml:"mismatchLabelKeys"` - // namespaces specifies a static list of namespace names that the term applies to. - // - // The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` - // A label query over the set of namespaces that the term applies to. - // - // The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` -} - diff --git a/pods/imports/k8s/PodAntiAffinity.go b/pods/imports/k8s/PodAntiAffinity.go deleted file mode 100644 index 61c83b5fe..000000000 --- a/pods/imports/k8s/PodAntiAffinity.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Pod anti affinity is a group of inter pod anti affinity scheduling rules. -type PodAntiAffinity struct { - // The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. - // - // The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - PreferredDuringSchedulingIgnoredDuringExecution *[]*WeightedPodAffinityTerm `field:"optional" json:"preferredDuringSchedulingIgnoredDuringExecution" yaml:"preferredDuringSchedulingIgnoredDuringExecution"` - // If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. - // - // If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - RequiredDuringSchedulingIgnoredDuringExecution *[]*PodAffinityTerm `field:"optional" json:"requiredDuringSchedulingIgnoredDuringExecution" yaml:"requiredDuringSchedulingIgnoredDuringExecution"` -} - diff --git a/pods/imports/k8s/PodDisruptionBudgetSpec.go b/pods/imports/k8s/PodDisruptionBudgetSpec.go deleted file mode 100644 index d46a98975..000000000 --- a/pods/imports/k8s/PodDisruptionBudgetSpec.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. -type PodDisruptionBudgetSpec struct { - // An eviction is allowed if at most "maxUnavailable" pods selected by "selector" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with "minAvailable". - MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` - // An eviction is allowed if at least "minAvailable" pods selected by "selector" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying "100%". - MinAvailable IntOrString `field:"optional" json:"minAvailable" yaml:"minAvailable"` - // Label query over pods whose evictions are managed by the disruption budget. - // - // A null selector will match no pods, while an empty ({}) selector will select all pods within the namespace. - Selector *LabelSelector `field:"optional" json:"selector" yaml:"selector"` - // UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods should be considered for eviction. - // - // Current implementation considers healthy pods, as pods that have status.conditions item with type="Ready",status="True". - // - // Valid policies are IfHealthyBudget and AlwaysAllow. If no policy is specified, the default behavior will be used, which corresponds to the IfHealthyBudget policy. - // - // IfHealthyBudget policy means that running pods (status.phase="Running"), but not yet healthy can be evicted only if the guarded application is not disrupted (status.currentHealthy is at least equal to status.desiredHealthy). Healthy pods will be subject to the PDB for eviction. - // - // AlwaysAllow policy means that all running pods (status.phase="Running"), but not yet healthy are considered disrupted and can be evicted regardless of whether the criteria in a PDB is met. This means perspective running pods of a disrupted application might not get a chance to become healthy. Healthy pods will be subject to the PDB for eviction. - // - // Additional policies may be added in the future. Clients making eviction decisions should disallow eviction of unhealthy pods if they encounter an unrecognized policy in this field. - // - // This field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). - UnhealthyPodEvictionPolicy *string `field:"optional" json:"unhealthyPodEvictionPolicy" yaml:"unhealthyPodEvictionPolicy"` -} - diff --git a/pods/imports/k8s/PodDnsConfig.go b/pods/imports/k8s/PodDnsConfig.go deleted file mode 100644 index c8c4a4fd1..000000000 --- a/pods/imports/k8s/PodDnsConfig.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. -type PodDnsConfig struct { - // A list of DNS name server IP addresses. - // - // This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. - Nameservers *[]*string `field:"optional" json:"nameservers" yaml:"nameservers"` - // A list of DNS resolver options. - // - // This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. - Options *[]*PodDnsConfigOption `field:"optional" json:"options" yaml:"options"` - // A list of DNS search domains for host-name lookup. - // - // This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. - Searches *[]*string `field:"optional" json:"searches" yaml:"searches"` -} - diff --git a/pods/imports/k8s/PodDnsConfigOption.go b/pods/imports/k8s/PodDnsConfigOption.go deleted file mode 100644 index 727cd9efe..000000000 --- a/pods/imports/k8s/PodDnsConfigOption.go +++ /dev/null @@ -1,10 +0,0 @@ -package k8s - - -// PodDNSConfigOption defines DNS resolver options of a pod. -type PodDnsConfigOption struct { - // Required. - Name *string `field:"optional" json:"name" yaml:"name"` - Value *string `field:"optional" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/PodFailurePolicy.go b/pods/imports/k8s/PodFailurePolicy.go deleted file mode 100644 index 83fa37cce..000000000 --- a/pods/imports/k8s/PodFailurePolicy.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// PodFailurePolicy describes how failed pods influence the backoffLimit. -type PodFailurePolicy struct { - // A list of pod failure policy rules. - // - // The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed. - Rules *[]*PodFailurePolicyRule `field:"required" json:"rules" yaml:"rules"` -} - diff --git a/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go b/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go deleted file mode 100644 index aed2ad918..000000000 --- a/pods/imports/k8s/PodFailurePolicyOnExitCodesRequirement.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. -// -// In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check. -type PodFailurePolicyOnExitCodesRequirement struct { - // Represents the relationship between the container exit code(s) and the specified values. - // - // Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are: - // - // - In: the requirement is satisfied if at least one container exit code - // (might be multiple if there are multiple containers not restricted - // by the 'containerName' field) is in the set of specified values. - // - NotIn: the requirement is satisfied if at least one container exit code - // (might be multiple if there are multiple containers not restricted - // by the 'containerName' field) is not in the set of specified values. - // Additional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied. - Operator *string `field:"required" json:"operator" yaml:"operator"` - // Specifies the set of values. - // - // Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed. - Values *[]*float64 `field:"required" json:"values" yaml:"values"` - // Restricts the check for exit codes to the container with the specified name. - // - // When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template. - ContainerName *string `field:"optional" json:"containerName" yaml:"containerName"` -} - diff --git a/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go b/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go deleted file mode 100644 index e471ceec4..000000000 --- a/pods/imports/k8s/PodFailurePolicyOnPodConditionsPattern.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type. -type PodFailurePolicyOnPodConditionsPattern struct { - // Specifies the required Pod condition status. - // - // To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True. - // Default: True. - // - Status *string `field:"required" json:"status" yaml:"status"` - // Specifies the required Pod condition type. - // - // To match a pod condition it is required that specified type equals the pod condition type. - Type *string `field:"required" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/PodFailurePolicyRule.go b/pods/imports/k8s/PodFailurePolicyRule.go deleted file mode 100644 index 3df9cf87a..000000000 --- a/pods/imports/k8s/PodFailurePolicyRule.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. -// -// One of onExitCodes and onPodConditions, but not both, can be used in each rule. -type PodFailurePolicyRule struct { - // Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are:. - // - // - FailJob: indicates that the pod's job is marked as Failed and all - // running pods are terminated. - // - FailIndex: indicates that the pod's index is marked as Failed and will - // not be restarted. - // This value is beta-level. It can be used when the - // `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). - // - Ignore: indicates that the counter towards the .backoffLimit is not - // incremented and a replacement pod is created. - // - Count: indicates that the pod is handled in the default way - the - // counter towards the .backoffLimit is incremented. - // Additional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule. - Action *string `field:"required" json:"action" yaml:"action"` - // Represents the requirement on the container exit codes. - OnExitCodes *PodFailurePolicyOnExitCodesRequirement `field:"optional" json:"onExitCodes" yaml:"onExitCodes"` - // Represents the requirement on the pod conditions. - // - // The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed. - OnPodConditions *[]*PodFailurePolicyOnPodConditionsPattern `field:"optional" json:"onPodConditions" yaml:"onPodConditions"` -} - diff --git a/pods/imports/k8s/PodOs.go b/pods/imports/k8s/PodOs.go deleted file mode 100644 index f0c4f4c39..000000000 --- a/pods/imports/k8s/PodOs.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// PodOS defines the OS parameters of a pod. -type PodOs struct { - // Name is the name of the operating system. - // - // The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/PodReadinessGate.go b/pods/imports/k8s/PodReadinessGate.go deleted file mode 100644 index eb24a466d..000000000 --- a/pods/imports/k8s/PodReadinessGate.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// PodReadinessGate contains the reference to a pod condition. -type PodReadinessGate struct { - // ConditionType refers to a condition in the pod's condition list with matching type. - ConditionType *string `field:"required" json:"conditionType" yaml:"conditionType"` -} - diff --git a/pods/imports/k8s/PodResourceClaim.go b/pods/imports/k8s/PodResourceClaim.go deleted file mode 100644 index 00dd91ce9..000000000 --- a/pods/imports/k8s/PodResourceClaim.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// PodResourceClaim references exactly one ResourceClaim, either directly or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim for the pod. -// -// It adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name. -type PodResourceClaim struct { - // Name uniquely identifies this resource claim inside the pod. - // - // This must be a DNS_LABEL. - Name *string `field:"required" json:"name" yaml:"name"` - // ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod. - // - // Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set. - ResourceClaimName *string `field:"optional" json:"resourceClaimName" yaml:"resourceClaimName"` - // ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod. - // - // The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses. - // - // This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim. - // - // Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set. - ResourceClaimTemplateName *string `field:"optional" json:"resourceClaimTemplateName" yaml:"resourceClaimTemplateName"` -} - diff --git a/pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go b/pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go deleted file mode 100644 index 946e9a5af..000000000 --- a/pods/imports/k8s/PodSchedulingContextSpecV1Alpha3.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PodSchedulingContextSpec describes where resources for the Pod are needed. -type PodSchedulingContextSpecV1Alpha3 struct { - // PotentialNodes lists nodes where the Pod might be able to run. - // - // The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced. - PotentialNodes *[]*string `field:"optional" json:"potentialNodes" yaml:"potentialNodes"` - // SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted. - SelectedNode *string `field:"optional" json:"selectedNode" yaml:"selectedNode"` -} - diff --git a/pods/imports/k8s/PodSchedulingGate.go b/pods/imports/k8s/PodSchedulingGate.go deleted file mode 100644 index dc19a7c77..000000000 --- a/pods/imports/k8s/PodSchedulingGate.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// PodSchedulingGate is associated to a Pod to guard its scheduling. -type PodSchedulingGate struct { - // Name of the scheduling gate. - // - // Each scheduling gate must have a unique name field. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/PodSecurityContext.go b/pods/imports/k8s/PodSecurityContext.go deleted file mode 100644 index 437efb50c..000000000 --- a/pods/imports/k8s/PodSecurityContext.go +++ /dev/null @@ -1,63 +0,0 @@ -package k8s - - -// PodSecurityContext holds pod-level security attributes and common container settings. -// -// Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext. -type PodSecurityContext struct { - // appArmorProfile is the AppArmor options to use by the containers in this pod. - // - // Note that this field cannot be set when spec.os.name is windows. - AppArmorProfile *AppArmorProfile `field:"optional" json:"appArmorProfile" yaml:"appArmorProfile"` - // A special supplemental group that applies to all containers in a pod. - // - // Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: - // - // 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- - // - // If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows. - FsGroup *float64 `field:"optional" json:"fsGroup" yaml:"fsGroup"` - // fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. - // - // This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows. - FsGroupChangePolicy *string `field:"optional" json:"fsGroupChangePolicy" yaml:"fsGroupChangePolicy"` - // The GID to run the entrypoint of the container process. - // - // Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. - RunAsGroup *float64 `field:"optional" json:"runAsGroup" yaml:"runAsGroup"` - // Indicates that the container must run as a non-root user. - // - // If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - RunAsNonRoot *bool `field:"optional" json:"runAsNonRoot" yaml:"runAsNonRoot"` - // The UID to run the entrypoint of the container process. - // - // Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. - // Default: user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. - // - RunAsUser *float64 `field:"optional" json:"runAsUser" yaml:"runAsUser"` - // The seccomp options to use by the containers in this pod. - // - // Note that this field cannot be set when spec.os.name is windows. - SeccompProfile *SeccompProfile `field:"optional" json:"seccompProfile" yaml:"seccompProfile"` - // The SELinux context to be applied to all containers. - // - // If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. - SeLinuxOptions *SeLinuxOptions `field:"optional" json:"seLinuxOptions" yaml:"seLinuxOptions"` - // A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). - // - // If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows. - SupplementalGroups *[]*float64 `field:"optional" json:"supplementalGroups" yaml:"supplementalGroups"` - // Defines how supplemental groups of the first container processes are calculated. - // - // Valid values are "Merge" and "Strict". If not specified, "Merge" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows. - SupplementalGroupsPolicy *string `field:"optional" json:"supplementalGroupsPolicy" yaml:"supplementalGroupsPolicy"` - // Sysctls hold a list of namespaced sysctls used for the pod. - // - // Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. - Sysctls *[]*Sysctl `field:"optional" json:"sysctls" yaml:"sysctls"` - // The Windows specific settings applied to all containers. - // - // If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. - WindowsOptions *WindowsSecurityContextOptions `field:"optional" json:"windowsOptions" yaml:"windowsOptions"` -} - diff --git a/pods/imports/k8s/PodSpec.go b/pods/imports/k8s/PodSpec.go deleted file mode 100644 index 68642e0cb..000000000 --- a/pods/imports/k8s/PodSpec.go +++ /dev/null @@ -1,183 +0,0 @@ -package k8s - - -// PodSpec is a description of a pod. -type PodSpec struct { - // List of containers belonging to the pod. - // - // Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. - Containers *[]*Container `field:"required" json:"containers" yaml:"containers"` - // Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. - // - // Value must be a positive integer. - ActiveDeadlineSeconds *float64 `field:"optional" json:"activeDeadlineSeconds" yaml:"activeDeadlineSeconds"` - // If specified, the pod's scheduling constraints. - Affinity *Affinity `field:"optional" json:"affinity" yaml:"affinity"` - // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. - AutomountServiceAccountToken *bool `field:"optional" json:"automountServiceAccountToken" yaml:"automountServiceAccountToken"` - // Specifies the DNS parameters of a pod. - // - // Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy. - DnsConfig *PodDnsConfig `field:"optional" json:"dnsConfig" yaml:"dnsConfig"` - // Set DNS policy for the pod. - // - // Defaults to "ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. - // Default: ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. - // - DnsPolicy *string `field:"optional" json:"dnsPolicy" yaml:"dnsPolicy"` - // EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. - // - // Optional: Defaults to true. - // Default: true. - // - EnableServiceLinks *bool `field:"optional" json:"enableServiceLinks" yaml:"enableServiceLinks"` - // List of ephemeral containers run in this pod. - // - // Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. - EphemeralContainers *[]*EphemeralContainer `field:"optional" json:"ephemeralContainers" yaml:"ephemeralContainers"` - // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. - HostAliases *[]*HostAlias `field:"optional" json:"hostAliases" yaml:"hostAliases"` - // Use the host's ipc namespace. - // - // Optional: Default to false. - // Default: false. - // - HostIpc *bool `field:"optional" json:"hostIpc" yaml:"hostIpc"` - // Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value. - Hostname *string `field:"optional" json:"hostname" yaml:"hostname"` - // Host networking requested for this pod. - // - // Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false. - // Default: false. - // - HostNetwork *bool `field:"optional" json:"hostNetwork" yaml:"hostNetwork"` - // Use the host's pid namespace. - // - // Optional: Default to false. - // Default: false. - // - HostPid *bool `field:"optional" json:"hostPid" yaml:"hostPid"` - // Use the host's user namespace. - // - // Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. - // Default: true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. - // - HostUsers *bool `field:"optional" json:"hostUsers" yaml:"hostUsers"` - // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. - // - // If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod - ImagePullSecrets *[]*LocalObjectReference `field:"optional" json:"imagePullSecrets" yaml:"imagePullSecrets"` - // List of initialization containers belonging to the pod. - // - // Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - InitContainers *[]*Container `field:"optional" json:"initContainers" yaml:"initContainers"` - // NodeName indicates in which node this pod is scheduled. - // - // If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. This field should not be used to express a desire for the pod to be scheduled on a specific node. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename - NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` - // NodeSelector is a selector which must be true for the pod to fit on a node. - // - // Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ - NodeSelector *map[string]*string `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` - // Specifies the OS of the containers in the pod. - // - // Some pod and container fields are restricted if this is set. - // - // If the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions - // - // If the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup - Os *PodOs `field:"optional" json:"os" yaml:"os"` - // Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. - // - // This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md - Overhead *map[string]Quantity `field:"optional" json:"overhead" yaml:"overhead"` - // PreemptionPolicy is the Policy for preempting pods with lower priority. - // - // One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. - // Default: PreemptLowerPriority if unset. - // - PreemptionPolicy *string `field:"optional" json:"preemptionPolicy" yaml:"preemptionPolicy"` - // The priority value. - // - // Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. - Priority *float64 `field:"optional" json:"priority" yaml:"priority"` - // If specified, indicates the pod's priority. - // - // "system-node-critical" and "system-cluster-critical" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. - PriorityClassName *string `field:"optional" json:"priorityClassName" yaml:"priorityClassName"` - // If specified, all readiness gates will be evaluated for pod readiness. - // - // A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates - ReadinessGates *[]*PodReadinessGate `field:"optional" json:"readinessGates" yaml:"readinessGates"` - // ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. - // - // The resources will be made available to those containers which consume them by name. - // - // This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - // - // This field is immutable. - ResourceClaims *[]*PodResourceClaim `field:"optional" json:"resourceClaims" yaml:"resourceClaims"` - // Restart policy for all containers within the pod. - // - // One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy - // Default: Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy - // - RestartPolicy *string `field:"optional" json:"restartPolicy" yaml:"restartPolicy"` - // RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class. - RuntimeClassName *string `field:"optional" json:"runtimeClassName" yaml:"runtimeClassName"` - // If specified, the pod will be dispatched by specified scheduler. - // - // If not specified, the pod will be dispatched by default scheduler. - SchedulerName *string `field:"optional" json:"schedulerName" yaml:"schedulerName"` - // SchedulingGates is an opaque list of values that if specified will block scheduling the pod. - // - // If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod. - // - // SchedulingGates can only be set at pod creation time, and be removed only afterwards. - SchedulingGates *[]*PodSchedulingGate `field:"optional" json:"schedulingGates" yaml:"schedulingGates"` - // SecurityContext holds pod-level security attributes and common container settings. - // - // Optional: Defaults to empty. See type description for default values of each field. - // Default: empty. See type description for default values of each field. - // - SecurityContext *PodSecurityContext `field:"optional" json:"securityContext" yaml:"securityContext"` - // DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. - // - // Deprecated: Use serviceAccountName instead. - ServiceAccount *string `field:"optional" json:"serviceAccount" yaml:"serviceAccount"` - // ServiceAccountName is the name of the ServiceAccount to use to run this pod. - // - // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ServiceAccountName *string `field:"optional" json:"serviceAccountName" yaml:"serviceAccountName"` - // If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). - // - // In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false. - // Default: false. - // - SetHostnameAsFqdn *bool `field:"optional" json:"setHostnameAsFqdn" yaml:"setHostnameAsFqdn"` - // Share a single process namespace between all of the containers in a pod. - // - // When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. - // Default: false. - // - ShareProcessNamespace *bool `field:"optional" json:"shareProcessNamespace" yaml:"shareProcessNamespace"` - // If specified, the fully qualified Pod hostname will be "...svc.". If not specified, the pod will not have a domainname at all. - Subdomain *string `field:"optional" json:"subdomain" yaml:"subdomain"` - // Optional duration in seconds the pod needs to terminate gracefully. - // - // May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds. - // Default: 30 seconds. - // - TerminationGracePeriodSeconds *float64 `field:"optional" json:"terminationGracePeriodSeconds" yaml:"terminationGracePeriodSeconds"` - // If specified, the pod's tolerations. - Tolerations *[]*Toleration `field:"optional" json:"tolerations" yaml:"tolerations"` - // TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. - // - // Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed. - TopologySpreadConstraints *[]*TopologySpreadConstraint `field:"optional" json:"topologySpreadConstraints" yaml:"topologySpreadConstraints"` - // List of volumes that can be mounted by containers belonging to the pod. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes - Volumes *[]*Volume `field:"optional" json:"volumes" yaml:"volumes"` -} - diff --git a/pods/imports/k8s/PodTemplateSpec.go b/pods/imports/k8s/PodTemplateSpec.go deleted file mode 100644 index 021a66a21..000000000 --- a/pods/imports/k8s/PodTemplateSpec.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// PodTemplateSpec describes the data a pod should have when created from a template. -type PodTemplateSpec struct { - // Standard object's metadata. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` - // Specification of the desired behavior of the pod. - // - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Spec *PodSpec `field:"optional" json:"spec" yaml:"spec"` -} - diff --git a/pods/imports/k8s/PodsMetricSourceV2.go b/pods/imports/k8s/PodsMetricSourceV2.go deleted file mode 100644 index 55a8845d9..000000000 --- a/pods/imports/k8s/PodsMetricSourceV2.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). -// -// The values will be averaged together before being compared to the target value. -type PodsMetricSourceV2 struct { - // metric identifies the target metric by name and selector. - Metric *MetricIdentifierV2 `field:"required" json:"metric" yaml:"metric"` - // target specifies the target value for the given metric. - Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` -} - diff --git a/pods/imports/k8s/PolicyRule.go b/pods/imports/k8s/PolicyRule.go deleted file mode 100644 index 82b853c2a..000000000 --- a/pods/imports/k8s/PolicyRule.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to. -type PolicyRule struct { - // Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. - // - // '*' represents all verbs. - Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` - // APIGroups is the name of the APIGroup that contains the resources. - // - // If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups. - ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` - // NonResourceURLs is a set of partial urls that a user should have access to. - // - // *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. - NonResourceUrLs *[]*string `field:"optional" json:"nonResourceUrLs" yaml:"nonResourceUrLs"` - // ResourceNames is an optional white list of names that the rule applies to. - // - // An empty set means that everything is allowed. - ResourceNames *[]*string `field:"optional" json:"resourceNames" yaml:"resourceNames"` - // Resources is a list of resources this rule applies to. - // - // '*' represents all resources. - Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` -} - diff --git a/pods/imports/k8s/PolicyRulesWithSubjects.go b/pods/imports/k8s/PolicyRulesWithSubjects.go deleted file mode 100644 index 5b741c652..000000000 --- a/pods/imports/k8s/PolicyRulesWithSubjects.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. -// -// The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. -type PolicyRulesWithSubjects struct { - // subjects is the list of normal user, serviceaccount, or group that this rule cares about. - // - // There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. - Subjects *[]*Subject `field:"required" json:"subjects" yaml:"subjects"` - // `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. - NonResourceRules *[]*NonResourcePolicyRule `field:"optional" json:"nonResourceRules" yaml:"nonResourceRules"` - // `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. - // - // At least one of `resourceRules` and `nonResourceRules` has to be non-empty. - ResourceRules *[]*ResourcePolicyRule `field:"optional" json:"resourceRules" yaml:"resourceRules"` -} - diff --git a/pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go b/pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go deleted file mode 100644 index 86402d039..000000000 --- a/pods/imports/k8s/PolicyRulesWithSubjectsV1Beta3.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. -// -// The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. -type PolicyRulesWithSubjectsV1Beta3 struct { - // subjects is the list of normal user, serviceaccount, or group that this rule cares about. - // - // There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. - Subjects *[]*SubjectV1Beta3 `field:"required" json:"subjects" yaml:"subjects"` - // `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. - NonResourceRules *[]*NonResourcePolicyRuleV1Beta3 `field:"optional" json:"nonResourceRules" yaml:"nonResourceRules"` - // `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. - // - // At least one of `resourceRules` and `nonResourceRules` has to be non-empty. - ResourceRules *[]*ResourcePolicyRuleV1Beta3 `field:"optional" json:"resourceRules" yaml:"resourceRules"` -} - diff --git a/pods/imports/k8s/PortworxVolumeSource.go b/pods/imports/k8s/PortworxVolumeSource.go deleted file mode 100644 index 5cc4a4ae7..000000000 --- a/pods/imports/k8s/PortworxVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// PortworxVolumeSource represents a Portworx volume resource. -type PortworxVolumeSource struct { - // volumeID uniquely identifies a Portworx volume. - VolumeId *string `field:"required" json:"volumeId" yaml:"volumeId"` - // fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. - // - // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` -} - diff --git a/pods/imports/k8s/Preconditions.go b/pods/imports/k8s/Preconditions.go deleted file mode 100644 index 12cffa0d5..000000000 --- a/pods/imports/k8s/Preconditions.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. -type Preconditions struct { - // Specifies the target ResourceVersion. - ResourceVersion *string `field:"optional" json:"resourceVersion" yaml:"resourceVersion"` - // Specifies the target UID. - Uid *string `field:"optional" json:"uid" yaml:"uid"` -} - diff --git a/pods/imports/k8s/PreferredSchedulingTerm.go b/pods/imports/k8s/PreferredSchedulingTerm.go deleted file mode 100644 index 82e287d3e..000000000 --- a/pods/imports/k8s/PreferredSchedulingTerm.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). -type PreferredSchedulingTerm struct { - // A node selector term, associated with the corresponding weight. - Preference *NodeSelectorTerm `field:"required" json:"preference" yaml:"preference"` - // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - Weight *float64 `field:"required" json:"weight" yaml:"weight"` -} - diff --git a/pods/imports/k8s/PriorityLevelConfigurationReference.go b/pods/imports/k8s/PriorityLevelConfigurationReference.go deleted file mode 100644 index 8051b314b..000000000 --- a/pods/imports/k8s/PriorityLevelConfigurationReference.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// PriorityLevelConfigurationReference contains information that points to the "request-priority" being used. -type PriorityLevelConfigurationReference struct { - // `name` is the name of the priority level configuration being referenced Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go b/pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go deleted file mode 100644 index 03c5bbee4..000000000 --- a/pods/imports/k8s/PriorityLevelConfigurationReferenceV1Beta3.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// PriorityLevelConfigurationReference contains information that points to the "request-priority" being used. -type PriorityLevelConfigurationReferenceV1Beta3 struct { - // `name` is the name of the priority level configuration being referenced Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/PriorityLevelConfigurationSpec.go b/pods/imports/k8s/PriorityLevelConfigurationSpec.go deleted file mode 100644 index 631804cc3..000000000 --- a/pods/imports/k8s/PriorityLevelConfigurationSpec.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// PriorityLevelConfigurationSpec specifies the configuration of a priority level. -type PriorityLevelConfigurationSpec struct { - // `type` indicates whether this priority level is subject to limitation on request execution. - // - // A value of `"Exempt"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `"Limited"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. - Type *string `field:"required" json:"type" yaml:"type"` - // `exempt` specifies how requests are handled for an exempt priority level. - // - // This field MUST be empty if `type` is `"Limited"`. This field MAY be non-empty if `type` is `"Exempt"`. If empty and `type` is `"Exempt"` then the default values for `ExemptPriorityLevelConfiguration` apply. - Exempt *ExemptPriorityLevelConfiguration `field:"optional" json:"exempt" yaml:"exempt"` - // `limited` specifies how requests are handled for a Limited priority level. - // - // This field must be non-empty if and only if `type` is `"Limited"`. - Limited *LimitedPriorityLevelConfiguration `field:"optional" json:"limited" yaml:"limited"` -} - diff --git a/pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go b/pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go deleted file mode 100644 index 823bbc1e1..000000000 --- a/pods/imports/k8s/PriorityLevelConfigurationSpecV1Beta3.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// PriorityLevelConfigurationSpec specifies the configuration of a priority level. -type PriorityLevelConfigurationSpecV1Beta3 struct { - // `type` indicates whether this priority level is subject to limitation on request execution. - // - // A value of `"Exempt"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `"Limited"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. - Type *string `field:"required" json:"type" yaml:"type"` - // `exempt` specifies how requests are handled for an exempt priority level. - // - // This field MUST be empty if `type` is `"Limited"`. This field MAY be non-empty if `type` is `"Exempt"`. If empty and `type` is `"Exempt"` then the default values for `ExemptPriorityLevelConfiguration` apply. - Exempt *ExemptPriorityLevelConfigurationV1Beta3 `field:"optional" json:"exempt" yaml:"exempt"` - // `limited` specifies how requests are handled for a Limited priority level. - // - // This field must be non-empty if and only if `type` is `"Limited"`. - Limited *LimitedPriorityLevelConfigurationV1Beta3 `field:"optional" json:"limited" yaml:"limited"` -} - diff --git a/pods/imports/k8s/Probe.go b/pods/imports/k8s/Probe.go deleted file mode 100644 index 631d604ba..000000000 --- a/pods/imports/k8s/Probe.go +++ /dev/null @@ -1,47 +0,0 @@ -package k8s - - -// Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. -type Probe struct { - // Exec specifies the action to take. - Exec *ExecAction `field:"optional" json:"exec" yaml:"exec"` - // Minimum consecutive failures for the probe to be considered failed after having succeeded. - // - // Defaults to 3. Minimum value is 1. - // Default: 3. Minimum value is 1. - // - FailureThreshold *float64 `field:"optional" json:"failureThreshold" yaml:"failureThreshold"` - // GRPC specifies an action involving a GRPC port. - Grpc *GrpcAction `field:"optional" json:"grpc" yaml:"grpc"` - // HTTPGet specifies the http request to perform. - HttpGet *HttpGetAction `field:"optional" json:"httpGet" yaml:"httpGet"` - // Number of seconds after the container has started before liveness probes are initiated. - // - // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - InitialDelaySeconds *float64 `field:"optional" json:"initialDelaySeconds" yaml:"initialDelaySeconds"` - // How often (in seconds) to perform the probe. - // - // Default to 10 seconds. Minimum value is 1. - // Default: 10 seconds. Minimum value is 1. - // - PeriodSeconds *float64 `field:"optional" json:"periodSeconds" yaml:"periodSeconds"` - // Minimum consecutive successes for the probe to be considered successful after having failed. - // - // Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - // Default: 1. Must be 1 for liveness and startup. Minimum value is 1. - // - SuccessThreshold *float64 `field:"optional" json:"successThreshold" yaml:"successThreshold"` - // TCPSocket specifies an action involving a TCP port. - TcpSocket *TcpSocketAction `field:"optional" json:"tcpSocket" yaml:"tcpSocket"` - // Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - // - // The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - TerminationGracePeriodSeconds *float64 `field:"optional" json:"terminationGracePeriodSeconds" yaml:"terminationGracePeriodSeconds"` - // Number of seconds after which the probe times out. - // - // Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - // Default: 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - // - TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` -} - diff --git a/pods/imports/k8s/ProjectedVolumeSource.go b/pods/imports/k8s/ProjectedVolumeSource.go deleted file mode 100644 index 052cd57d4..000000000 --- a/pods/imports/k8s/ProjectedVolumeSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Represents a projected volume source. -type ProjectedVolumeSource struct { - // defaultMode are the mode bits used to set permissions on created files by default. - // - // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` - // sources is the list of volume projections. - // - // Each entry in this list handles one source. - Sources *[]*VolumeProjection `field:"optional" json:"sources" yaml:"sources"` -} - diff --git a/pods/imports/k8s/Quantity.go b/pods/imports/k8s/Quantity.go deleted file mode 100644 index 9d61166b5..000000000 --- a/pods/imports/k8s/Quantity.go +++ /dev/null @@ -1,63 +0,0 @@ -package k8s - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/k8s/jsii" -) - -type Quantity interface { - Value() interface{} -} - -// The jsii proxy struct for Quantity -type jsiiProxy_Quantity struct { - _ byte // padding -} - -func (j *jsiiProxy_Quantity) Value() interface{} { - var returns interface{} - _jsii_.Get( - j, - "value", - &returns, - ) - return returns -} - - -func Quantity_FromNumber(value *float64) Quantity { - _init_.Initialize() - - if err := validateQuantity_FromNumberParameters(value); err != nil { - panic(err) - } - var returns Quantity - - _jsii_.StaticInvoke( - "k8s.Quantity", - "fromNumber", - []interface{}{value}, - &returns, - ) - - return returns -} - -func Quantity_FromString(value *string) Quantity { - _init_.Initialize() - - if err := validateQuantity_FromStringParameters(value); err != nil { - panic(err) - } - var returns Quantity - - _jsii_.StaticInvoke( - "k8s.Quantity", - "fromString", - []interface{}{value}, - &returns, - ) - - return returns -} - diff --git a/pods/imports/k8s/Quantity__checks.go b/pods/imports/k8s/Quantity__checks.go deleted file mode 100644 index 147c20548..000000000 --- a/pods/imports/k8s/Quantity__checks.go +++ /dev/null @@ -1,24 +0,0 @@ -//go:build !no_runtime_type_checking - -package k8s - -import ( - "fmt" -) - -func validateQuantity_FromNumberParameters(value *float64) error { - if value == nil { - return fmt.Errorf("parameter value is required, but nil was provided") - } - - return nil -} - -func validateQuantity_FromStringParameters(value *string) error { - if value == nil { - return fmt.Errorf("parameter value is required, but nil was provided") - } - - return nil -} - diff --git a/pods/imports/k8s/Quantity__no_checks.go b/pods/imports/k8s/Quantity__no_checks.go deleted file mode 100644 index 28a80f51b..000000000 --- a/pods/imports/k8s/Quantity__no_checks.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build no_runtime_type_checking - -package k8s - -// Building without runtime type checking enabled, so all the below just return nil - -func validateQuantity_FromNumberParameters(value *float64) error { - return nil -} - -func validateQuantity_FromStringParameters(value *string) error { - return nil -} - diff --git a/pods/imports/k8s/QueuingConfiguration.go b/pods/imports/k8s/QueuingConfiguration.go deleted file mode 100644 index 482161620..000000000 --- a/pods/imports/k8s/QueuingConfiguration.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// QueuingConfiguration holds the configuration parameters for queuing. -type QueuingConfiguration struct { - // `handSize` is a small positive number that configures the shuffle sharding of requests into queues. - // - // When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. - HandSize *float64 `field:"optional" json:"handSize" yaml:"handSize"` - // `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; - // - // excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. - QueueLengthLimit *float64 `field:"optional" json:"queueLengthLimit" yaml:"queueLengthLimit"` - // `queues` is the number of queues for this priority level. - // - // The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. - Queues *float64 `field:"optional" json:"queues" yaml:"queues"` -} - diff --git a/pods/imports/k8s/QueuingConfigurationV1Beta3.go b/pods/imports/k8s/QueuingConfigurationV1Beta3.go deleted file mode 100644 index 9c3ca201e..000000000 --- a/pods/imports/k8s/QueuingConfigurationV1Beta3.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// QueuingConfiguration holds the configuration parameters for queuing. -type QueuingConfigurationV1Beta3 struct { - // `handSize` is a small positive number that configures the shuffle sharding of requests into queues. - // - // When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. - HandSize *float64 `field:"optional" json:"handSize" yaml:"handSize"` - // `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; - // - // excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. - QueueLengthLimit *float64 `field:"optional" json:"queueLengthLimit" yaml:"queueLengthLimit"` - // `queues` is the number of queues for this priority level. - // - // The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. - Queues *float64 `field:"optional" json:"queues" yaml:"queues"` -} - diff --git a/pods/imports/k8s/QuobyteVolumeSource.go b/pods/imports/k8s/QuobyteVolumeSource.go deleted file mode 100644 index 79e2ba236..000000000 --- a/pods/imports/k8s/QuobyteVolumeSource.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// Represents a Quobyte mount that lasts the lifetime of a pod. -// -// Quobyte volumes do not support ownership management or SELinux relabeling. -type QuobyteVolumeSource struct { - // registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes. - Registry *string `field:"required" json:"registry" yaml:"registry"` - // volume is a string that references an already created Quobyte volume by name. - Volume *string `field:"required" json:"volume" yaml:"volume"` - // group to map volume access to Default is no group. - // Default: no group. - // - Group *string `field:"optional" json:"group" yaml:"group"` - // readOnly here will force the Quobyte volume to be mounted with read-only permissions. - // - // Defaults to false. - // Default: false. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin. - Tenant *string `field:"optional" json:"tenant" yaml:"tenant"` - // user to map volume access to Defaults to serivceaccount user. - // Default: serivceaccount user. - // - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/RbdPersistentVolumeSource.go b/pods/imports/k8s/RbdPersistentVolumeSource.go deleted file mode 100644 index 67171ddeb..000000000 --- a/pods/imports/k8s/RbdPersistentVolumeSource.go +++ /dev/null @@ -1,51 +0,0 @@ -package k8s - - -// Represents a Rados Block Device mount that lasts the lifetime of a pod. -// -// RBD volumes support ownership management and SELinux relabeling. -type RbdPersistentVolumeSource struct { - // image is the rados image name. - // - // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - Image *string `field:"required" json:"image" yaml:"image"` - // monitors is a collection of Ceph monitors. - // - // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` - // fsType is the filesystem type of the volume that you want to mount. - // - // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // keyring is the path to key ring for RBDUser. - // - // Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - Keyring *string `field:"optional" json:"keyring" yaml:"keyring"` - // pool is the rados pool name. - // - // Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - Pool *string `field:"optional" json:"pool" yaml:"pool"` - // readOnly here will force the ReadOnly setting in VolumeMounts. - // - // Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is name of the authentication secret for RBDUser. - // - // If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - SecretRef *SecretReference `field:"optional" json:"secretRef" yaml:"secretRef"` - // user is the rados user name. - // - // Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/RbdVolumeSource.go b/pods/imports/k8s/RbdVolumeSource.go deleted file mode 100644 index f9810fa82..000000000 --- a/pods/imports/k8s/RbdVolumeSource.go +++ /dev/null @@ -1,51 +0,0 @@ -package k8s - - -// Represents a Rados Block Device mount that lasts the lifetime of a pod. -// -// RBD volumes support ownership management and SELinux relabeling. -type RbdVolumeSource struct { - // image is the rados image name. - // - // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - Image *string `field:"required" json:"image" yaml:"image"` - // monitors is a collection of Ceph monitors. - // - // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - Monitors *[]*string `field:"required" json:"monitors" yaml:"monitors"` - // fsType is the filesystem type of the volume that you want to mount. - // - // Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // keyring is the path to key ring for RBDUser. - // - // Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - Keyring *string `field:"optional" json:"keyring" yaml:"keyring"` - // pool is the rados pool name. - // - // Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - Pool *string `field:"optional" json:"pool" yaml:"pool"` - // readOnly here will force the ReadOnly setting in VolumeMounts. - // - // Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef is name of the authentication secret for RBDUser. - // - // If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` - // user is the rados user name. - // - // Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // Default: admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - // - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/ReplicaSetSpec.go b/pods/imports/k8s/ReplicaSetSpec.go deleted file mode 100644 index 30ed2ce9f..000000000 --- a/pods/imports/k8s/ReplicaSetSpec.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// ReplicaSetSpec is the specification of a ReplicaSet. -type ReplicaSetSpec struct { - // Selector is a label query over pods that should match the replica count. - // - // Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors - Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` - // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. - // - // Defaults to 0 (pod will be considered available as soon as it is ready). - // Default: 0 (pod will be considered available as soon as it is ready). - // - MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` - // Replicas is the number of desired replicas. - // - // This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller - // Default: 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller - // - Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` - // Template is the object that describes the pod that will be created if insufficient replicas are detected. - // - // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template - Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` -} - diff --git a/pods/imports/k8s/ReplicationControllerSpec.go b/pods/imports/k8s/ReplicationControllerSpec.go deleted file mode 100644 index edfab8412..000000000 --- a/pods/imports/k8s/ReplicationControllerSpec.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// ReplicationControllerSpec is the specification of a replication controller. -type ReplicationControllerSpec struct { - // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. - // - // Defaults to 0 (pod will be considered available as soon as it is ready). - // Default: 0 (pod will be considered available as soon as it is ready). - // - MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` - // Replicas is the number of desired replicas. - // - // This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller - // Default: 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller - // - Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` - // Selector is a label query over pods that should match the Replicas count. - // - // If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors - Selector *map[string]*string `field:"optional" json:"selector" yaml:"selector"` - // Template is the object that describes the pod that will be created if insufficient replicas are detected. - // - // This takes precedence over a TemplateRef. The only allowed template.spec.restartPolicy value is "Always". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template - Template *PodTemplateSpec `field:"optional" json:"template" yaml:"template"` -} - diff --git a/pods/imports/k8s/ResourceAttributes.go b/pods/imports/k8s/ResourceAttributes.go deleted file mode 100644 index ad00bcd9b..000000000 --- a/pods/imports/k8s/ResourceAttributes.go +++ /dev/null @@ -1,43 +0,0 @@ -package k8s - - -// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface. -type ResourceAttributes struct { - // fieldSelector describes the limitation on access based on field. It can only limit access, not broaden it. - // - // This field is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default). - FieldSelector *FieldSelectorAttributes `field:"optional" json:"fieldSelector" yaml:"fieldSelector"` - // Group is the API Group of the Resource. - // - // "*" means all. - Group *string `field:"optional" json:"group" yaml:"group"` - // labelSelector describes the limitation on access based on labels. It can only limit access, not broaden it. - // - // This field is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default). - LabelSelector *LabelSelectorAttributes `field:"optional" json:"labelSelector" yaml:"labelSelector"` - // Name is the name of the resource being requested for a "get" or deleted for a "delete". - // - // "" (empty) means all. - Name *string `field:"optional" json:"name" yaml:"name"` - // Namespace is the namespace of the action being requested. - // - // Currently, there is no distinction between no namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews "" (empty) is empty for cluster-scoped resources "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` - // Resource is one of the existing resource types. - // - // "*" means all. - Resource *string `field:"optional" json:"resource" yaml:"resource"` - // Subresource is one of the existing resource types. - // - // "" means none. - Subresource *string `field:"optional" json:"subresource" yaml:"subresource"` - // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. - // - // "*" means all. - Verb *string `field:"optional" json:"verb" yaml:"verb"` - // Version is the API Version of the Resource. - // - // "*" means all. - Version *string `field:"optional" json:"version" yaml:"version"` -} - diff --git a/pods/imports/k8s/ResourceClaim.go b/pods/imports/k8s/ResourceClaim.go deleted file mode 100644 index 4ad44bdd1..000000000 --- a/pods/imports/k8s/ResourceClaim.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ResourceClaim references one entry in PodSpec.ResourceClaims. -type ResourceClaim struct { - // Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - Name *string `field:"required" json:"name" yaml:"name"` - // Request is the name chosen for a request in the referenced claim. - // - // If empty, everything from the claim is made available, otherwise only the result of this request. - Request *string `field:"optional" json:"request" yaml:"request"` -} - diff --git a/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go b/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go deleted file mode 100644 index 98a9d1290..000000000 --- a/pods/imports/k8s/ResourceClaimSpecV1Alpha3.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it. -type ResourceClaimSpecV1Alpha3 struct { - // Controller is the name of the DRA driver that is meant to handle allocation of this claim. - // - // If empty, allocation is handled by the scheduler while scheduling a pod. - // - // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. - // - // This is an alpha field and requires enabling the DRAControlPlaneController feature gate. - Controller *string `field:"optional" json:"controller" yaml:"controller"` - // Devices defines how to request devices. - Devices *DeviceClaimV1Alpha3 `field:"optional" json:"devices" yaml:"devices"` -} - diff --git a/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go b/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go deleted file mode 100644 index bf4231df2..000000000 --- a/pods/imports/k8s/ResourceClaimTemplateSpecV1Alpha3.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim. -type ResourceClaimTemplateSpecV1Alpha3 struct { - // Spec for the ResourceClaim. - // - // The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here. - Spec *ResourceClaimSpecV1Alpha3 `field:"required" json:"spec" yaml:"spec"` - // ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. - // - // No other fields are allowed and will be rejected during validation. - Metadata *ObjectMeta `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/k8s/ResourceFieldSelector.go b/pods/imports/k8s/ResourceFieldSelector.go deleted file mode 100644 index 46b5bbfde..000000000 --- a/pods/imports/k8s/ResourceFieldSelector.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ResourceFieldSelector represents container resources (cpu, memory) and their output format. -type ResourceFieldSelector struct { - // Required: resource to select. - Resource *string `field:"required" json:"resource" yaml:"resource"` - // Container name: required for volumes, optional for env vars. - ContainerName *string `field:"optional" json:"containerName" yaml:"containerName"` - // Specifies the output format of the exposed resources, defaults to "1". - Divisor Quantity `field:"optional" json:"divisor" yaml:"divisor"` -} - diff --git a/pods/imports/k8s/ResourceMetricSourceV2.go b/pods/imports/k8s/ResourceMetricSourceV2.go deleted file mode 100644 index fd3878381..000000000 --- a/pods/imports/k8s/ResourceMetricSourceV2.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. Only one "target" type should be set. -type ResourceMetricSourceV2 struct { - // name is the name of the resource in question. - Name *string `field:"required" json:"name" yaml:"name"` - // target specifies the target value for the given metric. - Target *MetricTargetV2 `field:"required" json:"target" yaml:"target"` -} - diff --git a/pods/imports/k8s/ResourcePolicyRule.go b/pods/imports/k8s/ResourcePolicyRule.go deleted file mode 100644 index 259112942..000000000 --- a/pods/imports/k8s/ResourcePolicyRule.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. -// -// A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==""`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace. -type ResourcePolicyRule struct { - // `apiGroups` is a list of matching API groups and may not be empty. - // - // "*" matches all API groups and, if present, must be the only entry. Required. - ApiGroups *[]*string `field:"required" json:"apiGroups" yaml:"apiGroups"` - // `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required. - Resources *[]*string `field:"required" json:"resources" yaml:"resources"` - // `verbs` is a list of matching verbs and may not be empty. - // - // "*" matches all verbs and, if present, must be the only entry. Required. - Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` - // `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). - // - // If this field is omitted or false then the `namespaces` field must contain a non-empty list. - ClusterScope *bool `field:"optional" json:"clusterScope" yaml:"clusterScope"` - // `namespaces` is a list of target namespaces that restricts matches. - // - // A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. - Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` -} - diff --git a/pods/imports/k8s/ResourcePolicyRuleV1Beta3.go b/pods/imports/k8s/ResourcePolicyRuleV1Beta3.go deleted file mode 100644 index 9a2fe6d37..000000000 --- a/pods/imports/k8s/ResourcePolicyRuleV1Beta3.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. -// -// A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==""`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace. -type ResourcePolicyRuleV1Beta3 struct { - // `apiGroups` is a list of matching API groups and may not be empty. - // - // "*" matches all API groups and, if present, must be the only entry. Required. - ApiGroups *[]*string `field:"required" json:"apiGroups" yaml:"apiGroups"` - // `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required. - Resources *[]*string `field:"required" json:"resources" yaml:"resources"` - // `verbs` is a list of matching verbs and may not be empty. - // - // "*" matches all verbs and, if present, must be the only entry. Required. - Verbs *[]*string `field:"required" json:"verbs" yaml:"verbs"` - // `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). - // - // If this field is omitted or false then the `namespaces` field must contain a non-empty list. - ClusterScope *bool `field:"optional" json:"clusterScope" yaml:"clusterScope"` - // `namespaces` is a list of target namespaces that restricts matches. - // - // A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. - Namespaces *[]*string `field:"optional" json:"namespaces" yaml:"namespaces"` -} - diff --git a/pods/imports/k8s/ResourcePoolV1Alpha3.go b/pods/imports/k8s/ResourcePoolV1Alpha3.go deleted file mode 100644 index 3c5d5631d..000000000 --- a/pods/imports/k8s/ResourcePoolV1Alpha3.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ResourcePool describes the pool that ResourceSlices belong to. -type ResourcePoolV1Alpha3 struct { - // Generation tracks the change in a pool over time. - // - // Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted. - // - // Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state. - Generation *float64 `field:"required" json:"generation" yaml:"generation"` - // Name is used to identify the pool. - // - // For node-local devices, this is often the node name, but this is not required. - // - // It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable. - Name *string `field:"required" json:"name" yaml:"name"` - // ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero. - // - // Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool. - ResourceSliceCount *float64 `field:"required" json:"resourceSliceCount" yaml:"resourceSliceCount"` -} - diff --git a/pods/imports/k8s/ResourceQuotaSpec.go b/pods/imports/k8s/ResourceQuotaSpec.go deleted file mode 100644 index 1a4243e71..000000000 --- a/pods/imports/k8s/ResourceQuotaSpec.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// ResourceQuotaSpec defines the desired hard limits to enforce for Quota. -type ResourceQuotaSpec struct { - // hard is the set of desired hard limits for each named resource. - // - // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ - Hard *map[string]Quantity `field:"optional" json:"hard" yaml:"hard"` - // A collection of filters that must match each object tracked by a quota. - // - // If not specified, the quota matches all objects. - Scopes *[]*string `field:"optional" json:"scopes" yaml:"scopes"` - // scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota but expressed using ScopeSelectorOperator in combination with possible values. - // - // For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched. - ScopeSelector *ScopeSelector `field:"optional" json:"scopeSelector" yaml:"scopeSelector"` -} - diff --git a/pods/imports/k8s/ResourceRequirements.go b/pods/imports/k8s/ResourceRequirements.go deleted file mode 100644 index ccae08dfb..000000000 --- a/pods/imports/k8s/ResourceRequirements.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// ResourceRequirements describes the compute resource requirements. -type ResourceRequirements struct { - // Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - // - // This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - // - // This field is immutable. It can only be set for containers. - Claims *[]*ResourceClaim `field:"optional" json:"claims" yaml:"claims"` - // Limits describes the maximum amount of compute resources allowed. - // - // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - Limits *map[string]Quantity `field:"optional" json:"limits" yaml:"limits"` - // Requests describes the minimum amount of compute resources required. - // - // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - Requests *map[string]Quantity `field:"optional" json:"requests" yaml:"requests"` -} - diff --git a/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go b/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go deleted file mode 100644 index a21058055..000000000 --- a/pods/imports/k8s/ResourceSliceSpecV1Alpha3.go +++ /dev/null @@ -1,37 +0,0 @@ -package k8s - - -// ResourceSliceSpec contains the information published by the driver in one ResourceSlice. -type ResourceSliceSpecV1Alpha3 struct { - // Driver identifies the DRA driver providing the capacity information. - // - // A field selector can be used to list only ResourceSlice objects with a certain driver name. - // - // Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable. - Driver *string `field:"required" json:"driver" yaml:"driver"` - // Pool describes the pool that this ResourceSlice belongs to. - Pool *ResourcePoolV1Alpha3 `field:"required" json:"pool" yaml:"pool"` - // AllNodes indicates that all nodes have access to the resources in the pool. - // - // Exactly one of NodeName, NodeSelector and AllNodes must be set. - AllNodes *bool `field:"optional" json:"allNodes" yaml:"allNodes"` - // Devices lists some or all of the devices in this pool. - // - // Must not have more than 128 entries. - Devices *[]*DeviceV1Alpha3 `field:"optional" json:"devices" yaml:"devices"` - // NodeName identifies the node which provides the resources in this pool. - // - // A field selector can be used to list only ResourceSlice objects belonging to a certain node. - // - // This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available. - // - // Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable. - NodeName *string `field:"optional" json:"nodeName" yaml:"nodeName"` - // NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node. - // - // Must use exactly one term. - // - // Exactly one of NodeName, NodeSelector and AllNodes must be set. - NodeSelector *NodeSelector `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` -} - diff --git a/pods/imports/k8s/RoleRef.go b/pods/imports/k8s/RoleRef.go deleted file mode 100644 index 364ad5f79..000000000 --- a/pods/imports/k8s/RoleRef.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// RoleRef contains information that points to the role being used. -type RoleRef struct { - // APIGroup is the group for the resource being referenced. - ApiGroup *string `field:"required" json:"apiGroup" yaml:"apiGroup"` - // Kind is the type of resource being referenced. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // Name is the name of resource being referenced. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/RollingUpdateDaemonSet.go b/pods/imports/k8s/RollingUpdateDaemonSet.go deleted file mode 100644 index 33be5c436..000000000 --- a/pods/imports/k8s/RollingUpdateDaemonSet.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Spec to control the desired behavior of daemon set rolling update. -type RollingUpdateDaemonSet struct { - // The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. - // - // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. - MaxSurge IntOrString `field:"optional" json:"maxSurge" yaml:"maxSurge"` - // The maximum number of DaemonSet pods that can be unavailable during the update. - // - // Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update. - MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` -} - diff --git a/pods/imports/k8s/RollingUpdateDeployment.go b/pods/imports/k8s/RollingUpdateDeployment.go deleted file mode 100644 index 7980c65ae..000000000 --- a/pods/imports/k8s/RollingUpdateDeployment.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// Spec to control the desired behavior of rolling update. -type RollingUpdateDeployment struct { - // The maximum number of pods that can be scheduled above the desired number of pods. - // - // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods. - // Default: 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods. - // - MaxSurge IntOrString `field:"optional" json:"maxSurge" yaml:"maxSurge"` - // The maximum number of pods that can be unavailable during the update. - // - // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods. - // Default: 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods. - // - MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` -} - diff --git a/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go b/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go deleted file mode 100644 index 7ad8d5592..000000000 --- a/pods/imports/k8s/RollingUpdateStatefulSetStrategy.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. -type RollingUpdateStatefulSetStrategy struct { - // The maximum number of pods that can be unavailable during the update. - // - // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable. - // Default: 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable. - // - MaxUnavailable IntOrString `field:"optional" json:"maxUnavailable" yaml:"maxUnavailable"` - // Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. - // - // During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0. - Partition *float64 `field:"optional" json:"partition" yaml:"partition"` -} - diff --git a/pods/imports/k8s/RuleWithOperations.go b/pods/imports/k8s/RuleWithOperations.go deleted file mode 100644 index 125722d62..000000000 --- a/pods/imports/k8s/RuleWithOperations.go +++ /dev/null @@ -1,35 +0,0 @@ -package k8s - - -// RuleWithOperations is a tuple of Operations and Resources. -// -// It is recommended to make sure that all the tuple expansions are valid. -type RuleWithOperations struct { - // APIGroups is the API groups the resources belong to. - // - // '*' is all groups. If '*' is present, the length of the slice must be one. Required. - ApiGroups *[]*string `field:"optional" json:"apiGroups" yaml:"apiGroups"` - // APIVersions is the API versions the resources belong to. - // - // '*' is all versions. If '*' is present, the length of the slice must be one. Required. - ApiVersions *[]*string `field:"optional" json:"apiVersions" yaml:"apiVersions"` - // Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. - // - // If '*' is present, the length of the slice must be one. Required. - Operations *[]*string `field:"optional" json:"operations" yaml:"operations"` - // Resources is a list of resources this rule applies to. - // - // For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. - // - // If wildcard is present, the validation rule will ensure resources do not overlap with each other. - // - // Depending on the enclosing object, subresources might not be allowed. Required. - Resources *[]*string `field:"optional" json:"resources" yaml:"resources"` - // scope specifies the scope of this rule. - // - // Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". - // Default: . - // - Scope *string `field:"optional" json:"scope" yaml:"scope"` -} - diff --git a/pods/imports/k8s/ScaleIoPersistentVolumeSource.go b/pods/imports/k8s/ScaleIoPersistentVolumeSource.go deleted file mode 100644 index 9222b0215..000000000 --- a/pods/imports/k8s/ScaleIoPersistentVolumeSource.go +++ /dev/null @@ -1,39 +0,0 @@ -package k8s - - -// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume. -type ScaleIoPersistentVolumeSource struct { - // gateway is the host address of the ScaleIO API Gateway. - Gateway *string `field:"required" json:"gateway" yaml:"gateway"` - // secretRef references to the secret for ScaleIO user and other sensitive information. - // - // If this is not provided, Login operation will fail. - SecretRef *SecretReference `field:"required" json:"secretRef" yaml:"secretRef"` - // system is the name of the storage system as configured in ScaleIO. - System *string `field:"required" json:"system" yaml:"system"` - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs" - // Default: xfs". - // - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. - ProtectionDomain *string `field:"optional" json:"protectionDomain" yaml:"protectionDomain"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // sslEnabled is the flag to enable/disable SSL communication with Gateway, default false. - SslEnabled *bool `field:"optional" json:"sslEnabled" yaml:"sslEnabled"` - // storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - // - // Default is ThinProvisioned. - // Default: ThinProvisioned. - // - StorageMode *string `field:"optional" json:"storageMode" yaml:"storageMode"` - // storagePool is the ScaleIO Storage Pool associated with the protection domain. - StoragePool *string `field:"optional" json:"storagePool" yaml:"storagePool"` - // volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. - VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` -} - diff --git a/pods/imports/k8s/ScaleIoVolumeSource.go b/pods/imports/k8s/ScaleIoVolumeSource.go deleted file mode 100644 index 12296a88b..000000000 --- a/pods/imports/k8s/ScaleIoVolumeSource.go +++ /dev/null @@ -1,41 +0,0 @@ -package k8s - - -// ScaleIOVolumeSource represents a persistent ScaleIO volume. -type ScaleIoVolumeSource struct { - // gateway is the host address of the ScaleIO API Gateway. - Gateway *string `field:"required" json:"gateway" yaml:"gateway"` - // secretRef references to the secret for ScaleIO user and other sensitive information. - // - // If this is not provided, Login operation will fail. - SecretRef *LocalObjectReference `field:"required" json:"secretRef" yaml:"secretRef"` - // system is the name of the storage system as configured in ScaleIO. - System *string `field:"required" json:"system" yaml:"system"` - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". - // Default: xfs". - // - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. - ProtectionDomain *string `field:"optional" json:"protectionDomain" yaml:"protectionDomain"` - // readOnly Defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - // Default: false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // sslEnabled Flag enable/disable SSL communication with Gateway, default false. - SslEnabled *bool `field:"optional" json:"sslEnabled" yaml:"sslEnabled"` - // storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - // - // Default is ThinProvisioned. - // Default: ThinProvisioned. - // - StorageMode *string `field:"optional" json:"storageMode" yaml:"storageMode"` - // storagePool is the ScaleIO Storage Pool associated with the protection domain. - StoragePool *string `field:"optional" json:"storagePool" yaml:"storagePool"` - // volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. - VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` -} - diff --git a/pods/imports/k8s/ScaleSpec.go b/pods/imports/k8s/ScaleSpec.go deleted file mode 100644 index 39f2bc8ae..000000000 --- a/pods/imports/k8s/ScaleSpec.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// ScaleSpec describes the attributes of a scale subresource. -type ScaleSpec struct { - // replicas is the desired number of instances for the scaled object. - Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` -} - diff --git a/pods/imports/k8s/Scheduling.go b/pods/imports/k8s/Scheduling.go deleted file mode 100644 index 389ac7b81..000000000 --- a/pods/imports/k8s/Scheduling.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass. -type Scheduling struct { - // nodeSelector lists labels that must be present on nodes that support this RuntimeClass. - // - // Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission. - NodeSelector *map[string]*string `field:"optional" json:"nodeSelector" yaml:"nodeSelector"` - // tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass. - Tolerations *[]*Toleration `field:"optional" json:"tolerations" yaml:"tolerations"` -} - diff --git a/pods/imports/k8s/ScopeSelector.go b/pods/imports/k8s/ScopeSelector.go deleted file mode 100644 index 74d04fe79..000000000 --- a/pods/imports/k8s/ScopeSelector.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements. -type ScopeSelector struct { - // A list of scope selector requirements by scope of the resources. - MatchExpressions *[]*ScopedResourceSelectorRequirement `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` -} - diff --git a/pods/imports/k8s/ScopedResourceSelectorRequirement.go b/pods/imports/k8s/ScopedResourceSelectorRequirement.go deleted file mode 100644 index 0b040898a..000000000 --- a/pods/imports/k8s/ScopedResourceSelectorRequirement.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values. -type ScopedResourceSelectorRequirement struct { - // Represents a scope's relationship to a set of values. - // - // Valid operators are In, NotIn, Exists, DoesNotExist. - Operator *string `field:"required" json:"operator" yaml:"operator"` - // The name of the scope that the selector applies to. - ScopeName *string `field:"required" json:"scopeName" yaml:"scopeName"` - // An array of string values. - // - // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - Values *[]*string `field:"optional" json:"values" yaml:"values"` -} - diff --git a/pods/imports/k8s/SeLinuxOptions.go b/pods/imports/k8s/SeLinuxOptions.go deleted file mode 100644 index 48e9c8ec0..000000000 --- a/pods/imports/k8s/SeLinuxOptions.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// SELinuxOptions are the labels to be applied to the container. -type SeLinuxOptions struct { - // Level is SELinux level label that applies to the container. - Level *string `field:"optional" json:"level" yaml:"level"` - // Role is a SELinux role label that applies to the container. - Role *string `field:"optional" json:"role" yaml:"role"` - // Type is a SELinux type label that applies to the container. - Type *string `field:"optional" json:"type" yaml:"type"` - // User is a SELinux user label that applies to the container. - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/SeccompProfile.go b/pods/imports/k8s/SeccompProfile.go deleted file mode 100644 index 20c2015eb..000000000 --- a/pods/imports/k8s/SeccompProfile.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// SeccompProfile defines a pod/container's seccomp profile settings. -// -// Only one profile source may be set. -type SeccompProfile struct { - // type indicates which kind of seccomp profile will be applied. Valid options are:. - // - // Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. - Type *string `field:"required" json:"type" yaml:"type"` - // localhostProfile indicates a profile defined in a file on the node should be used. - // - // The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. - LocalhostProfile *string `field:"optional" json:"localhostProfile" yaml:"localhostProfile"` -} - diff --git a/pods/imports/k8s/SecretEnvSource.go b/pods/imports/k8s/SecretEnvSource.go deleted file mode 100644 index 894122884..000000000 --- a/pods/imports/k8s/SecretEnvSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// SecretEnvSource selects a Secret to populate the environment variables with. -// -// The contents of the target Secret's Data field will represent the key-value pairs as environment variables. -type SecretEnvSource struct { - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/SecretKeySelector.go b/pods/imports/k8s/SecretKeySelector.go deleted file mode 100644 index 22e047c3e..000000000 --- a/pods/imports/k8s/SecretKeySelector.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// SecretKeySelector selects a key of a Secret. -type SecretKeySelector struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/SecretProjection.go b/pods/imports/k8s/SecretProjection.go deleted file mode 100644 index 6a66e9255..000000000 --- a/pods/imports/k8s/SecretProjection.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// Adapts a secret into a projected volume. -// -// The contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode. -type SecretProjection struct { - // items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. - // - // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` - // Name of the referent. - // - // This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"optional" json:"name" yaml:"name"` - // optional field specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/k8s/SecretReference.go b/pods/imports/k8s/SecretReference.go deleted file mode 100644 index 0ad62614e..000000000 --- a/pods/imports/k8s/SecretReference.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// SecretReference represents a Secret Reference. -// -// It has enough information to retrieve secret in any namespace. -type SecretReference struct { - // name is unique within a namespace to reference a secret resource. - Name *string `field:"optional" json:"name" yaml:"name"` - // namespace defines the space within which the secret name must be unique. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` -} - diff --git a/pods/imports/k8s/SecretVolumeSource.go b/pods/imports/k8s/SecretVolumeSource.go deleted file mode 100644 index 61dfb46b8..000000000 --- a/pods/imports/k8s/SecretVolumeSource.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Adapts a Secret into a volume. -// -// The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling. -type SecretVolumeSource struct { - // defaultMode is Optional: mode bits used to set permissions on created files by default. - // - // Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - // Default: 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - // - DefaultMode *float64 `field:"optional" json:"defaultMode" yaml:"defaultMode"` - // items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. - // - // If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - Items *[]*KeyToPath `field:"optional" json:"items" yaml:"items"` - // optional field specify whether the Secret or its keys must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` - // secretName is the name of the secret in the pod's namespace to use. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - SecretName *string `field:"optional" json:"secretName" yaml:"secretName"` -} - diff --git a/pods/imports/k8s/SecurityContext.go b/pods/imports/k8s/SecurityContext.go deleted file mode 100644 index 1a18c5411..000000000 --- a/pods/imports/k8s/SecurityContext.go +++ /dev/null @@ -1,65 +0,0 @@ -package k8s - - -// SecurityContext holds security configuration that will be applied to a container. -// -// Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. -type SecurityContext struct { - // AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. - // - // This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. - AllowPrivilegeEscalation *bool `field:"optional" json:"allowPrivilegeEscalation" yaml:"allowPrivilegeEscalation"` - // appArmorProfile is the AppArmor options to use by this container. - // - // If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows. - AppArmorProfile *AppArmorProfile `field:"optional" json:"appArmorProfile" yaml:"appArmorProfile"` - // The capabilities to add/drop when running containers. - // - // Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. - // Default: the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. - // - Capabilities *Capabilities `field:"optional" json:"capabilities" yaml:"capabilities"` - // Run container in privileged mode. - // - // Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. - // Default: false. Note that this field cannot be set when spec.os.name is windows. - // - Privileged *bool `field:"optional" json:"privileged" yaml:"privileged"` - // procMount denotes the type of proc mount to use for the containers. - // - // The default value is Default which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. - ProcMount *string `field:"optional" json:"procMount" yaml:"procMount"` - // Whether this container has a read-only root filesystem. - // - // Default is false. Note that this field cannot be set when spec.os.name is windows. - // Default: false. Note that this field cannot be set when spec.os.name is windows. - // - ReadOnlyRootFilesystem *bool `field:"optional" json:"readOnlyRootFilesystem" yaml:"readOnlyRootFilesystem"` - // The GID to run the entrypoint of the container process. - // - // Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. - RunAsGroup *float64 `field:"optional" json:"runAsGroup" yaml:"runAsGroup"` - // Indicates that the container must run as a non-root user. - // - // If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - RunAsNonRoot *bool `field:"optional" json:"runAsNonRoot" yaml:"runAsNonRoot"` - // The UID to run the entrypoint of the container process. - // - // Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. - // Default: user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. - // - RunAsUser *float64 `field:"optional" json:"runAsUser" yaml:"runAsUser"` - // The seccomp options to use by this container. - // - // If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. - SeccompProfile *SeccompProfile `field:"optional" json:"seccompProfile" yaml:"seccompProfile"` - // The SELinux context to be applied to the container. - // - // If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. - SeLinuxOptions *SeLinuxOptions `field:"optional" json:"seLinuxOptions" yaml:"seLinuxOptions"` - // The Windows specific settings applied to all containers. - // - // If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. - WindowsOptions *WindowsSecurityContextOptions `field:"optional" json:"windowsOptions" yaml:"windowsOptions"` -} - diff --git a/pods/imports/k8s/SelectableField.go b/pods/imports/k8s/SelectableField.go deleted file mode 100644 index 315b7caee..000000000 --- a/pods/imports/k8s/SelectableField.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// SelectableField specifies the JSON path of a field that may be used with field selectors. -type SelectableField struct { - // jsonPath is a simple JSON path which is evaluated against each custom resource to produce a field selector value. - // - // Only JSON paths without the array notation are allowed. Must point to a field of type string, boolean or integer. Types with enum values and strings with formats are allowed. If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string. Must not point to metdata fields. Required. - JsonPath *string `field:"required" json:"jsonPath" yaml:"jsonPath"` -} - diff --git a/pods/imports/k8s/SelfSubjectAccessReviewSpec.go b/pods/imports/k8s/SelfSubjectAccessReviewSpec.go deleted file mode 100644 index d66e41746..000000000 --- a/pods/imports/k8s/SelfSubjectAccessReviewSpec.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// SelfSubjectAccessReviewSpec is a description of the access request. -// -// Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set. -type SelfSubjectAccessReviewSpec struct { - // NonResourceAttributes describes information for a non-resource access request. - NonResourceAttributes *NonResourceAttributes `field:"optional" json:"nonResourceAttributes" yaml:"nonResourceAttributes"` - // ResourceAuthorizationAttributes describes information for a resource access request. - ResourceAttributes *ResourceAttributes `field:"optional" json:"resourceAttributes" yaml:"resourceAttributes"` -} - diff --git a/pods/imports/k8s/SelfSubjectRulesReviewSpec.go b/pods/imports/k8s/SelfSubjectRulesReviewSpec.go deleted file mode 100644 index f9221c2ac..000000000 --- a/pods/imports/k8s/SelfSubjectRulesReviewSpec.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview. -type SelfSubjectRulesReviewSpec struct { - // Namespace to evaluate rules for. - // - // Required. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` -} - diff --git a/pods/imports/k8s/ServiceAccountSubjectV1Beta3.go b/pods/imports/k8s/ServiceAccountSubjectV1Beta3.go deleted file mode 100644 index c016510bc..000000000 --- a/pods/imports/k8s/ServiceAccountSubjectV1Beta3.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// ServiceAccountSubject holds detailed information for service-account-kind subject. -type ServiceAccountSubjectV1Beta3 struct { - // `name` is the name of matching ServiceAccount objects, or "*" to match regardless of name. - // - // Required. - Name *string `field:"required" json:"name" yaml:"name"` - // `namespace` is the namespace of matching ServiceAccount objects. - // - // Required. - Namespace *string `field:"required" json:"namespace" yaml:"namespace"` -} - diff --git a/pods/imports/k8s/ServiceAccountTokenProjection.go b/pods/imports/k8s/ServiceAccountTokenProjection.go deleted file mode 100644 index b7eea34cb..000000000 --- a/pods/imports/k8s/ServiceAccountTokenProjection.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// ServiceAccountTokenProjection represents a projected service account token volume. -// -// This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise). -type ServiceAccountTokenProjection struct { - // path is the path relative to the mount point of the file to project the token into. - Path *string `field:"required" json:"path" yaml:"path"` - // audience is the intended audience of the token. - // - // A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. - Audience *string `field:"optional" json:"audience" yaml:"audience"` - // expirationSeconds is the requested duration of validity of the service account token. - // - // As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. - // Default: 1 hour and must be at least 10 minutes. - // - ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` -} - diff --git a/pods/imports/k8s/ServiceBackendPort.go b/pods/imports/k8s/ServiceBackendPort.go deleted file mode 100644 index ed9930865..000000000 --- a/pods/imports/k8s/ServiceBackendPort.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// ServiceBackendPort is the service port being referenced. -type ServiceBackendPort struct { - // name is the name of the port on the Service. - // - // This is a mutually exclusive setting with "Number". - Name *string `field:"optional" json:"name" yaml:"name"` - // number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with "Name". - Number *float64 `field:"optional" json:"number" yaml:"number"` -} - diff --git a/pods/imports/k8s/ServiceCidrSpecV1Beta1.go b/pods/imports/k8s/ServiceCidrSpecV1Beta1.go deleted file mode 100644 index a9e1748d4..000000000 --- a/pods/imports/k8s/ServiceCidrSpecV1Beta1.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services. -type ServiceCidrSpecV1Beta1 struct { - // CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable. - Cidrs *[]*string `field:"optional" json:"cidrs" yaml:"cidrs"` -} - diff --git a/pods/imports/k8s/ServicePort.go b/pods/imports/k8s/ServicePort.go deleted file mode 100644 index 72c699a31..000000000 --- a/pods/imports/k8s/ServicePort.go +++ /dev/null @@ -1,40 +0,0 @@ -package k8s - - -// ServicePort contains information on service's port. -type ServicePort struct { - // The port that will be exposed by this service. - Port *float64 `field:"required" json:"port" yaml:"port"` - // The application protocol for this port. - // - // This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: - // - // * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). - // - // * Kubernetes-defined prefixed names: - // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- - // * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 - // * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 - // - // * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. - AppProtocol *string `field:"optional" json:"appProtocol" yaml:"appProtocol"` - // The name of this port within the service. - // - // This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. - Name *string `field:"optional" json:"name" yaml:"name"` - // The port on each node on which this service is exposed when type is NodePort or LoadBalancer. - // - // Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - NodePort *float64 `field:"optional" json:"nodePort" yaml:"nodePort"` - // The IP protocol for this port. - // - // Supports "TCP", "UDP", and "SCTP". Default is TCP. - // Default: TCP. - // - Protocol *string `field:"optional" json:"protocol" yaml:"protocol"` - // Number or name of the port to access on the pods targeted by the service. - // - // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service - TargetPort IntOrString `field:"optional" json:"targetPort" yaml:"targetPort"` -} - diff --git a/pods/imports/k8s/ServiceReference.go b/pods/imports/k8s/ServiceReference.go deleted file mode 100644 index fa72c8a6c..000000000 --- a/pods/imports/k8s/ServiceReference.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// ServiceReference holds a reference to Service.legacy.k8s.io. -type ServiceReference struct { - // `name` is the name of the service. - // - // Required. - Name *string `field:"required" json:"name" yaml:"name"` - // `namespace` is the namespace of the service. - // - // Required. - Namespace *string `field:"required" json:"namespace" yaml:"namespace"` - // `path` is an optional URL path which will be sent in any request to this service. - Path *string `field:"optional" json:"path" yaml:"path"` - // If specified, the port on the service that hosting webhook. - // - // Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). - // Default: 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). - // - Port *float64 `field:"optional" json:"port" yaml:"port"` -} - diff --git a/pods/imports/k8s/ServiceSpec.go b/pods/imports/k8s/ServiceSpec.go deleted file mode 100644 index f55aad2fe..000000000 --- a/pods/imports/k8s/ServiceSpec.go +++ /dev/null @@ -1,91 +0,0 @@ -package k8s - - -// ServiceSpec describes the attributes that a user creates on a service. -type ServiceSpec struct { - // allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. - // - // Default is "true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. - // Default: true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. - // - AllocateLoadBalancerNodePorts *bool `field:"optional" json:"allocateLoadBalancerNodePorts" yaml:"allocateLoadBalancerNodePorts"` - // clusterIP is the IP address of the service and is usually assigned randomly. - // - // If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - ClusterIp *string `field:"optional" json:"clusterIp" yaml:"clusterIp"` - // ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. - // - // If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are "None", empty string (""), or a valid IP address. Setting this to "None" makes a "headless service" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value. - // - // This field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - ClusterIPs *[]*string `field:"optional" json:"clusterIPs" yaml:"clusterIPs"` - // externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. - // - // These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. - ExternalIPs *[]*string `field:"optional" json:"externalIPs" yaml:"externalIPs"` - // externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". - ExternalName *string `field:"optional" json:"externalName" yaml:"externalName"` - // externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's "externally-facing" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). - // - // If set to "Local", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, "Cluster", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get "Cluster" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node. - ExternalTrafficPolicy *string `field:"optional" json:"externalTrafficPolicy" yaml:"externalTrafficPolicy"` - // healthCheckNodePort specifies the healthcheck nodePort for the service. - // - // This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set. - HealthCheckNodePort *float64 `field:"optional" json:"healthCheckNodePort" yaml:"healthCheckNodePort"` - // InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. - // - // If set to "Local", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, "Cluster", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). - InternalTrafficPolicy *string `field:"optional" json:"internalTrafficPolicy" yaml:"internalTrafficPolicy"` - // IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This field will be wiped when updating a Service to type ExternalName. - // - // This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. - IpFamilies *[]*string `field:"optional" json:"ipFamilies" yaml:"ipFamilies"` - // IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. - // - // If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. - IpFamilyPolicy *string `field:"optional" json:"ipFamilyPolicy" yaml:"ipFamilyPolicy"` - // loadBalancerClass is the class of the load balancer implementation this Service belongs to. - // - // If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. - LoadBalancerClass *string `field:"optional" json:"loadBalancerClass" yaml:"loadBalancerClass"` - // Only applies to Service Type: LoadBalancer. - // - // This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available. - LoadBalancerIp *string `field:"optional" json:"loadBalancerIp" yaml:"loadBalancerIp"` - // If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. - // - // This field will be ignored if the cloud-provider does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - LoadBalancerSourceRanges *[]*string `field:"optional" json:"loadBalancerSourceRanges" yaml:"loadBalancerSourceRanges"` - // The list of ports that are exposed by this service. - // - // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - Ports *[]*ServicePort `field:"optional" json:"ports" yaml:"ports"` - // publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. - // - // The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered "ready" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior. - PublishNotReadyAddresses *bool `field:"optional" json:"publishNotReadyAddresses" yaml:"publishNotReadyAddresses"` - // Route service traffic to pods with label keys and values matching this selector. - // - // If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/ - Selector *map[string]*string `field:"optional" json:"selector" yaml:"selector"` - // Supports "ClientIP" and "None". - // - // Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - // Default: None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - // - SessionAffinity *string `field:"optional" json:"sessionAffinity" yaml:"sessionAffinity"` - // sessionAffinityConfig contains the configurations of session affinity. - SessionAffinityConfig *SessionAffinityConfig `field:"optional" json:"sessionAffinityConfig" yaml:"sessionAffinityConfig"` - // TrafficDistribution offers a way to express preferences for how traffic is distributed to Service endpoints. - // - // Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to "PreferClose", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is an alpha field and requires enabling ServiceTrafficDistribution feature. - TrafficDistribution *string `field:"optional" json:"trafficDistribution" yaml:"trafficDistribution"` - // type determines how the Service is exposed. - // - // Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - // Default: ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - // - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/SessionAffinityConfig.go b/pods/imports/k8s/SessionAffinityConfig.go deleted file mode 100644 index e7e7f648b..000000000 --- a/pods/imports/k8s/SessionAffinityConfig.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// SessionAffinityConfig represents the configurations of session affinity. -type SessionAffinityConfig struct { - // clientIP contains the configurations of Client IP based session affinity. - ClientIp *ClientIpConfig `field:"optional" json:"clientIp" yaml:"clientIp"` -} - diff --git a/pods/imports/k8s/SleepAction.go b/pods/imports/k8s/SleepAction.go deleted file mode 100644 index 05f90af98..000000000 --- a/pods/imports/k8s/SleepAction.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// SleepAction describes a "sleep" action. -type SleepAction struct { - // Seconds is the number of seconds to sleep. - Seconds *float64 `field:"required" json:"seconds" yaml:"seconds"` -} - diff --git a/pods/imports/k8s/StatefulSetOrdinals.go b/pods/imports/k8s/StatefulSetOrdinals.go deleted file mode 100644 index 377342d7f..000000000 --- a/pods/imports/k8s/StatefulSetOrdinals.go +++ /dev/null @@ -1,14 +0,0 @@ -package k8s - - -// StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet. -type StatefulSetOrdinals struct { - // start is the number representing the first replica's index. - // - // It may be used to number replicas from an alternate index (eg: 1-indexed) over the default 0-indexed names, or to orchestrate progressive movement of replicas from one StatefulSet to another. If set, replica indices will be in the range: - // [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas). - // If unset, defaults to 0. Replica indices will be in the range: - // [0, .spec.replicas). - Start *float64 `field:"optional" json:"start" yaml:"start"` -} - diff --git a/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go b/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go deleted file mode 100644 index 93114c871..000000000 --- a/pods/imports/k8s/StatefulSetPersistentVolumeClaimRetentionPolicy.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. -type StatefulSetPersistentVolumeClaimRetentionPolicy struct { - // WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. - // - // The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted. - WhenDeleted *string `field:"optional" json:"whenDeleted" yaml:"whenDeleted"` - // WhenScaled specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is scaled down. - // - // The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted. - WhenScaled *string `field:"optional" json:"whenScaled" yaml:"whenScaled"` -} - diff --git a/pods/imports/k8s/StatefulSetSpec.go b/pods/imports/k8s/StatefulSetSpec.go deleted file mode 100644 index f2ba0e130..000000000 --- a/pods/imports/k8s/StatefulSetSpec.go +++ /dev/null @@ -1,51 +0,0 @@ -package k8s - - -// A StatefulSetSpec is the specification of a StatefulSet. -type StatefulSetSpec struct { - // selector is a label query over pods that should match the replica count. - // - // It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors - Selector *LabelSelector `field:"required" json:"selector" yaml:"selector"` - // serviceName is the name of the service that governs this StatefulSet. - // - // This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where "pod-specific-string" is managed by the StatefulSet controller. - ServiceName *string `field:"required" json:"serviceName" yaml:"serviceName"` - // template is the object that describes the pod that will be created if insufficient replicas are detected. - // - // Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet. Each pod will be named with the format -. For example, a pod in a StatefulSet named "web" with index number "3" would be named "web-3". The only allowed template.spec.restartPolicy value is "Always". - Template *PodTemplateSpec `field:"required" json:"template" yaml:"template"` - // Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. - // - // Defaults to 0 (pod will be considered available as soon as it is ready). - // Default: 0 (pod will be considered available as soon as it is ready). - // - MinReadySeconds *float64 `field:"optional" json:"minReadySeconds" yaml:"minReadySeconds"` - // ordinals controls the numbering of replica indices in a StatefulSet. - // - // The default ordinals behavior assigns a "0" index to the first replica and increments the index by one for each additional replica requested. - Ordinals *StatefulSetOrdinals `field:"optional" json:"ordinals" yaml:"ordinals"` - // persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. - // - // By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is beta. - PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `field:"optional" json:"persistentVolumeClaimRetentionPolicy" yaml:"persistentVolumeClaimRetentionPolicy"` - // podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. - // - // The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once. - PodManagementPolicy *string `field:"optional" json:"podManagementPolicy" yaml:"podManagementPolicy"` - // replicas is the desired number of replicas of the given Template. - // - // These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1. - Replicas *float64 `field:"optional" json:"replicas" yaml:"replicas"` - // revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. - // - // The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10. - RevisionHistoryLimit *float64 `field:"optional" json:"revisionHistoryLimit" yaml:"revisionHistoryLimit"` - // updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template. - UpdateStrategy *StatefulSetUpdateStrategy `field:"optional" json:"updateStrategy" yaml:"updateStrategy"` - // volumeClaimTemplates is a list of claims that pods are allowed to reference. - // - // The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name. - VolumeClaimTemplates *[]*KubePersistentVolumeClaimProps `field:"optional" json:"volumeClaimTemplates" yaml:"volumeClaimTemplates"` -} - diff --git a/pods/imports/k8s/StatefulSetUpdateStrategy.go b/pods/imports/k8s/StatefulSetUpdateStrategy.go deleted file mode 100644 index 1e2f06a4f..000000000 --- a/pods/imports/k8s/StatefulSetUpdateStrategy.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. -// -// It includes any additional parameters necessary to perform the update for the indicated strategy. -type StatefulSetUpdateStrategy struct { - // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. - RollingUpdate *RollingUpdateStatefulSetStrategy `field:"optional" json:"rollingUpdate" yaml:"rollingUpdate"` - // Type indicates the type of the StatefulSetUpdateStrategy. - // - // Default is RollingUpdate. - // Default: RollingUpdate. - // - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/k8s/StatusCause.go b/pods/imports/k8s/StatusCause.go deleted file mode 100644 index 5817903e6..000000000 --- a/pods/imports/k8s/StatusCause.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered. -type StatusCause struct { - // The field of the resource that has caused this error, as named by its JSON serialization. - // - // May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. - // - // Examples: - // "name" - the field "name" on the current resource - // "items[0].name" - the field "name" on the first array entry in "items" - Field *string `field:"optional" json:"field" yaml:"field"` - // A human-readable description of the cause of the error. - // - // This field may be presented as-is to a reader. - Message *string `field:"optional" json:"message" yaml:"message"` - // A machine-readable description of the cause of the error. - // - // If this value is empty there is no information available. - Reason *string `field:"optional" json:"reason" yaml:"reason"` -} - diff --git a/pods/imports/k8s/StatusDetails.go b/pods/imports/k8s/StatusDetails.go deleted file mode 100644 index 2912e53f2..000000000 --- a/pods/imports/k8s/StatusDetails.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. -// -// The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined. -type StatusDetails struct { - // The Causes array includes more details associated with the StatusReason failure. - // - // Not all StatusReasons may provide detailed causes. - Causes *[]*StatusCause `field:"optional" json:"causes" yaml:"causes"` - // The group attribute of the resource associated with the status StatusReason. - Group *string `field:"optional" json:"group" yaml:"group"` - // The kind attribute of the resource associated with the status StatusReason. - // - // On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - Kind *string `field:"optional" json:"kind" yaml:"kind"` - // The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described). - Name *string `field:"optional" json:"name" yaml:"name"` - // If specified, the time in seconds before the operation should be retried. - // - // Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action. - RetryAfterSeconds *float64 `field:"optional" json:"retryAfterSeconds" yaml:"retryAfterSeconds"` - // UID of the resource. - // - // (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids - Uid *string `field:"optional" json:"uid" yaml:"uid"` -} - diff --git a/pods/imports/k8s/StorageOsPersistentVolumeSource.go b/pods/imports/k8s/StorageOsPersistentVolumeSource.go deleted file mode 100644 index 5f8f080ce..000000000 --- a/pods/imports/k8s/StorageOsPersistentVolumeSource.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// Represents a StorageOS persistent volume resource. -type StorageOsPersistentVolumeSource struct { - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef specifies the secret to use for obtaining the StorageOS API credentials. - // - // If not specified, default values will be attempted. - SecretRef *ObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` - // volumeName is the human-readable name of the StorageOS volume. - // - // Volume names are only unique within a namespace. - VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` - // volumeNamespace specifies the scope of the volume within StorageOS. - // - // If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. - VolumeNamespace *string `field:"optional" json:"volumeNamespace" yaml:"volumeNamespace"` -} - diff --git a/pods/imports/k8s/StorageOsVolumeSource.go b/pods/imports/k8s/StorageOsVolumeSource.go deleted file mode 100644 index c822001b1..000000000 --- a/pods/imports/k8s/StorageOsVolumeSource.go +++ /dev/null @@ -1,27 +0,0 @@ -package k8s - - -// Represents a StorageOS persistent volume resource. -type StorageOsVolumeSource struct { - // fsType is the filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // readOnly defaults to false (read/write). - // - // ReadOnly here will force the ReadOnly setting in VolumeMounts. - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // secretRef specifies the secret to use for obtaining the StorageOS API credentials. - // - // If not specified, default values will be attempted. - SecretRef *LocalObjectReference `field:"optional" json:"secretRef" yaml:"secretRef"` - // volumeName is the human-readable name of the StorageOS volume. - // - // Volume names are only unique within a namespace. - VolumeName *string `field:"optional" json:"volumeName" yaml:"volumeName"` - // volumeNamespace specifies the scope of the volume within StorageOS. - // - // If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. - VolumeNamespace *string `field:"optional" json:"volumeNamespace" yaml:"volumeNamespace"` -} - diff --git a/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go b/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go deleted file mode 100644 index 33af9d10b..000000000 --- a/pods/imports/k8s/StorageVersionMigrationSpecV1Alpha1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Spec of the storage version migration. -type StorageVersionMigrationSpecV1Alpha1 struct { - // The resource that is being migrated. - // - // The migrator sends requests to the endpoint serving the resource. Immutable. - Resource *GroupVersionResourceV1Alpha1 `field:"required" json:"resource" yaml:"resource"` - // The token used in the list options to get the next chunk of objects to migrate. - // - // When the .status.conditions indicates the migration is "Running", users can use this token to check the progress of the migration. - ContinueToken *string `field:"optional" json:"continueToken" yaml:"continueToken"` -} - diff --git a/pods/imports/k8s/Subject.go b/pods/imports/k8s/Subject.go deleted file mode 100644 index 08e5e92f6..000000000 --- a/pods/imports/k8s/Subject.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Subject contains a reference to the object or user identities a role binding applies to. -// -// This can either hold a direct API object reference, or a value for non-objects such as user and group names. -type Subject struct { - // Kind of object being referenced. - // - // Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // Name of the object being referenced. - Name *string `field:"required" json:"name" yaml:"name"` - // APIGroup holds the API group of the referenced subject. - // - // Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects. - // Default: for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects. - // - ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` - // Namespace of the referenced object. - // - // If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` -} - diff --git a/pods/imports/k8s/SubjectAccessReviewSpec.go b/pods/imports/k8s/SubjectAccessReviewSpec.go deleted file mode 100644 index e8496ea95..000000000 --- a/pods/imports/k8s/SubjectAccessReviewSpec.go +++ /dev/null @@ -1,23 +0,0 @@ -package k8s - - -// SubjectAccessReviewSpec is a description of the access request. -// -// Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set. -type SubjectAccessReviewSpec struct { - // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here. - Extra *map[string]*[]*string `field:"optional" json:"extra" yaml:"extra"` - // Groups is the groups you're testing for. - Groups *[]*string `field:"optional" json:"groups" yaml:"groups"` - // NonResourceAttributes describes information for a non-resource access request. - NonResourceAttributes *NonResourceAttributes `field:"optional" json:"nonResourceAttributes" yaml:"nonResourceAttributes"` - // ResourceAuthorizationAttributes describes information for a resource access request. - ResourceAttributes *ResourceAttributes `field:"optional" json:"resourceAttributes" yaml:"resourceAttributes"` - // UID information about the requesting user. - Uid *string `field:"optional" json:"uid" yaml:"uid"` - // User is the user you're testing for. - // - // If you specify "User" but not "Groups", then is it interpreted as "What if User were not a member of any groups. - User *string `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/SubjectV1Beta3.go b/pods/imports/k8s/SubjectV1Beta3.go deleted file mode 100644 index 1d965510c..000000000 --- a/pods/imports/k8s/SubjectV1Beta3.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// Subject matches the originator of a request, as identified by the request authentication system. -// -// There are three ways of matching an originator; by user, group, or service account. -type SubjectV1Beta3 struct { - // `kind` indicates which one of the other fields is non-empty. - // - // Required. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // `group` matches based on user group name. - Group *GroupSubjectV1Beta3 `field:"optional" json:"group" yaml:"group"` - // `serviceAccount` matches ServiceAccounts. - ServiceAccount *ServiceAccountSubjectV1Beta3 `field:"optional" json:"serviceAccount" yaml:"serviceAccount"` - // `user` matches based on username. - User *UserSubjectV1Beta3 `field:"optional" json:"user" yaml:"user"` -} - diff --git a/pods/imports/k8s/SuccessPolicy.go b/pods/imports/k8s/SuccessPolicy.go deleted file mode 100644 index 973102d93..000000000 --- a/pods/imports/k8s/SuccessPolicy.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes. -type SuccessPolicy struct { - // rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the "SucceededCriteriaMet" condition is added, and the lingering pods are removed. The terminal state for such a Job has the "Complete" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed. - Rules *[]*SuccessPolicyRule `field:"required" json:"rules" yaml:"rules"` -} - diff --git a/pods/imports/k8s/SuccessPolicyRule.go b/pods/imports/k8s/SuccessPolicyRule.go deleted file mode 100644 index 780acc77e..000000000 --- a/pods/imports/k8s/SuccessPolicyRule.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// SuccessPolicyRule describes rule for declaring a Job as succeeded. -// -// Each rule must have at least one of the "succeededIndexes" or "succeededCount" specified. -type SuccessPolicyRule struct { - // succeededCount specifies the minimal required size of the actual set of the succeeded indexes for the Job. - // - // When succeededCount is used along with succeededIndexes, the check is constrained only to the set of indexes specified by succeededIndexes. For example, given that succeededIndexes is "1-4", succeededCount is "3", and completed indexes are "1", "3", and "5", the Job isn't declared as succeeded because only "1" and "3" indexes are considered in that rules. When this field is null, this doesn't default to any value and is never evaluated at any time. When specified it needs to be a positive integer. - SucceededCount *float64 `field:"optional" json:"succeededCount" yaml:"succeededCount"` - // succeededIndexes specifies the set of indexes which need to be contained in the actual set of the succeeded indexes for the Job. - // - // The list of indexes must be within 0 to ".spec.completions-1" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as "1,3-5,7". When this field is null, this field doesn't default to any value and is never evaluated at any time. - SucceededIndexes *string `field:"optional" json:"succeededIndexes" yaml:"succeededIndexes"` -} - diff --git a/pods/imports/k8s/Sysctl.go b/pods/imports/k8s/Sysctl.go deleted file mode 100644 index 57f2c0ea4..000000000 --- a/pods/imports/k8s/Sysctl.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// Sysctl defines a kernel parameter to be set. -type Sysctl struct { - // Name of a property to set. - Name *string `field:"required" json:"name" yaml:"name"` - // Value of a property to set. - Value *string `field:"required" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/Taint.go b/pods/imports/k8s/Taint.go deleted file mode 100644 index 33ee405bc..000000000 --- a/pods/imports/k8s/Taint.go +++ /dev/null @@ -1,24 +0,0 @@ -package k8s - -import ( - "time" -) - -// The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint. -type Taint struct { - // Required. - // - // The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute. - Effect *string `field:"required" json:"effect" yaml:"effect"` - // Required. - // - // The taint key to be applied to a node. - Key *string `field:"required" json:"key" yaml:"key"` - // TimeAdded represents the time at which the taint was added. - // - // It is only written for NoExecute taints. - TimeAdded *time.Time `field:"optional" json:"timeAdded" yaml:"timeAdded"` - // The taint value corresponding to the taint key. - Value *string `field:"optional" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/TcpSocketAction.go b/pods/imports/k8s/TcpSocketAction.go deleted file mode 100644 index a919b1e80..000000000 --- a/pods/imports/k8s/TcpSocketAction.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// TCPSocketAction describes an action based on opening a socket. -type TcpSocketAction struct { - // Number or name of the port to access on the container. - // - // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - Port IntOrString `field:"required" json:"port" yaml:"port"` - // Optional: Host name to connect to, defaults to the pod IP. - Host *string `field:"optional" json:"host" yaml:"host"` -} - diff --git a/pods/imports/k8s/TokenRequest.go b/pods/imports/k8s/TokenRequest.go deleted file mode 100644 index 2bd13c243..000000000 --- a/pods/imports/k8s/TokenRequest.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// TokenRequest contains parameters of a service account token. -type TokenRequest struct { - // audience is the intended audience of the token in "TokenRequestSpec". - // - // It will default to the audiences of kube apiserver. - Audience *string `field:"required" json:"audience" yaml:"audience"` - // expirationSeconds is the duration of validity of the token in "TokenRequestSpec". - // - // It has the same default value of "ExpirationSeconds" in "TokenRequestSpec". - ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` -} - diff --git a/pods/imports/k8s/TokenRequestSpec.go b/pods/imports/k8s/TokenRequestSpec.go deleted file mode 100644 index adccd66d6..000000000 --- a/pods/imports/k8s/TokenRequestSpec.go +++ /dev/null @@ -1,19 +0,0 @@ -package k8s - - -// TokenRequestSpec contains client provided parameters of a token request. -type TokenRequestSpec struct { - // Audiences are the intendend audiences of the token. - // - // A recipient of a token must identify themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences. - Audiences *[]*string `field:"required" json:"audiences" yaml:"audiences"` - // BoundObjectRef is a reference to an object that the token will be bound to. - // - // The token will only be valid for as long as the bound object exists. NOTE: The API server's TokenReview endpoint will validate the BoundObjectRef, but other audiences may not. Keep ExpirationSeconds small if you want prompt revocation. - BoundObjectRef *BoundObjectReference `field:"optional" json:"boundObjectRef" yaml:"boundObjectRef"` - // ExpirationSeconds is the requested duration of validity of the request. - // - // The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response. - ExpirationSeconds *float64 `field:"optional" json:"expirationSeconds" yaml:"expirationSeconds"` -} - diff --git a/pods/imports/k8s/TokenReviewSpec.go b/pods/imports/k8s/TokenReviewSpec.go deleted file mode 100644 index ddd1918e1..000000000 --- a/pods/imports/k8s/TokenReviewSpec.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// TokenReviewSpec is a description of the token authentication request. -type TokenReviewSpec struct { - // Audiences is a list of the identifiers that the resource server presented with the token identifies as. - // - // Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver. - Audiences *[]*string `field:"optional" json:"audiences" yaml:"audiences"` - // Token is the opaque bearer token. - Token *string `field:"optional" json:"token" yaml:"token"` -} - diff --git a/pods/imports/k8s/Toleration.go b/pods/imports/k8s/Toleration.go deleted file mode 100644 index 51013bbff..000000000 --- a/pods/imports/k8s/Toleration.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . -type Toleration struct { - // Effect indicates the taint effect to match. - // - // Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - Effect *string `field:"optional" json:"effect" yaml:"effect"` - // Key is the taint key that the toleration applies to. - // - // Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - Key *string `field:"optional" json:"key" yaml:"key"` - // Operator represents a key's relationship to the value. - // - // Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - // Default: Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - // - Operator *string `field:"optional" json:"operator" yaml:"operator"` - // TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. - // - // By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - TolerationSeconds *float64 `field:"optional" json:"tolerationSeconds" yaml:"tolerationSeconds"` - // Value is the taint value the toleration matches to. - // - // If the operator is Exists, the value should be empty, otherwise just a regular string. - Value *string `field:"optional" json:"value" yaml:"value"` -} - diff --git a/pods/imports/k8s/TopologySelectorLabelRequirement.go b/pods/imports/k8s/TopologySelectorLabelRequirement.go deleted file mode 100644 index a6bfc61df..000000000 --- a/pods/imports/k8s/TopologySelectorLabelRequirement.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// A topology selector requirement is a selector that matches given label. -// -// This is an alpha feature and may change in the future. -type TopologySelectorLabelRequirement struct { - // The label key that the selector applies to. - Key *string `field:"required" json:"key" yaml:"key"` - // An array of string values. - // - // One value must match the label to be selected. Each entry in Values is ORed. - Values *[]*string `field:"required" json:"values" yaml:"values"` -} - diff --git a/pods/imports/k8s/TopologySelectorTerm.go b/pods/imports/k8s/TopologySelectorTerm.go deleted file mode 100644 index 91985c462..000000000 --- a/pods/imports/k8s/TopologySelectorTerm.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// A topology selector term represents the result of label queries. -// -// A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future. -type TopologySelectorTerm struct { - // A list of topology selector requirements by labels. - MatchLabelExpressions *[]*TopologySelectorLabelRequirement `field:"optional" json:"matchLabelExpressions" yaml:"matchLabelExpressions"` -} - diff --git a/pods/imports/k8s/TopologySpreadConstraint.go b/pods/imports/k8s/TopologySpreadConstraint.go deleted file mode 100644 index 067de52ac..000000000 --- a/pods/imports/k8s/TopologySpreadConstraint.go +++ /dev/null @@ -1,50 +0,0 @@ -package k8s - - -// TopologySpreadConstraint specifies how to spread matching pods among the given topology. -type TopologySpreadConstraint struct { - // MaxSkew describes the degree to which pods may be unevenly distributed. - // - // When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed. - MaxSkew *float64 `field:"required" json:"maxSkew" yaml:"maxSkew"` - // TopologyKey is the key of node labels. - // - // Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field. - TopologyKey *string `field:"required" json:"topologyKey" yaml:"topologyKey"` - // WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - // - // - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, - // but giving higher precedence to topologies that would help reduce the - // skew. - // A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field. - WhenUnsatisfiable *string `field:"required" json:"whenUnsatisfiable" yaml:"whenUnsatisfiable"` - // LabelSelector is used to find matching pods. - // - // Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. - LabelSelector *LabelSelector `field:"optional" json:"labelSelector" yaml:"labelSelector"` - // MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. - // - // The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. - // - // This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). - MatchLabelKeys *[]*string `field:"optional" json:"matchLabelKeys" yaml:"matchLabelKeys"` - // MinDomains indicates a minimum number of eligible domains. - // - // When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. - // - // For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. - MinDomains *float64 `field:"optional" json:"minDomains" yaml:"minDomains"` - // NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. - // - // Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. - // - // If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. - NodeAffinityPolicy *string `field:"optional" json:"nodeAffinityPolicy" yaml:"nodeAffinityPolicy"` - // NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. - // - // Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. - // - // If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. - NodeTaintsPolicy *string `field:"optional" json:"nodeTaintsPolicy" yaml:"nodeTaintsPolicy"` -} - diff --git a/pods/imports/k8s/TypedLocalObjectReference.go b/pods/imports/k8s/TypedLocalObjectReference.go deleted file mode 100644 index 70ec16b25..000000000 --- a/pods/imports/k8s/TypedLocalObjectReference.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace. -type TypedLocalObjectReference struct { - // Kind is the type of resource being referenced. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // Name is the name of resource being referenced. - Name *string `field:"required" json:"name" yaml:"name"` - // APIGroup is the group for the resource being referenced. - // - // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` -} - diff --git a/pods/imports/k8s/TypedObjectReference.go b/pods/imports/k8s/TypedObjectReference.go deleted file mode 100644 index 034fa2e6a..000000000 --- a/pods/imports/k8s/TypedObjectReference.go +++ /dev/null @@ -1,16 +0,0 @@ -package k8s - - -type TypedObjectReference struct { - // Kind is the type of resource being referenced. - Kind *string `field:"required" json:"kind" yaml:"kind"` - // Name is the name of resource being referenced. - Name *string `field:"required" json:"name" yaml:"name"` - // APIGroup is the group for the resource being referenced. - // - // If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - ApiGroup *string `field:"optional" json:"apiGroup" yaml:"apiGroup"` - // Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - Namespace *string `field:"optional" json:"namespace" yaml:"namespace"` -} - diff --git a/pods/imports/k8s/UserSubjectV1Beta3.go b/pods/imports/k8s/UserSubjectV1Beta3.go deleted file mode 100644 index dc2efe960..000000000 --- a/pods/imports/k8s/UserSubjectV1Beta3.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// UserSubject holds detailed information for user-kind subject. -type UserSubjectV1Beta3 struct { - // `name` is the username that matches, or "*" to match all usernames. - // - // Required. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go deleted file mode 100644 index 0d22e39d5..000000000 --- a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpec.go +++ /dev/null @@ -1,41 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. -type ValidatingAdmissionPolicyBindingSpec struct { - // MatchResources declares what resources match this binding and will be validated by it. - // - // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. - MatchResources *MatchResources `field:"optional" json:"matchResources" yaml:"matchResources"` - // paramRef specifies the parameter resource used to configure the admission control policy. - // - // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. - ParamRef *ParamRef `field:"optional" json:"paramRef" yaml:"paramRef"` - // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. - // - // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. - PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` - // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. - // - // If a validation evaluates to false it is always enforced according to these actions. - // - // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. - // - // validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. - // - // The supported actions values are: - // - // "Deny" specifies that a validation failure results in a denied request. - // - // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. - // - // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` - // - // Clients should expect to handle additional values by ignoring any values not recognized. - // - // "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. - // - // Required. - ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` -} - diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go deleted file mode 100644 index d660e04d2..000000000 --- a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Alpha1.go +++ /dev/null @@ -1,41 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. -type ValidatingAdmissionPolicyBindingSpecV1Alpha1 struct { - // MatchResources declares what resources match this binding and will be validated by it. - // - // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. - MatchResources *MatchResourcesV1Alpha1 `field:"optional" json:"matchResources" yaml:"matchResources"` - // paramRef specifies the parameter resource used to configure the admission control policy. - // - // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. - ParamRef *ParamRefV1Alpha1 `field:"optional" json:"paramRef" yaml:"paramRef"` - // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. - // - // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. - PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` - // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. - // - // If a validation evaluates to false it is always enforced according to these actions. - // - // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. - // - // validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. - // - // The supported actions values are: - // - // "Deny" specifies that a validation failure results in a denied request. - // - // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. - // - // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` - // - // Clients should expect to handle additional values by ignoring any values not recognized. - // - // "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. - // - // Required. - ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` -} - diff --git a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go b/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go deleted file mode 100644 index d81d0bfc5..000000000 --- a/pods/imports/k8s/ValidatingAdmissionPolicyBindingSpecV1Beta1.go +++ /dev/null @@ -1,41 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. -type ValidatingAdmissionPolicyBindingSpecV1Beta1 struct { - // MatchResources declares what resources match this binding and will be validated by it. - // - // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. - MatchResources *MatchResourcesV1Beta1 `field:"optional" json:"matchResources" yaml:"matchResources"` - // paramRef specifies the parameter resource used to configure the admission control policy. - // - // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. - ParamRef *ParamRefV1Beta1 `field:"optional" json:"paramRef" yaml:"paramRef"` - // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. - // - // If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. - PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` - // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. - // - // If a validation evaluates to false it is always enforced according to these actions. - // - // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. - // - // validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. - // - // The supported actions values are: - // - // "Deny" specifies that a validation failure results in a denied request. - // - // "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. - // - // "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` - // - // Clients should expect to handle additional values by ignoring any values not recognized. - // - // "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. - // - // Required. - ValidationActions *[]*string `field:"optional" json:"validationActions" yaml:"validationActions"` -} - diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpec.go b/pods/imports/k8s/ValidatingAdmissionPolicySpec.go deleted file mode 100644 index df5236660..000000000 --- a/pods/imports/k8s/ValidatingAdmissionPolicySpec.go +++ /dev/null @@ -1,56 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. -type ValidatingAdmissionPolicySpec struct { - // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. - // - // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. - AuditAnnotations *[]*AuditAnnotation `field:"optional" json:"auditAnnotations" yaml:"auditAnnotations"` - // failurePolicy defines how to handle failures for the admission policy. - // - // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. - // - // A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. - // - // failurePolicy does not define how validations that evaluate to false are handled. - // - // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. - // - // Allowed values are Ignore or Fail. Defaults to Fail. - // Default: Fail. - // - FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` - // MatchConditions is a list of conditions that must be met for a request to be validated. - // - // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. - // - // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. - // - // The exact matching logic is (in order): - // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. - // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. - // 3. If any matchCondition evaluates to an error (but none are FALSE): - // - If failurePolicy=Fail, reject the request - // - If failurePolicy=Ignore, the policy is skipped. - MatchConditions *[]*MatchCondition `field:"optional" json:"matchConditions" yaml:"matchConditions"` - // MatchConstraints specifies what resources this policy is designed to validate. - // - // The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. - MatchConstraints *MatchResources `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` - // ParamKind specifies the kind of resources used to parameterize this policy. - // - // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. - ParamKind *ParamKind `field:"optional" json:"paramKind" yaml:"paramKind"` - // Validations contain CEL expressions which is used to apply the validation. - // - // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. - Validations *[]*Validation `field:"optional" json:"validations" yaml:"validations"` - // Variables contain definitions of variables that can be used in composition of other expressions. - // - // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. - // - // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. - Variables *[]*Variable `field:"optional" json:"variables" yaml:"variables"` -} - diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go deleted file mode 100644 index 9a2a8b152..000000000 --- a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Alpha1.go +++ /dev/null @@ -1,56 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. -type ValidatingAdmissionPolicySpecV1Alpha1 struct { - // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. - // - // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. - AuditAnnotations *[]*AuditAnnotationV1Alpha1 `field:"optional" json:"auditAnnotations" yaml:"auditAnnotations"` - // failurePolicy defines how to handle failures for the admission policy. - // - // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. - // - // A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. - // - // failurePolicy does not define how validations that evaluate to false are handled. - // - // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. - // - // Allowed values are Ignore or Fail. Defaults to Fail. - // Default: Fail. - // - FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` - // MatchConditions is a list of conditions that must be met for a request to be validated. - // - // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. - // - // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. - // - // The exact matching logic is (in order): - // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. - // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. - // 3. If any matchCondition evaluates to an error (but none are FALSE): - // - If failurePolicy=Fail, reject the request - // - If failurePolicy=Ignore, the policy is skipped. - MatchConditions *[]*MatchConditionV1Alpha1 `field:"optional" json:"matchConditions" yaml:"matchConditions"` - // MatchConstraints specifies what resources this policy is designed to validate. - // - // The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. - MatchConstraints *MatchResourcesV1Alpha1 `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` - // ParamKind specifies the kind of resources used to parameterize this policy. - // - // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. - ParamKind *ParamKindV1Alpha1 `field:"optional" json:"paramKind" yaml:"paramKind"` - // Validations contain CEL expressions which is used to apply the validation. - // - // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. - Validations *[]*ValidationV1Alpha1 `field:"optional" json:"validations" yaml:"validations"` - // Variables contain definitions of variables that can be used in composition of other expressions. - // - // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. - // - // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. - Variables *[]*VariableV1Alpha1 `field:"optional" json:"variables" yaml:"variables"` -} - diff --git a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go b/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go deleted file mode 100644 index 5526652b4..000000000 --- a/pods/imports/k8s/ValidatingAdmissionPolicySpecV1Beta1.go +++ /dev/null @@ -1,56 +0,0 @@ -package k8s - - -// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. -type ValidatingAdmissionPolicySpecV1Beta1 struct { - // auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. - // - // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. - AuditAnnotations *[]*AuditAnnotationV1Beta1 `field:"optional" json:"auditAnnotations" yaml:"auditAnnotations"` - // failurePolicy defines how to handle failures for the admission policy. - // - // Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. - // - // A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. - // - // failurePolicy does not define how validations that evaluate to false are handled. - // - // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. - // - // Allowed values are Ignore or Fail. Defaults to Fail. - // Default: Fail. - // - FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` - // MatchConditions is a list of conditions that must be met for a request to be validated. - // - // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. - // - // If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. - // - // The exact matching logic is (in order): - // 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. - // 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. - // 3. If any matchCondition evaluates to an error (but none are FALSE): - // - If failurePolicy=Fail, reject the request - // - If failurePolicy=Ignore, the policy is skipped. - MatchConditions *[]*MatchConditionV1Beta1 `field:"optional" json:"matchConditions" yaml:"matchConditions"` - // MatchConstraints specifies what resources this policy is designed to validate. - // - // The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. - MatchConstraints *MatchResourcesV1Beta1 `field:"optional" json:"matchConstraints" yaml:"matchConstraints"` - // ParamKind specifies the kind of resources used to parameterize this policy. - // - // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. - ParamKind *ParamKindV1Beta1 `field:"optional" json:"paramKind" yaml:"paramKind"` - // Validations contain CEL expressions which is used to apply the validation. - // - // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. - Validations *[]*ValidationV1Beta1 `field:"optional" json:"validations" yaml:"validations"` - // Variables contain definitions of variables that can be used in composition of other expressions. - // - // Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. - // - // The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. - Variables *[]*VariableV1Beta1 `field:"optional" json:"variables" yaml:"variables"` -} - diff --git a/pods/imports/k8s/ValidatingWebhook.go b/pods/imports/k8s/ValidatingWebhook.go deleted file mode 100644 index 0d3717dd7..000000000 --- a/pods/imports/k8s/ValidatingWebhook.go +++ /dev/null @@ -1,102 +0,0 @@ -package k8s - - -// ValidatingWebhook describes an admission webhook and the resources and operations it applies to. -type ValidatingWebhook struct { - // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. - // - // API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. - AdmissionReviewVersions *[]*string `field:"required" json:"admissionReviewVersions" yaml:"admissionReviewVersions"` - // ClientConfig defines how to communicate with the hook. - // - // Required. - ClientConfig *WebhookClientConfig `field:"required" json:"clientConfig" yaml:"clientConfig"` - // The name of the admission webhook. - // - // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where "imagepolicy" is the name of the webhook, and kubernetes.io is the name of the organization. Required. - Name *string `field:"required" json:"name" yaml:"name"` - // SideEffects states whether this webhook has side effects. - // - // Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. - SideEffects *string `field:"required" json:"sideEffects" yaml:"sideEffects"` - // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. - // - // Defaults to Fail. - // Default: Fail. - // - FailurePolicy *string `field:"optional" json:"failurePolicy" yaml:"failurePolicy"` - // MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. - // - // Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. - // - // The exact matching logic is (in order): - // 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. - // 2. If ALL matchConditions evaluate to TRUE, the webhook is called. - // 3. If any matchCondition evaluates to an error (but none are FALSE): - // - If failurePolicy=Fail, reject the request - // - If failurePolicy=Ignore, the error is ignored and the webhook is skipped. - MatchConditions *[]*MatchCondition `field:"optional" json:"matchConditions" yaml:"matchConditions"` - // matchPolicy defines how the "rules" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". - // - // - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. - // - // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. - // - // Defaults to "Equivalent". - // Default: Equivalent". - // - MatchPolicy *string `field:"optional" json:"matchPolicy" yaml:"matchPolicy"` - // NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. - // - // If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook. - // - // For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "runlevel", - // "operator": "NotIn", - // "values": [ - // "0", - // "1" - // ] - // } - // ] - // } - // - // If instead you want to only run the webhook on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { - // "matchExpressions": [ - // { - // "key": "environment", - // "operator": "In", - // "values": [ - // "prod", - // "staging" - // ] - // } - // ] - // } - // - // See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels for more examples of label selectors. - // - // Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - NamespaceSelector *LabelSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // ObjectSelector decides whether to run the webhook based on if the object has matching labels. - // - // objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. - // Default: the empty LabelSelector, which matches everything. - // - ObjectSelector *LabelSelector `field:"optional" json:"objectSelector" yaml:"objectSelector"` - // Rules describes what operations on what resources/subresources the webhook cares about. - // - // The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. - Rules *[]*RuleWithOperations `field:"optional" json:"rules" yaml:"rules"` - // TimeoutSeconds specifies the timeout for this webhook. - // - // After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. - // Default: 10 seconds. - // - TimeoutSeconds *float64 `field:"optional" json:"timeoutSeconds" yaml:"timeoutSeconds"` -} - diff --git a/pods/imports/k8s/Validation.go b/pods/imports/k8s/Validation.go deleted file mode 100644 index ee4f7b903..000000000 --- a/pods/imports/k8s/Validation.go +++ /dev/null @@ -1,48 +0,0 @@ -package k8s - - -// Validation specifies the CEL expression which is used to apply the validation. -type Validation struct { - // Expression represents the expression which will be evaluated by CEL. - // - // ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - // - // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. - // For example, a variable named 'foo' can be accessed as 'variables.foo'. - // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // - // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. - // - // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: - // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", - // "import", "let", "loop", "package", "namespace", "return". - // Examples: - // - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} - // - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} - // - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} - // - // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and - // non-intersecting elements in `Y` are appended, retaining their partial order. - // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values - // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with - // non-intersecting keys are appended, retaining their partial order. - // Required. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Message represents the message displayed when validation fails. - // - // The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". - Message *string `field:"optional" json:"message" yaml:"message"` - // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. - // - // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" - MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` - // Reason represents a machine-readable description of why this validation failed. - // - // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. - Reason *string `field:"optional" json:"reason" yaml:"reason"` -} - diff --git a/pods/imports/k8s/ValidationRule.go b/pods/imports/k8s/ValidationRule.go deleted file mode 100644 index 83393bef4..000000000 --- a/pods/imports/k8s/ValidationRule.go +++ /dev/null @@ -1,67 +0,0 @@ -package k8s - - -// ValidationRule describes a validation rule written in the CEL expression language. -type ValidationRule struct { - // Rule represents the expression which will be evaluated by CEL. - // - // ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual <= self.spec.maxDesired"} - // - // If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as absent fields in CEL expressions. If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map are accessible via CEL macros and functions such as `self.all(...)`. If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and functions. If the Rule is scoped to a scalar, `self` is bound to the scalar value. Examples: - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority < 10"} - Rule scoped to a list of integers: {"rule": "self.values.all(value, value >= 0 && value < 100)"} - Rule scoped to a string value: {"rule": "self.startsWith('kube')"} - // - // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible. - // - // Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL expressions. This includes: - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields. - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as: - // - A schema with no type and x-kubernetes-preserve-unknown-fields set to true - // - An array where the items schema is of an "unknown type" - // - An object where the additionalProperties schema is of an "unknown type" - // - // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: - // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", - // "import", "let", "loop", "package", "namespace", "return". - // Examples: - // - Rule accessing a property named "namespace": {"rule": "self.__namespace__ > 0"} - // - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop > 0"} - // - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d > 0"} - // - // Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and - // non-intersecting elements in `Y` are appended, retaining their partial order. - // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values - // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with - // non-intersecting keys are appended, retaining their partial order. - // - // If `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`. - // - // By default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional - // variable whose value() is the same type as `self`. - // See the documentation for the `optionalOldSelf` field for details. - // - // Transition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true. - Rule *string `field:"required" json:"rule" yaml:"rule"` - // fieldPath represents the field path returned when the validation fails. - // - // It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` - FieldPath *string `field:"optional" json:"fieldPath" yaml:"fieldPath"` - // Message represents the message displayed when validation fails. - // - // The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" - Message *string `field:"optional" json:"message" yaml:"message"` - // MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. - // - // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a rule, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the rule; the only difference is the return type. Example: "x must be less than max ("+string(self.max)+")" - MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` - // optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value. - // - // When enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created. - // - // You may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes - // - // May not be set unless `oldSelf` is used in `rule`. - OptionalOldSelf *bool `field:"optional" json:"optionalOldSelf" yaml:"optionalOldSelf"` - // reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. - // - // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". If not set, default to use "FieldValueInvalid". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. - Reason *string `field:"optional" json:"reason" yaml:"reason"` -} - diff --git a/pods/imports/k8s/ValidationV1Alpha1.go b/pods/imports/k8s/ValidationV1Alpha1.go deleted file mode 100644 index 69ab9fa94..000000000 --- a/pods/imports/k8s/ValidationV1Alpha1.go +++ /dev/null @@ -1,48 +0,0 @@ -package k8s - - -// Validation specifies the CEL expression which is used to apply the validation. -type ValidationV1Alpha1 struct { - // Expression represents the expression which will be evaluated by CEL. - // - // ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - // - // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. - // For example, a variable named 'foo' can be accessed as 'variables.foo'. - // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // - // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. - // - // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: - // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", - // "import", "let", "loop", "package", "namespace", "return". - // Examples: - // - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} - // - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} - // - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} - // - // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and - // non-intersecting elements in `Y` are appended, retaining their partial order. - // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values - // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with - // non-intersecting keys are appended, retaining their partial order. - // Required. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Message represents the message displayed when validation fails. - // - // The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". - Message *string `field:"optional" json:"message" yaml:"message"` - // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. - // - // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" - MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` - // Reason represents a machine-readable description of why this validation failed. - // - // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. - Reason *string `field:"optional" json:"reason" yaml:"reason"` -} - diff --git a/pods/imports/k8s/ValidationV1Beta1.go b/pods/imports/k8s/ValidationV1Beta1.go deleted file mode 100644 index c0856bcbc..000000000 --- a/pods/imports/k8s/ValidationV1Beta1.go +++ /dev/null @@ -1,48 +0,0 @@ -package k8s - - -// Validation specifies the CEL expression which is used to apply the validation. -type ValidationV1Beta1 struct { - // Expression represents the expression which will be evaluated by CEL. - // - // ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - // - // - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. - // For example, a variable named 'foo' can be accessed as 'variables.foo'. - // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. - // See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the - // request resource. - // - // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. - // - // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: - // "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", - // "import", "let", "loop", "package", "namespace", "return". - // Examples: - // - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} - // - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} - // - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} - // - // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - // - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and - // non-intersecting elements in `Y` are appended, retaining their partial order. - // - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values - // are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with - // non-intersecting keys are appended, retaining their partial order. - // Required. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Message represents the message displayed when validation fails. - // - // The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". - Message *string `field:"optional" json:"message" yaml:"message"` - // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. - // - // Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" - MessageExpression *string `field:"optional" json:"messageExpression" yaml:"messageExpression"` - // Reason represents a machine-readable description of why this validation failed. - // - // If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. - Reason *string `field:"optional" json:"reason" yaml:"reason"` -} - diff --git a/pods/imports/k8s/Variable.go b/pods/imports/k8s/Variable.go deleted file mode 100644 index d9a80ef99..000000000 --- a/pods/imports/k8s/Variable.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Variable is the definition of a variable that is used for composition. -// -// A variable is defined as a named expression. -type Variable struct { - // Expression is the expression that will be evaluated as the value of the variable. - // - // The CEL expression has access to the same identifiers as the CEL expressions in Validation. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Name is the name of the variable. - // - // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/VariableV1Alpha1.go b/pods/imports/k8s/VariableV1Alpha1.go deleted file mode 100644 index dde75daf2..000000000 --- a/pods/imports/k8s/VariableV1Alpha1.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// Variable is the definition of a variable that is used for composition. -type VariableV1Alpha1 struct { - // Expression is the expression that will be evaluated as the value of the variable. - // - // The CEL expression has access to the same identifiers as the CEL expressions in Validation. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Name is the name of the variable. - // - // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/VariableV1Beta1.go b/pods/imports/k8s/VariableV1Beta1.go deleted file mode 100644 index 7683b90df..000000000 --- a/pods/imports/k8s/VariableV1Beta1.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Variable is the definition of a variable that is used for composition. -// -// A variable is defined as a named expression. -type VariableV1Beta1 struct { - // Expression is the expression that will be evaluated as the value of the variable. - // - // The CEL expression has access to the same identifiers as the CEL expressions in Validation. - Expression *string `field:"required" json:"expression" yaml:"expression"` - // Name is the name of the variable. - // - // The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/Volume.go b/pods/imports/k8s/Volume.go deleted file mode 100644 index 9ec86ed04..000000000 --- a/pods/imports/k8s/Volume.go +++ /dev/null @@ -1,116 +0,0 @@ -package k8s - - -// Volume represents a named volume in a pod that may be accessed by any container in the pod. -type Volume struct { - // name of the volume. - // - // Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - Name *string `field:"required" json:"name" yaml:"name"` - // awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - AwsElasticBlockStore *AwsElasticBlockStoreVolumeSource `field:"optional" json:"awsElasticBlockStore" yaml:"awsElasticBlockStore"` - // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - AzureDisk *AzureDiskVolumeSource `field:"optional" json:"azureDisk" yaml:"azureDisk"` - // azureFile represents an Azure File Service mount on the host and bind mount to the pod. - AzureFile *AzureFileVolumeSource `field:"optional" json:"azureFile" yaml:"azureFile"` - // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. - Cephfs *CephFsVolumeSource `field:"optional" json:"cephfs" yaml:"cephfs"` - // cinder represents a cinder volume attached and mounted on kubelets host machine. - // - // More info: https://examples.k8s.io/mysql-cinder-pd/README.md - Cinder *CinderVolumeSource `field:"optional" json:"cinder" yaml:"cinder"` - // configMap represents a configMap that should populate this volume. - ConfigMap *ConfigMapVolumeSource `field:"optional" json:"configMap" yaml:"configMap"` - // csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). - Csi *CsiVolumeSource `field:"optional" json:"csi" yaml:"csi"` - // downwardAPI represents downward API about the pod that should populate this volume. - DownwardApi *DownwardApiVolumeSource `field:"optional" json:"downwardApi" yaml:"downwardApi"` - // emptyDir represents a temporary directory that shares a pod's lifetime. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - EmptyDir *EmptyDirVolumeSource `field:"optional" json:"emptyDir" yaml:"emptyDir"` - // ephemeral represents a volume that is handled by a cluster storage driver. - // - // The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. - // - // Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity - // tracking are needed, - // c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through - // a PersistentVolumeClaim (see EphemeralVolumeSource for more - // information on the connection between this volume type - // and PersistentVolumeClaim). - // - // Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. - // - // Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. - // - // A pod can use both types of ephemeral volumes and persistent volumes at the same time. - Ephemeral *EphemeralVolumeSource `field:"optional" json:"ephemeral" yaml:"ephemeral"` - // fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. - Fc *FcVolumeSource `field:"optional" json:"fc" yaml:"fc"` - // flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - FlexVolume *FlexVolumeSource `field:"optional" json:"flexVolume" yaml:"flexVolume"` - // flocker represents a Flocker volume attached to a kubelet's host machine. - // - // This depends on the Flocker control service being running. - Flocker *FlockerVolumeSource `field:"optional" json:"flocker" yaml:"flocker"` - // gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - GcePersistentDisk *GcePersistentDiskVolumeSource `field:"optional" json:"gcePersistentDisk" yaml:"gcePersistentDisk"` - // gitRepo represents a git repository at a particular revision. - // - // DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. - GitRepo *GitRepoVolumeSource `field:"optional" json:"gitRepo" yaml:"gitRepo"` - // glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. - // - // More info: https://examples.k8s.io/volumes/glusterfs/README.md - Glusterfs *GlusterfsVolumeSource `field:"optional" json:"glusterfs" yaml:"glusterfs"` - // hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. - // - // This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - HostPath *HostPathVolumeSource `field:"optional" json:"hostPath" yaml:"hostPath"` - // image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. - // - // The volume is resolved at pod startup depending on which PullPolicy value is provided: - // - // - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. - // - // The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro) and non-executable files (noexec). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type. - Image *ImageVolumeSource `field:"optional" json:"image" yaml:"image"` - // iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. - // - // More info: https://examples.k8s.io/volumes/iscsi/README.md - Iscsi *IscsiVolumeSource `field:"optional" json:"iscsi" yaml:"iscsi"` - // nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs. - Nfs *NfsVolumeSource `field:"optional" json:"nfs" yaml:"nfs"` - // persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. - // - // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `field:"optional" json:"persistentVolumeClaim" yaml:"persistentVolumeClaim"` - // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. - PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `field:"optional" json:"photonPersistentDisk" yaml:"photonPersistentDisk"` - // portworxVolume represents a portworx volume attached and mounted on kubelets host machine. - PortworxVolume *PortworxVolumeSource `field:"optional" json:"portworxVolume" yaml:"portworxVolume"` - // projected items for all in one resources secrets, configmaps, and downward API. - Projected *ProjectedVolumeSource `field:"optional" json:"projected" yaml:"projected"` - // quobyte represents a Quobyte mount on the host that shares a pod's lifetime. - Quobyte *QuobyteVolumeSource `field:"optional" json:"quobyte" yaml:"quobyte"` - // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. - // - // More info: https://examples.k8s.io/volumes/rbd/README.md - Rbd *RbdVolumeSource `field:"optional" json:"rbd" yaml:"rbd"` - // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - ScaleIo *ScaleIoVolumeSource `field:"optional" json:"scaleIo" yaml:"scaleIo"` - // secret represents a secret that should populate this volume. - // - // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - Secret *SecretVolumeSource `field:"optional" json:"secret" yaml:"secret"` - // storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. - Storageos *StorageOsVolumeSource `field:"optional" json:"storageos" yaml:"storageos"` - // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. - VsphereVolume *VsphereVirtualDiskVolumeSource `field:"optional" json:"vsphereVolume" yaml:"vsphereVolume"` -} - diff --git a/pods/imports/k8s/VolumeAttachmentSource.go b/pods/imports/k8s/VolumeAttachmentSource.go deleted file mode 100644 index 7903af0a1..000000000 --- a/pods/imports/k8s/VolumeAttachmentSource.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// VolumeAttachmentSource represents a volume that should be attached. -// -// Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set. -type VolumeAttachmentSource struct { - // inlineVolumeSpec contains all the information necessary to attach a persistent volume defined by a pod's inline VolumeSource. - // - // This field is populated only for the CSIMigration feature. It contains translated fields from a pod's inline VolumeSource to a PersistentVolumeSpec. This field is beta-level and is only honored by servers that enabled the CSIMigration feature. - InlineVolumeSpec *PersistentVolumeSpec `field:"optional" json:"inlineVolumeSpec" yaml:"inlineVolumeSpec"` - // persistentVolumeName represents the name of the persistent volume to attach. - PersistentVolumeName *string `field:"optional" json:"persistentVolumeName" yaml:"persistentVolumeName"` -} - diff --git a/pods/imports/k8s/VolumeAttachmentSpec.go b/pods/imports/k8s/VolumeAttachmentSpec.go deleted file mode 100644 index 2b9595186..000000000 --- a/pods/imports/k8s/VolumeAttachmentSpec.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// VolumeAttachmentSpec is the specification of a VolumeAttachment request. -type VolumeAttachmentSpec struct { - // attacher indicates the name of the volume driver that MUST handle this request. - // - // This is the name returned by GetPluginName(). - Attacher *string `field:"required" json:"attacher" yaml:"attacher"` - // nodeName represents the node that the volume should be attached to. - NodeName *string `field:"required" json:"nodeName" yaml:"nodeName"` - // source represents the volume that should be attached. - Source *VolumeAttachmentSource `field:"required" json:"source" yaml:"source"` -} - diff --git a/pods/imports/k8s/VolumeDevice.go b/pods/imports/k8s/VolumeDevice.go deleted file mode 100644 index ee0b0e331..000000000 --- a/pods/imports/k8s/VolumeDevice.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// volumeDevice describes a mapping of a raw block device within a container. -type VolumeDevice struct { - // devicePath is the path inside of the container that the device will be mapped to. - DevicePath *string `field:"required" json:"devicePath" yaml:"devicePath"` - // name must match the name of a persistentVolumeClaim in the pod. - Name *string `field:"required" json:"name" yaml:"name"` -} - diff --git a/pods/imports/k8s/VolumeMount.go b/pods/imports/k8s/VolumeMount.go deleted file mode 100644 index f36befe5e..000000000 --- a/pods/imports/k8s/VolumeMount.go +++ /dev/null @@ -1,45 +0,0 @@ -package k8s - - -// VolumeMount describes a mounting of a Volume within a container. -type VolumeMount struct { - // Path within the container at which the volume should be mounted. - // - // Must not contain ':'. - MountPath *string `field:"required" json:"mountPath" yaml:"mountPath"` - // This must match the Name of a Volume. - Name *string `field:"required" json:"name" yaml:"name"` - // mountPropagation determines how mounts are propagated from the host to container and the other way around. - // - // When not set, MountPropagationNone is used. This field is beta in 1.10. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None). - MountPropagation *string `field:"optional" json:"mountPropagation" yaml:"mountPropagation"` - // Mounted read-only if true, read-write otherwise (false or unspecified). - // - // Defaults to false. - // Default: false. - // - ReadOnly *bool `field:"optional" json:"readOnly" yaml:"readOnly"` - // RecursiveReadOnly specifies whether read-only mounts should be handled recursively. - // - // If ReadOnly is false, this field has no meaning and must be unspecified. - // - // If ReadOnly is true, and this field is set to Disabled, the mount is not made recursively read-only. If this field is set to IfPossible, the mount is made recursively read-only, if it is supported by the container runtime. If this field is set to Enabled, the mount is made recursively read-only if it is supported by the container runtime, otherwise the pod will not be started and an error will be generated to indicate the reason. - // - // If this field is set to IfPossible or Enabled, MountPropagation must be set to None (or be unspecified, which defaults to None). - // - // If this field is not specified, it is treated as an equivalent of Disabled. - RecursiveReadOnly *string `field:"optional" json:"recursiveReadOnly" yaml:"recursiveReadOnly"` - // Path within the volume from which the container's volume should be mounted. - // - // Defaults to "" (volume's root). - // Default: volume's root). - // - SubPath *string `field:"optional" json:"subPath" yaml:"subPath"` - // Expanded path within the volume from which the container's volume should be mounted. - // - // Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - // Default: volume's root). SubPathExpr and SubPath are mutually exclusive. - // - SubPathExpr *string `field:"optional" json:"subPathExpr" yaml:"subPathExpr"` -} - diff --git a/pods/imports/k8s/VolumeNodeAffinity.go b/pods/imports/k8s/VolumeNodeAffinity.go deleted file mode 100644 index 268fce344..000000000 --- a/pods/imports/k8s/VolumeNodeAffinity.go +++ /dev/null @@ -1,9 +0,0 @@ -package k8s - - -// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. -type VolumeNodeAffinity struct { - // required specifies hard node constraints that must be met. - Required *NodeSelector `field:"optional" json:"required" yaml:"required"` -} - diff --git a/pods/imports/k8s/VolumeNodeResources.go b/pods/imports/k8s/VolumeNodeResources.go deleted file mode 100644 index 47aee15f9..000000000 --- a/pods/imports/k8s/VolumeNodeResources.go +++ /dev/null @@ -1,11 +0,0 @@ -package k8s - - -// VolumeNodeResources is a set of resource limits for scheduling of volumes. -type VolumeNodeResources struct { - // count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. - // - // A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded. - Count *float64 `field:"optional" json:"count" yaml:"count"` -} - diff --git a/pods/imports/k8s/VolumeProjection.go b/pods/imports/k8s/VolumeProjection.go deleted file mode 100644 index c8f30c4d1..000000000 --- a/pods/imports/k8s/VolumeProjection.go +++ /dev/null @@ -1,25 +0,0 @@ -package k8s - - -// Projection that may be projected along with other supported volume types. -// -// Exactly one of these fields must be set. -type VolumeProjection struct { - // ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. - // - // Alpha, gated by the ClusterTrustBundleProjection feature gate. - // - // ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. - // - // Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. - ClusterTrustBundle *ClusterTrustBundleProjection `field:"optional" json:"clusterTrustBundle" yaml:"clusterTrustBundle"` - // configMap information about the configMap data to project. - ConfigMap *ConfigMapProjection `field:"optional" json:"configMap" yaml:"configMap"` - // downwardAPI information about the downwardAPI data to project. - DownwardApi *DownwardApiProjection `field:"optional" json:"downwardApi" yaml:"downwardApi"` - // secret information about the secret data to project. - Secret *SecretProjection `field:"optional" json:"secret" yaml:"secret"` - // serviceAccountToken is information about the serviceAccountToken data to project. - ServiceAccountToken *ServiceAccountTokenProjection `field:"optional" json:"serviceAccountToken" yaml:"serviceAccountToken"` -} - diff --git a/pods/imports/k8s/VolumeResourceRequirements.go b/pods/imports/k8s/VolumeResourceRequirements.go deleted file mode 100644 index 1260cae82..000000000 --- a/pods/imports/k8s/VolumeResourceRequirements.go +++ /dev/null @@ -1,15 +0,0 @@ -package k8s - - -// VolumeResourceRequirements describes the storage resource requirements for a volume. -type VolumeResourceRequirements struct { - // Limits describes the maximum amount of compute resources allowed. - // - // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - Limits *map[string]Quantity `field:"optional" json:"limits" yaml:"limits"` - // Requests describes the minimum amount of compute resources required. - // - // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - Requests *map[string]Quantity `field:"optional" json:"requests" yaml:"requests"` -} - diff --git a/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go b/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go deleted file mode 100644 index 4395d6c66..000000000 --- a/pods/imports/k8s/VsphereVirtualDiskVolumeSource.go +++ /dev/null @@ -1,17 +0,0 @@ -package k8s - - -// Represents a vSphere volume resource. -type VsphereVirtualDiskVolumeSource struct { - // volumePath is the path that identifies vSphere volume vmdk. - VolumePath *string `field:"required" json:"volumePath" yaml:"volumePath"` - // fsType is filesystem type to mount. - // - // Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - FsType *string `field:"optional" json:"fsType" yaml:"fsType"` - // storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. - StoragePolicyId *string `field:"optional" json:"storagePolicyId" yaml:"storagePolicyId"` - // storagePolicyName is the storage Policy Based Management (SPBM) profile name. - StoragePolicyName *string `field:"optional" json:"storagePolicyName" yaml:"storagePolicyName"` -} - diff --git a/pods/imports/k8s/WebhookClientConfig.go b/pods/imports/k8s/WebhookClientConfig.go deleted file mode 100644 index b5df5bfe3..000000000 --- a/pods/imports/k8s/WebhookClientConfig.go +++ /dev/null @@ -1,29 +0,0 @@ -package k8s - - -// WebhookClientConfig contains the information to make a TLS connection with the webhook. -type WebhookClientConfig struct { - // `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. - // - // If unspecified, system trust roots on the apiserver are used. - CaBundle *string `field:"optional" json:"caBundle" yaml:"caBundle"` - // `service` is a reference to the service for this webhook. Either `service` or `url` must be specified. - // - // If the webhook is running within the cluster, then you should use `service`. - Service *ServiceReference `field:"optional" json:"service" yaml:"service"` - // `url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). - // - // Exactly one of `url` or `service` must be specified. - // - // The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address. - // - // Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster. - // - // The scheme must be "https"; the URL must begin with "https://". - // - // A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier. - // - // Attempting to use a user or basic auth e.g. "user:password@" is not allowed. Fragments ("#...") and query parameters ("?...") are not allowed, either. - Url *string `field:"optional" json:"url" yaml:"url"` -} - diff --git a/pods/imports/k8s/WebhookConversion.go b/pods/imports/k8s/WebhookConversion.go deleted file mode 100644 index e9e5dc165..000000000 --- a/pods/imports/k8s/WebhookConversion.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// WebhookConversion describes how to call a conversion webhook. -type WebhookConversion struct { - // conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. - // - // The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail. - ConversionReviewVersions *[]*string `field:"required" json:"conversionReviewVersions" yaml:"conversionReviewVersions"` - // clientConfig is the instructions for how to call the webhook if strategy is `Webhook`. - ClientConfig *WebhookClientConfig `field:"optional" json:"clientConfig" yaml:"clientConfig"` -} - diff --git a/pods/imports/k8s/WeightedPodAffinityTerm.go b/pods/imports/k8s/WeightedPodAffinityTerm.go deleted file mode 100644 index 2fc8427f6..000000000 --- a/pods/imports/k8s/WeightedPodAffinityTerm.go +++ /dev/null @@ -1,13 +0,0 @@ -package k8s - - -// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s). -type WeightedPodAffinityTerm struct { - // Required. - // - // A pod affinity term, associated with the corresponding weight. - PodAffinityTerm *PodAffinityTerm `field:"required" json:"podAffinityTerm" yaml:"podAffinityTerm"` - // weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - Weight *float64 `field:"required" json:"weight" yaml:"weight"` -} - diff --git a/pods/imports/k8s/WindowsSecurityContextOptions.go b/pods/imports/k8s/WindowsSecurityContextOptions.go deleted file mode 100644 index 51011f6f8..000000000 --- a/pods/imports/k8s/WindowsSecurityContextOptions.go +++ /dev/null @@ -1,21 +0,0 @@ -package k8s - - -// WindowsSecurityContextOptions contain Windows-specific options and credentials. -type WindowsSecurityContextOptions struct { - // GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - GmsaCredentialSpec *string `field:"optional" json:"gmsaCredentialSpec" yaml:"gmsaCredentialSpec"` - // GMSACredentialSpecName is the name of the GMSA credential spec to use. - GmsaCredentialSpecName *string `field:"optional" json:"gmsaCredentialSpecName" yaml:"gmsaCredentialSpecName"` - // HostProcess determines if a container should be run as a 'Host Process' container. - // - // All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. - HostProcess *bool `field:"optional" json:"hostProcess" yaml:"hostProcess"` - // The UserName in Windows to run the entrypoint of the container process. - // - // Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - // Default: the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - // - RunAsUserName *string `field:"optional" json:"runAsUserName" yaml:"runAsUserName"` -} - diff --git a/pods/imports/k8s/internal/types.go b/pods/imports/k8s/internal/types.go deleted file mode 100644 index de3a04f73..000000000 --- a/pods/imports/k8s/internal/types.go +++ /dev/null @@ -1,5 +0,0 @@ -package internal -import ( - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" -) -type Type__cdk8sApiObject = cdk8s.ApiObject diff --git a/pods/imports/k8s/jsii/jsii.go b/pods/imports/k8s/jsii/jsii.go deleted file mode 100644 index 61d738bed..000000000 --- a/pods/imports/k8s/jsii/jsii.go +++ /dev/null @@ -1,28 +0,0 @@ -// Package jsii contains the functionaility needed for jsii packages to -// initialize their dependencies and themselves. Users should never need to use this package -// directly. If you find you need to - please report a bug at -// https://github.com/aws/jsii/issues/new/choose -package jsii - -import ( - _ "embed" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - constructs "github.com/aws/constructs-go/constructs/v10/jsii" - cdk8s "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2/jsii" -) - -//go:embed k8s-0.0.0.tgz -var tarball []byte - -// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module. -// The implementation is idempotent (and hence safe to be called over and over). -func Initialize() { - // Ensure all dependencies are initialized - cdk8s.Initialize() - constructs.Initialize() - - // Load this library into the kernel - _jsii_.Load("k8s", "0.0.0", tarball) -} diff --git a/pods/imports/k8s/jsii/k8s-0.0.0.tgz b/pods/imports/k8s/jsii/k8s-0.0.0.tgz deleted file mode 100644 index a5b52dd3bd02b0af5429aacfad98b3c84756d6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746722 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

    @2&URx4+~twQ|FMWD}V7?Yt5Izc>H6{dN}9M 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

    VtCz!B*|6tg+UKW z(ZgtV8R(%KP4e1EBxNXK;tV^EB5G3K3Igc#ZF+P^5sDk~%!XEd^uByqdiCRxYkcG+ zUWhGek;i7uMgwj0*eX4c=g^HVB_Pv??${JP9CtQlZQpV((`_2*wX=xWtJZ(kpi%$n zuKP@u+VSO}Sn;QV7|)drWQv9p6DnYtL-WZK~v zS~(nP!c*^jOxGHNDzUz%NL%S$0^THyL|-u!k>8S3xdMH<{0ff1wjc@#5Op}h5vx=U zbNE}8Vx7^%U>$>X&J62tHqsODOtYD-2JmbJo+{IEI5eo|QK+YiqYU&>3Vm9%G&(!z zvtx;M1phP(Hf11aI&jVi1m)mEDZt}HcJj3Ij$$0ON#?dSvTKvf+pbfq%=5}cw<*J_&qaS+_TNbgXs z@a^H@3cqv8-qf8PU)njAsXJ>;e+Lz!ozTu?yH#ju3wC#fVf#o#Sxj9fiqfRrDW#&U z<3XFyLpX_7xf-6+66!>C!CEN|Jhg(Y$!=}Z&zi>^9|gsmQTSs4_(|f6%0r7|)1uvk z7P}W()HkX)8;ng)w~PZ=3}VhB)=;Gb>TT?zhOOx(|e{GP?PI2)cz$nU^tpQhT` zG{^e?*?aRQw{az3^s6B3h-dpmE!vl!<%Zksp5yo2ZjbHhGZRx2*ANLwxJ8j_f~>O6 zjq}}KBmiy_MS?071WNd;-71QNz(g*;%=~5L`_e~NIUYCi5!&P**kt1INd+f%)UuN3 zHOeD?u2CZBITDQuo@^n>h<8UnmlRW=;8FexPWS7@1*-a!ite;?>h$8VGmBMjK;W8` zLk!$ngU_+^)UE=K9uh2b)s9E`0CIqc;6We^E(-i8K+AwdY#)X6=fD+qI}1)gZb5xx z>I=XTM;x&aV;=zs#c!x!wgdP1vyOqQG08aSbnRR=n`As;lJPifE`e)k#&LSl1KYSV z)04p&bUGu;)S?Enm7W%xZ`7D?9CUgYFvhLmFPWNNtWi<=vWe3+4{uAI{gRmE7s|qz zE3cnpcR@_3b6f`=bvE+-@2syjfw=n}fm`O(O6uQ&DgJ@n^!hCNn89eA#C~swE9<~z zN)gG<>Ypn@soXP-G0UjawG5OtW;uhHW&02r8N&>xlZ)h^tWkG*{KQeGWBDhQqZ)G>t>eNt9DXr3o67kx1uF^-A zlYkGqJzkY>`h839g=P~x z9F3cr;MSR6tN)I!|Au4Rrll@_^}Sm8H^1Ekl_y`EktKehL704A@-#E#W1_zoYIiH1 z+zwUgJ(ieB)0h?IiWCfD2``DN1=B;2D4wIWT`8yIZ0^hEz6{QN8Jp`GbOwV9Z%Wdc z*&1|49h=#zITbdOrM3A;fzaU`GFk25H&jqZx`Kp3XE14Zo~kl0WfF0rwlF|5|6q62 zs{^l$ryLYZd^*eE5%H-CH|S%+H<*_SbV`On1uosw<(|%$R8Weok+!Ff{yL_l!CJ1d?_NVd6;~R|Ci$p! z;2I)^lN02hj*xGvww_;wsiFSjUEoLL2d~`tqx;rdFLB?1#8YA|ZyvgsujyvrqE&*? z(l73*flRD0^%n`mt7J2)cl5ckTI&0xv)OChvk5Po@M=ZEtMb^I+4VJ=USuY$iK^4o zTr=+4B-z0y$!5=V_JNK2mytbFbi)iws~t(VY3mFdO4hNs zok^z-f^4!}Bk)Oei8!>S4D?$ry}NVo9dS4zlGE=@`vxcYcJ{8?b82zsuYp*qq3W&3 z$MrjtQH%3&s?NQN(QF;esFvUpjbHpW2wn?!_d@b#OhdvD@$rmXNYI(Te0dAE4g>GA zhkYXd?U4}82?n4YEpS9CQh$3jEm{Vi%hCRD0FOX$zlF0dGs=)ph%2J{B+ZC0x89F5 zTB0vV!r| zBRjgpLZj`3Mh%BW2OSHG?pJY|aHi34WFgT5oq7w0YJ)>Zp=Sbx8Ulk324@C? zHitl41%KK|?wKPw-LUPT-x#)SKV;jS1_H|LoRH24Lyt=mX1*&+LnRO(91_LjmX6?I?B@X{w>rP3EO3oRW?jjaBCvSF>pO25en(JbnZbX5w8!{pkW z#=&Xe%asjpegOOF1Zzr|oX#B*0Z_Sx%HJv*l&(qxV@UEWovb0T~yBD&}c^Uu>7kWB0dFB_1wqI4mDM9d63y2G9g zJ927FmlHR#1G`jDi48Bbh8NTBMTHk_p*d7mQ~JV;;pjZVj7r+WUFBo~*OMV(hGv4M zUVl`VX0KSCX=F|Lr8ew*%CQz^{*e(pH9dud>FK(gszJ>2pfN0nm8CO0x_tLq+&;C( z)2=Xk=9xS*v;VrO3a3+5OV|=CXsHX2ud6ykOI=tabgub~33|X@OcHDt`y2RxLVCjTGqQ;>n;2_BVl00^j7*D-JN=7Hi&ZKz zJqd`h$`qXoNsZN<6Pp;*m>3&(#+Q&7EBBWSON$+ zD%8?s+utbT87#&qN-49Qg`6M^(Ojc9?skVZ6tSU5yFw9TtMtYhX`c;8@(N9p>!(ss ze}N&1t=BUkEXjtJT}oJDbj99NRF=N*WZF5G@T8)4uUu7~tdyZG;fZGIoc^R{urK-kD;IDj)Qa4tccK`3*&F3WRJ@!jBo3hu1Ze7j@sMoL z51YvC zmv~%N1%4uyJ0gPEGKf7lLG;X!7=@8<`K^4SZLLAA4VS5f7tFBt3z_5CiFeL!6SJf;T58Dv;t=@T4I0qPCz&Ng8~Z7xm|^>+qxN= zQ{uUZ5e|m&o#UE~t+3|-yql^v7CTEMz6|CUzP`26(wNB^-QwCrWEiqa48IXQ#MZ+0g;Kh`J=)|7Z^UWOcW0fczj5CIb8r6ZQ6>9`h**-!aeOEC@V; z{T3ZW+m3K_3G9t*JA$J0twTaq{8xVtJnC$!rBG@o5!~=EeheN-_&E(!<|y_ViFOob z!Gv(#{7IODvfJDssTmk3_+}5vN$K`aOMG$pe_XN3OZG693b35%{}mXaDm7(JPeP46L5g_~R4P|{2qTUZODpRDb)!Kl6d=xkxs zL}m_;zl;J^&o}nc3$XUe2+td9BJ*)p6?r*du(g-30BQ}`TIq3}4d$vOnHG4}a7Ox* z^8{XZ&yl+QZ%Zb%Ee(FU)2D;+f!4j%sZ*;jbtI~WecRT5kaV)G0d%L7O!X0j-{I0s zI0dtclWIx9mcl5Ir_9I_KhPi)+Vk$kmRGznBHZtGC!_jQD}Pr<97DKQDxN%*P^D-= z-SD?H>Dm@Yz^qKG)+}phY_qI3%X+q5|3>FuyJ^q4&A*Gdw#@=V<)nFm==Z#H)pBb)>cwNO~?8 zs;w1Ki`Tv|M2sh9;k5-r{!Cs%1$z61tUc=Bufzn(AiQ2P$a~}#RcHINOA+x|91_W@ zj#J)t7m48ze8gGcf=dA3U4&)yBCS3mZ>&9C=*bxTf|feF|9m178=zEjduIP3xGz;Tq?sb z(1v)A#T;W@Nl&$Dx!g4wtH0=!rrnaEhL8UG3HQyt~rWM`5t76x% ztxRRkF=tyasKRF2>yO*oJHFSY-)~}#Gq0_vG|+2-v(|z-3)~Lt+gxQ;OhrehuOa*( zDzHA{8S$8?yUGbE2pvq1-dw>|8~*=t*tdXZW<*qV0rZEHIoj@P_D0Ax{D1CtE9~P1 zF~be$bZjYNwWPPR+z{&FB;?+(;;<;JW(et6ccEdn0Z(lNFZE{k7;{+gyDX?UeQwSP zLXtZUTkBIa^Tlr|^bzDjER@Aq%Eo9mgV=#_(6g2`*6xhfcxW=U@sN#&+EU@TdsqyOdQy5u z8}$@bn=a2$p={`)>K>I&j*V`#MmN*xg+@0Y*}d2gL*znpr`E#W;zX=k~38&u{AQarVFp2~;e5=%a7 zbo5DucQQIr{bx}wj#LV|*RkGpAOryZ&ck#iMhCw2)=MMC043o3%|jRSHQns2R>7Uv z`bHT(;J_c1;DCLb^;}6$g)PvS_8d+6eVg{QY0nm@>kC)4qlL4nIp4`qK&hO^25T{Z;#7?ScT6 z)tfdbaN0c^D6mve4vU=3h6dXdHEG5Ud;NhrcBru4HeiVPpK*LFu|yh9iShIX<5qx* z$xFFZaIqki=L9nL2A#728Ed?IC6n1cpt0OsZU@j{8GXd>gW%0@hYtp$Q(%uKKAw3% z2@Oi~myM5C)JY!p)=Pv9%?XAwTeQFt$p_H2#u*-;#O~`baAOBJQgat3q56U5*%Uxi zYrUeSX|Z5tTft1jYZfn)szq7J>8c5{ge`~r;TFKuSG#x_q%BH*S3AK=LuwdXPTx`` zAk8DNb^w+(`r3YD`id&2!{)%~8GxeA+H1M|%_;F*5Q9{g-JrKyGVn+}4=qT9oRDB> z-kxm|J_2a9L~9TGA|Arf!Hpi5#790ME^)ayNBsYTh~Fb#yZj#5->jfjxWY;Og)k?i zGud-nToZ2*2P~KOkuQi(Lb$CNsF?z#@NQSFLg#GBD~Hb6qAG10X!-=eRJwO&L8hIq zk$eD8x74bDX?uXuS`+?NTX%S z5r8raawVWK%Fr@+6ee?o5rm=mO;$LWS}bK*FJ zaUGwnpZdb~crlAec*U=a83CJ=a-22vR!)r(>%@k~V~Y)2Y`A6Eu-TaKcxW-0R zXM!v@K$QPI4kB#Sgu?u~RQpl*)rgUZA-q_G1S}l-lYbZz0C0F+J{Zb*5IV#~YZ7uK ziLJ3i)UA?O)$`9H%sox#{K3BM(zoE{DZ$Gl&126UA2TNs_Aj$ve~*IGG~um(?w$EZ zoWEXuf-JzPb24H7lDhP_JS=0U5vnRMZ4(IlXVH6~bNeeJ7USlsZ?COUBgTO;8yg_V@eFS6|P`U4; zz|Y7m_`R+;qC$RPC-OGD)_8^eP4OCroM5#MDI*ArJ5z>Sz*bk(&nP+EkUo%**X6&B z_$R9XJpC(y*7@EBv3R`>La1!cYU6Q8WD5clJqS1w2N3?|yU4+7>`<_FH|RZfmPx+? z^$|u3`apcXrYi&vLg;!>d>_pB{gf-TidiHY3NVU&`e#hI&mj623KwUIEu1`b0nW%e zo_UlliOYA`Sz>=d5TJS}qREZqov8~tVopgYIZBeni=!XKYmcCR7CXn6@vm3tpZOLi z|0BP^|CjIW->jS%&nkcV61dGPrSoUWVC@UMRp)Fptc z`SEH7_w-$P7Y3~s+j79)4{rhS$z%RI@V{x!f-5&FR3mx|mFp~Ckx=YBmjmd1D8Ds9 zOS)J>Heyk_IJ)pbm|<-^6T;FxNm@gof*$@{=)S5 z$9O?-4;Lh(jRKn%7Yd&s5pISGj$A?!sY^f4f>?241U%b(1aLF~E6 zSrX@--%tLO92g*ff40ci)OWlX2yCd22uOV4(l;W_DoQ)TW6;f4z5Qc z(Gx@Gz=U&^Eb0-{2*rLxz1;ETojJ+3q%0)eGhBLLyP?A<+g>gYaEgIuM`TB%0Ab_@ zE)i!R{v|S|l<}(=iEhvbpG5?_SNW&Ifr`1F;oo5dfCP9Ifou!fzz^oyEYlkBZ2W+! z$Ga|0*B2y|Mo6F|iXS=9wm~S=Z<#m-bHwP1dN{Y8SD>}bPb@I+R}$+XU3L4Xe@sice)o; z{;g%Cx7P)C=H<(9C>l0}v*vSg7Zi!51Wsi70DZ|LNttCTda zTBG6QGkodI(wXnTOeFHgS!i$^1uJlvu;*>IHFcWZ-cf^9LG-)82el?{0r~oHC4<4# zWEG9I5q#Lw(Q{JN@ORZpiW(thXGVTL8MmLJW*@|{6I%p@-8xyKdWIcdi~-B3E$a$A zBI;q&8ZGwFa_#=0YZD+g0n&DUn!qDwW<&bj-bH3Z3hGQ#>Z9MAST-89)JXYx zv6&E^EZhBI_X08@1*gfh#D}Vu(w61ucSmi`a-{xzS>PcZZNuV^WL0%3j1MB5NMi{Z zJtQ2>4BWglKtUW@e9F*MlFTkYJNOll~?DpzMl zopbq{RH5puVbUynk0-1??M*u!V+l0tpv@N3XYLcQrcu7hlL+x#8%;oQvug@imZoczrX0d3X;*Hr~CBqh$~R zAS?PaMLYzZb0iFd5V~0@LvuX!aM)lPf>8?Cc zDvlRY$Zda)D59x9S>sC@m^)R*F{%IzMdU(TepGj2bl9<@*ll989f?tcGos_crDsI- zrb4G3n+mNv7d8i~GY2~C_Aes`+M492L0Ql7q~%%9>U5`Jc~0Gdfo9Zn+8flOrfo=K z9xr=oNZPVLHaTs1*7?e_OjJ($oi-;b6*80t8I5*PF6mCxrCmh(O^)g2=KK;N-L6f9 z?0eZEoId3@EzYXQeE=&h#2fijEbu$Z_(3(~<=2N4Vh@Z-c4QlR(tJmiNdlhT6?w-2 z!qX=^fLxagbbeWNr8Ar#JNE@JSqXTU=OYFfURH^a5QX9!`HRDtlQm}-rJT6#P2mZW z+joWim~*5GWM4Al#thKN5ILe^0PwK~3Q;KuuO!uPY7}K9!RNr`IMwn-t zax1s)n#0Ps`)YUcZ^TX0K>R!4GVH#IjD$TY#SlBF;2-40<+*ZJWwNO;Z#B$UcG$d? z&086px5}LlBXd{7N$(=5Ldq4Go@Bu=D}228{8jb&usJM^IjrGibO~f3rS6eod923T zNmt}Kob+2w7qSydRmFgY6up%RgIbPj>kC_%lYC4fjc&8(;#sTW_Wf#|QO2}mX+vz3 z(XJ@N*ebcL6sdE_oo{Eu)KT96C!H z5eG)Y-r_aAb^`waCOyN*5tGWPlQ10cQRe>-diUi6y#6^| z#A2ZH4FcLAaCR6>i+ANDbNqKjpej$Y^M<2((q@1Wn`eMp7)b0C(Vo?FL)%OgBiKvdl-bPWOsl0 z^c8)?GvcAwUw(auy4_y?O)}=4&(jtgrOI8C?1X%YL3^y&j&TM<& zO;gxfc)s`>-vF3w9|dx=;kU}y1~4N?pc&SGSYJVqoD>BEUxSew>Qy!`>DJ^?njs>C zp{)ZClLyL!$=h|{UMFj~tx$N$H7F$OkTB4g zLdPd5j`RY|Sm00$uF4~gmZ_h`)i(Fk5>mSSMwlV7qx#x{^o1Q!VoPMeRC�s0qbf z_ARimKJ~6-JHu9FlDaqnSo6&1h1kLKxKqNa%yRBIqM1Tux6=L{#JL=kM z7+VcHv_IsCDAXBc_^i&}9x+-*{Z7zCdOvil-G}j6pWU5RNI9SUy_T6hx{c$y-wH6q5{6jqJEB!kWciA@^M_eaCXD0p!)D1ip zBZq{18VJPi_MI7v-D$+`27}QhV0T;YlVRXp16`#nbQuhKt%mJ#@j!X-VhE2$@zpE!v1OMQ z+nvPcsKw42>MdBO5vBWW^W^rj~<%v_LNJ;MqoH2X7b#3St&bG;vtMj0qLZciPZ}xcZ4&JcCcWz1{=S77k>KBbQz~2* z)v4B+PUEbX@Rk*^j$NrJ8CWH=QwA|*bO+O+sZ1GF$YqN;GD^hOw5k+%MeG{3l(mu| zqdS;P+Ded7>XDaQOQS61xfccKHqE`Rf@wD2EWd1|*WP1iiSEfpynJx_rRBuldWrpb zMMCNzXNln#kdR%WSJ$tu(5wIb3Ybk^-MkXq1dN0NW##VuDy>(_$pN>^fH{u_i1<$6 z5*G>h>nbbROgKt#IHOUB!wq^Z=_G)q!M_$?cq8t}1sN?#NN&(CggGId3CfT}Lq|d2 zu^URF`ArZmZkN%@yA9{gU^JM#WWsD-4=VI6KO2&dfo=aFGt_Rso~G{@D))(gMlI%9 z%g6r6BOLAn*wGUl=X6ZRU$Ja%5z8&>P!I?fn8L%)l>AL{3mcaT+x@nd|x( z(uiDhHAMY&97(MSAfu2d3Or~x=&k30pTjr~nPa9}k#NBko#ak(Gk+L3is0^7obLnv z$*Dd34I)1%Ut2g&aP`vVY6p&*W6WsghZqmW>jJd5UGu;LGV`}spOQ@$fxm4g^&!`W6Qo+^oo|n5FXVxeM>9xCmO&_!xf2z!rs!@yJKREAN2oF#GY!A|h1fM`iJ z+?QUHkVn3wB=ixY<-&>(V}($dGMAT{N?{EVzDO0QXCRaSR0 zwVfWeDyt1uS*1tC$P%sYWOS+QEQGM?DNt%k?PR&i;p;_6O27t!ZY<7b)2 z+VXTgrY&BZjN082QW5DWMsTNRd$G}*G0~e|x|`u(P?L98S)?fhI7(vNjGu(RVNkUT zP#P>P(;%yLw5dvu0Go)Y$Dn*Xfbg5}EQsaE0?COqBXC>@VA+t=Gl5@ZI2<3qFH+AT zQvN8N7YF*0TM6hA->&NT|i1#xo9Bwx`B_!}hJ#P}7uT9c3kKEK{(;bo*&PVXP5Lk|-V^a@OhS!`bL%wh+{e_7cNGG#E0_Pg9 zDI+1|DwmK|O-%&<+6v!`x-343ivQF`zJ&%%xJF`h!okBF8NG#rEgald;-9S}WF|~J zOj&6z4koTud7ALI;c#Gyftn)77CSZqJ06b57lj?S05yJ!TGIv?4;AQ7TLBm=LdC{_ z#5OWK!^luC-rOIIRPkoBk>;ASU@Q8MjSlt|#=y1#9c+#Z{?UC4?SNeq@j>3GXl=on z*n(8jw4sIjO>O9{pkfFiM!sK>4@S%%1#@uIPMJ230F+Tqgj+`8qR1V%yWz|^`ef0!L%9bxM!JW zqL2Gdh{Yg}jX|n(mbV9kEOB2Iti;bGG82lN!NRPaI2Su1k=d5EUd2SE-e z=LJCu;b;_Fng&4HxbpnsO3m=&c+wPpEL)|S=;NN_VZq0vgO8KJS%Ht+UTc+oh&|E{ zw#)oVRVIX_+BKP(B-leBcH2PoNPQ<*tvwPEQgWFw0Y5&=6=-R+KS*M$v~TdDy4lzoDPA2a+EV34QD# zwqbnA6kt{%n9brZcZoy!y?ETr4F#r*Ffc-MelwS><7jh*9PBI!^5~oZlmBf<9^^q4 z8|MUJNSw%rQ7oKKH-z<-wD*h4KLWZ`V2uH8Yt9oRZiF83MgncpGM6n{a$p1AC|<3K zmCd~=!Uu)`R3OEpAW)UGHIFn}a>kyNlc$+&%}Mi0XNH(A1W9R@!(Ty}}iP~tNP zlMB-WIp_!TZ~;nKaX?tWpXwTxjBGnp^>cMby5#$70 zK9ph5bQ5)@D^MB?`|Tzi$b}huqN2Bs6U2UGUT~BwOfg21m!lc=UBDO@d>YhG=r1yI zx5PI#UE5e`qo6a1g5>!zG#Hu;Y%r9m zI87ersAHQa8^uKX&yWp`bcRNwUjJf3qa8QP>W+H#>Pl?0f?9F{4=OZi;FrB!;*k~cqoYEyJFZr8rf?Wy zHN$vio?M$&bPlhKUBlM0HrAbYyQA(&=(*u#KE3R`A|$9b%SM`HTUfF6ezds*!{Mlb zJJ23i;3bZuU;#BmNKJSF>CG``ImTz@+mH z^%vLtqjl_gQoUXW{xt@Fyy6`0tho@$h0q`jUD~3ezua$H{Fx!> zz8^#)I|JT#6rj5ouse4zZV*ql%_;HR#Ch_AD4%(oQ{lr0*9+ovG6#2ONy5iUj05O@ zumeFHiPYSjEB+hw!DkV{?v=PcHKwxX6v!|ra8r02$@B~+hWj{QBq_k#&mTCYNA>d) z8;$*#dwWhu1k-bKQ_F!XzH_(Y?o|i5%zTO-+)ASf=CI)0CO>}1E^>jv9uP;n(%71z zBPR8gXUsGUslhlN09Mok74N7U0;FNi@Gzf5k3k58;yDIuvDOd2d})$TNUqO_&UaD@ za7p8Q!uFm$SCv!!PH3!l8csT0TkT}4o!V0Ev~@_0tauuZ$GuCecv4YpdWuViV}iF8KR34eNn`cXaMJBwO!d=V$I7q@s3+<#U7^%)tN=P1UkSA>6b+)86Q^HW7s=>N zhxP`Yo=Q5jdXYw?MeE`xNecy` zvk8o&i+pF&@;avd4t|AEeP{_h*uD=}PkU{8mI^Cb#S?{NxZbySRG7TbbDu+8l00CG#RH2}EUd$pAe)!C@ z;0f2~A;$aRq!6S|_;Eb2&6XB^JR$seOrn@-x5NZsvOBTBpn;rOBe%ZFBjm4*P7z212Ml@E#_1-KhY4WoE$LI>PZrr z(~mIZs*oi-mN~D-NX=x0Ym#E*=|wS0Ez2#+%4l^vs+09iH{IK~XA2-L0@<1ZNP~Ia zrajB^Mzj*VjXSo?QRQ@4s8A=f+qi!@wT*3}bTf#{ZF&Y3jI|_g=CQY(CUVft&Nfh@ zV`&L3+W}REANReiQ?`GOhEv0f3eTMg%`%`pk6ia!UOA{neP)&+vy--)P1@GYh}Kmi zNNs`nwK=Zi6G8NbHpf*VagCB%r_E$RY9_4_0If75OZ-5C5R@fOG^-g>*YBMuhxK*q zeI970t4uT`59hJ>m6(vN!s|8T@|;^$skzRR?Fr6MN+iu57bzEE_S2nzjXsGi@K5M1 zf_f8=K)Q715%kNauiUgQ0~Wzcyn(B~MnQ-d_>!15;}|)^nv(DrlK=?Q(>pQN4$aOtOYNVWbR>N4e7;sym?Di zrw8yJZnwio*%3;EE#tDHY~AW ziTQPf#Uo;9@G%+K;3KETG`VuaPRG_4DxMM>WatbshQ0np1sO)y86Kjh^aUFVRIsfG zHY(~3%aqf}N;OOkHni42O#5{+Vk;MCL@C6c7um2H@k1HsA(OX+JeLXeiPOHp<67&m z%@&s^?h~;#SKWY&n^ki&?YDSL>t4sZ!U~#a0c{0@0TmE>J%HZ0r|JQ;#QNJ}$YU$! z-gshbA!~%Lz8no8c#RyUq#6k1?*VObmi)A zkDMf{-2;u;vPpMnvt>40b`C{+F*7oSHtF^*F@>g}xzFl0V9pYhmi;gRPoq>TR0mjOo zFfPi{_d%*0;bv2Y$Z8#NdlwR6H@R%W#0(w)K49v>YrjEn(HCJ59S?_e&g%hu;nqoY z#@)JE4DLD+7C4Ex5sj)$=vyRz=U%1xxZG^1N?0teZ`tnxSs%LnoTMX>_- zSmcU61KPmLPee6M3VXX7AFn8c(HnqLA1Htl#8nBIbG!Ilop5{Jn#SDTc-XPIJ)7HW zLnmBzK8(!ajR)h4Y=hgY!}MfA#)GMCgHt*pHbJK`K{w8Kn4fWiuFOd?tO4#21*I!O z8V|GJUg0~>m%9u*sYXbnF`}8y|+~Ef?&MM|GSWmCG}tEw|#GHYDbtWyBoCWSt2K-u`%EFf~UV9NJ=Tjw(r0 zE61s=gh876!_AQ6af?Yf_WIscCeTdtXA2gNQLv!dbdM%|Wz*dvv;8vL|4><%=Dvfd z?@|YV4=x^Xgc6a=U1f&)>(wI}`Q12&y4Jm~9eZBzNZfD1I`D!8h-Rab{s(@b(b|g_ z)KBRylCpjluVF+XN7VTJHwbtm=$wkz$!^eFUsfc_6>PrB!GzyPxJqm^7V&3Vv6$X1 zB(T}si`r=!@VyOM27VBV3V#>@CIAZ@A>#9*Ly%6PlD;}i;>I3m$~nPc#jD`EolQ#@ zBJ?rTMMl{lANkTBn(4lio{&y`K6h7ep6DqY&mk@or3>(f#aR~e{Qk!p`yf%uy1eYm zh%JLhF25Y?F7YqmONkO7@HI08SY@nx>24jfFn1ON9>IP~41s0TI=T=}rj}AmMe>5! zkACMrS>5~K`L_SQdl3eAFRswt3mBq&_u_wU(5E1RW(Vr>p1fOmK3;1dxU@o!d{{`_JQ7wy0kE^py45d7@1@Fn3;(ic`xu4Z@wU4??f{QEnt z6HuF|KTpG-%djekZdv@k3_Q0qsNV|SgzLrer`BW%u1^l;_OHeAyTa>M zN^eLU;Dh}fc+}Zc3$RP(IQAk@_T`aiH%iNyh+o9T46v^~SLY5yVHHKqUi{P9sCK1x zwfw6&_vYWd5-POZ&j4}xi{EPbFmf{Zw@yNwNu)vE<-=-4T;L4=zXOVnbmA8~ zzbA*@ErZ7$F_wJIQuWVBLFS3xNM1JFbz0I!)`xEKTO^NpQ%z0?3B^(S7T! zm$+-hpg$@kmgDd~_HG`!m@n>Tcipu$0B^U`!t%@Nnf|g}dcK)|4Su`EV&v(_&L_9E z$gQbGE;+JBRwYjd7dnr;k(Sd_3pyQ+Y?X5JLuBifHP$On$J2``SFUusj2j+!EQO|R zQo~@-{z~RD5os9joP5fX@v)B9BB{x=H&&^Us$Zue^M@L|-h*Zm3IrbSdGRI?D^C?T z<4;@qEH|s#$!Ya~!X{GK_OXQ~W%4J}e!u1Q($!HwwW0luE(8OgVF;rH>sQJ0_ML~q z`c=D)%D!9Gc=RB>%XBr3t#$b}KQlW*v(3}Vn=qYrEmmo<%9df3rH9x|DuwB&cfnK& zO%=Vb-4hc~*3QJDtV-%o7sA>*a~j*qvvvdo)}pV5u-;Aw>Pr-o)zYL2E0FJjWh13bRbrVrT1d2d)bT!W> zn9%&JjDq|-qk8m{|K{UK!=9~$%_>^MXEC(OfM^^0)m05_nwt#f2&c4{X?)()R+`ha zuCrmiJG8*11uk1w1Zp%QIhl-XvwEd=)6@jq>Dfxp#{F9sUewm4-Wy&Tx_CYf>PCQx z6NOpjZNU{*Ba-Q4=UT@0>7DNGZ0#1|sNTX%m z3_<+IqK#KcG6-M;uiZ^1Jit24&`XElF$&CoTQ;dpP2DETFjsO)^P}9U&sR`k0!usakLCV8Cq~&)skh_8lc_pAZJOO z`)o8t5F$T_5QgZJ{~wn~9+Iv}I1j=V=ppPxYH6yHMLrwurm#aAA-C>yYDpq3=GFqt zZTFZM3AlBqMy6Vre0p92*O@X@uH(oz5i?LRR@yrU7kF)m_?(3#Q{% zGeGVO1{8vuQ^RZL64+?P-=?GPq#A##U7#7@o5I^~UdJSPAfdJ{TnYC8&w@CTLumet z!O@x#81g|LuouIGGZR>7NB!>60JVG()9#*r-P%$UAT||Iuyl;a6gQO?9%FI6O8tjEvH*AG< zJSSAQ|L5xj=|(-vj%YzT^Fg}&`7jfm8%}$diq2K3GEKPLsAKsKl}?HU&{A*zMhat)Si5cC%X0t~H>YxfOMz!N_8EJBmyf zHZrn}t19QjB6eC4yUFlk5If^b=MGa++VHy3u+x6LZhx)Zj#@Ggt+SEO?px9Y7Y@2T z6}Zsk%DcTXbva<+K!Kj&aInzeQoH@{-a>`Pma*=n^-y6=ecd0}qb`o9zj*7eC2bh_CX9+uU!Gi!9^@?`-V$Gp zmNr(Ozlwc-AscmkE`>vVVS)) z&+DiOWR!!opQ-PHE7iuBEm?aV8d`S)F59V$BP+U04w#y z5`&N-C-CQV5r;%Xb(AoEM&#A(=FY$Kf6diLW&xoD$*vH=&JxY!Y96WQAqU5dAR4hW zR1CoBNr5!<2}N{8*cEg;hXj2BF0n3uaI%V9c|#_`OgHdfMc_4wpUSR;WAsRw{5BkT zKVHqiS(<12!4M-bDK|rl<$d`N11ht3?>{2)14f|0uVRAaP%e8Fvj{Em1L1S1SL+z= z17C0gjt+XkqZm7Yf6!ID;(waO?t(-&=soO;{KdHm1@g|6CHo2Bv`f}tsQf5*b9tM$ zF0A%8B&*;7_BYv|tK^5kR)lg_xOd6B#^-Y$f6HF-_KH&`2xlA_nVOK;dbC!v14taRr?uV%^~d;|e?OUF+cm6-B5G zWteo%5oIWZ-c7-VkJJoCmO}-Lum9kDaqcFZ;$4sg1#?vQji-ljeBs80aj+_#q1@1t zG}}xT3mdyD{$IAw0Is>!O)COinr|n#Vvs$I6D?sb@ z2WK3hWueL;LE5Q%U@kI1(>v5{(61(yK48UW^twDnc3#qmteA2$%tt97<-%|})ixOn z>j_K5PgT%iPT)Zq08BkBc?rZLE8<7bjEV2Kd&%j*VTjdi@l`7Y(zFI0c+cz_cAvG8 z2YWIYoP-A(-sMxfa~cLNhuHmeWUIL#t(?So)}FxbP-RV!ZG+9#2;2@QwvEREx90)e zmJB5|2f!T;ZST&Z+E5QLHXIKujC+j3X5n0oaPDwAws3B_W7iT`_gJb>SDZH-_0AmJ zO-1R+!JeUD?b9j~TG>&2%_lgR=hKL0T~6zAT9@d|$L^`@_ig6v zi1K;a`LofWV`BcS=rKO8SNf!U+Ie*DTIbX{r`9>u;GCM=W3DlmHXhnsn$4x1e=g17 z&hws4r5&IlHFcd2Y$i=Zcau$|=}M%HM>dhRIPY$BGdj_G=bc7-LKpfubf8<9!on05 zrqBgb=uM%G$I~aK(9V=6!6wj-obnh?hBkqAJn_8j{MmTgGc$jda}}S}8$Bd@#+ii7 z&6(X)FZ^H%qz2qaPcY)e`NoBjQEYbcf$Y>N$wT?WlEy0v# z+O6^MFdVdGsV(K)dIB?Sy$qa^t4Kj#nZ^=(F}$!f;%K>Gk9`)pXU7G*6=^iG-ewTBy`QrR|1Fjpi#Fb$b>vZL0tDAW|cRN|Qv4 zdbTt~#=xngbXw8b!Knul5bbKf*0B$@Ehy7mbb9EFgNh}$nzZFyq1UkjO}uH)Yqjrn zh7hcha9SYt$S318gE*cYh%mxa z2`?sni^Vq8ewxPB4=fb>q{C&ASdB>RWNeYxv*fWb28W&W&lrb2gu!A*`?Za}qGh3& zUJQ1UasmG1U|n=ZUH|8bz)nV^79y|}F4q|XuqvWy@z*1ti{bQ4@z;at0b19|a=2{= z?h7ZRGr}Yj#+-+sf*S+p8KfTMEg&qFJW;^)gdK;hfqE!JArXKA_LCS1NP>bmLe3KV z3t$$a(Gxrby>3B&)H%#8IFB9}%ldQlplW1Uf1W0iCt&(9A{-z0jiLB?w%PKB*y%Iq zS-A|$ZEVMj#sq8DS8EfjHokIoVYs0J)3yb0 z6$JA_Vcg+#Y7~t7tRs$}(*4r<&X-HE@kaK|=p-lCUOqhCM+~=FL*`$Z&Z)CO%g8O%JL^@duG}Bwa2mSr9bq9lRC@RqjOZ}Xl&tI3*Vj%d|P&$j0A7{ zCEmTAjB*EF-#4tkcQ)`n~+4B3tnlF8_&u`DcU9*mh!TX#l* znC8yL!BnvxMsdAuVWr#mbDqplTPYW(>=IMp#5g%ktvc*|h9tEr(rHO*k9;bI!}gQZ zD#R7BmXm$}wX1%Ms2xsIT*n-((E8p(K7R(+&E~PF~_gdv$STVLqZo{<~ z5BleG;zYzv(Nys#IKfy5p$S6NtGD3k20c-Tj_3C7ywT@yaF5_dRJjm=7q7_MD8kMX zezyTBTNVW&UJ!m{wpUl`9OQKM_7~C=0S*cB1OFO?iLJ3i+`PUm_!rx^aPS&*w{R%H zJo_9x#rz6z7hJ;s#Z!Z#ke#^bf!_v2!R$=dO7GPuNSZKW>L)Ez$RbZk0S^{Ck7t4`vAQLldi+1I^}lVQ2m zLzR`TxNJO}Oxm1GEe#*)LLfsbS1V*gEh$>^B>@#=0WeQ`?FpHh$0yHPfm*X2TH_Sk z8EE5_7RD*Y7M6}jm)Y`HtJ8Ejh3DSecW}I73r0AzM$zWJrl2N}zBMLEUUUtJ;Onx=IYfwgM!S2?5O~_ey`;+0s z*kVj2+_lB!mvus?R^?M$-H5am{}>_9-PV>-R{QOBCevJVdD#^Yx-D{N(#RsW%o;0j zGUf#9bFhv9@o>>>!(V1D_+uLukyRBE0*^u=S%-vyy-p;doZ(Rj)~%E(DMtzIqZz8P zcL=RxJ$2*O8>*O}ZlIwxwv_gON?J3dtZOFs>_H}2#r*PjOxQa>l)+@DL#IqizaDV>^V&=IUCMtJ`;O%}m^l2cyeQ+|}zk zO-YjRsAqF{2OlMy(9@aF8&8H8l+dg9#Ei}EJxRN1OZ1J0opVU^?Uj?mVkl!U&GU+% zG((cp-c${eR9vrN7-gMo95s1ZDG{f{eWrt+@rlIz=2bgVXOUH`6-=98JV4I-!`3Gl z6@rQerrMNI_L<@m>n!uyU z*fv)me2^^8sT1d%O#2s&bDBLS{y3^l8_KCtZQM$fvuZNDl7=$?<2wRwZV-6r9tk-$1CbU6!<{FWr7cbIr;{D~cBb$}q|A~{u2{I(>Fpa<;5M6lHa zYy4*n1Tx!nBYbFINYEO53m3UGBu?aQk}Gpo3xOezA>{BjV4&sdg=KX~h*-Q{2Vumr zNq!MuM$RU3M-`DDl)*eDX*93UGI%7QDdCCPuT6Aj#E3U9s!sF`V1tL?o*+u`FB*i9{22?X7T-mym_;yIF~ZbGI6@x5kcspOx+j}k{zB0jQ~5UT$%cDXeh|TO z$Z8#JvemEf54wt1$d6Yuz)$A+y`>BdyS*#%`!RCj6)@7!2mUq0=-;^|>kUW$-wpb( zW75PFM*wIZU^-S|^Wf45hYJ$z*}q5XdE5^qg8IlucP~EpbAlP2dF1W|0*9U?p4}>N z>3k!;|24uy;g*P8Y?w5Y$q26cLaI^6^`qtPL$wRX2=Tu5SVI-Xu|Vy)`^ z+q~NGWvyrPYK`U4rqyg(&8F2ZDy^nae_+#UjpD97S+$RNM!c^Cet!_2EXZ16XGwh$ zZf@513;2NDfEk2&8^r~xgjpeBvB#T&S2%K({02hL^Z$SU10op+f`nyw`{@_r-k`U> zP#?&H>k*Sr6yE_m;dyC0F?x&q*z@*X>IYflae0jOcKfTm!CidzXH3Ek0yGFBEy90D z0teSLwiowGS9CNTjQ2OM?^%)wQIM+8z1$X?CSFKl-Bu!WPUWpadGAQ65DwYsz9l&M z+nb=ervrs>YG*@FtHAf2pfB0po>2pQGqD%iQ(5BQB1Zj%N6`PhCz~touKgo*WOCYg zh1Vd~u)z=5OGc~tNWQC7dFO=W3Oz0Z#(lobcf5OXPd0Zigwq8o1xsxT9u<6^_=0ID z5aLbZUxGXCZP48d{>Qr)!lyj&z{(%S&no=7U|!e*@L3Hxpp%i>0hO=bI#=wc5+`J@ z6P3ANr^Bpq94&)TrYCn!c5a1r{?y;dY#9XiNZe4I2jV+H43RI7`~HH6&*G4v5I-gl z;HPfq9PuD6h?d-``3oFE#>3`l`_ReLJ(m~4_o9$Tf7Be0uTF(>ol;r zW~+Fy@TkAI=EDK+c}i;qAR9~xq#nCLzshQqzkH3k%lX!E2xDK!10|1$`0hHOu%!}` zy^m+)8dN?BA4vEU`U`}%`RxOp%)Q{!Hz?!l_5-`{o80jQqMgvQ!FZ$%ugq&AC8<@smBza zSCmJN5zh#ucDO~vS-BkbS%f(V9f$xziePe9_MJ4T@t4?ly`uDAp;;Vps~-i)-=ig2 zfq2L3Bu(%r?t6p2Qh0h{xsdSZfd*IEd4q6;C^rfW&-sdzeI#%UV?R;xsri`iKbt%+ z!J;6jj8qC=mFH7hSg!ilA&GM5w1_pBarV0P^aTYeyGUrESwOQL59|$X@~bu-DlXmO ze<;GSISCRGebH8>_<=wbAms+3zQ`r|84kfO4hgTz75+C7zNq+K1E($jYjk;SqyAv3 z=Czfsu1yec?gzZQCmZE*7kHlu5h<4-_<+ClyxBo`z4j=GKwyFn9rcIxt>mx^=ir+h zA_2+yRrXN+;5p#rYr-gh@UPIPAcFtAhjhQlK>ZRB_9=+?Csl?zRUw7CyL+;E#e_lu zuVqQO|B+^iwzSGgMNDB3Yr4&sDre$-DNC8GLdc`sAAA7Aq?ql%+=-v;2mUq3LDEWw z{5_;}24O)sD{d!m#j!Q<7hc4%_OO#xvtk7M9gzif(29gmCIjwxmCVbB!CifM<6w@& z%Qj24>oZ*P)wUQre=cWp$1f{*n*=lR4*M>Jx}vXZ;xr=BeHJX;34+k2eiGYC0*Kv} z)_R${Uy;7$b~QCd{L&itaQ{~6O8k$8qy3CSD(f=>*;9SLFQF8T)K^1qH~5v6J?~e7 zACre9ex;wQsOBr+kcVu&l?{Yqk?;+OOo;FD^8VB38b`xPy&I5i>ser7%Hp)<6_X)x zze+<%niZCKaxg{^x+ElSmg=6#4Nk|zyI@pWT-ASW8Y=}b%p-( zf3DDf<+t!Z`8U&R{_D;!Jo(PAd-N6huSQRgWC|0*142Z?Q07;~Yq|5&z2*x6EKqoN z0^{d`hhjgX9!E*N2foVJTou1T|G`9=a;m2!@*(#AT_yz|`P1Gf&zchqRr+YbpA&Gm z&m!e2g<)7e$OoGJ4=(&o^Fp>0za-tT6bQomHE^~rvBm^Z4hvM5FRlkTV3cG zl3-Mc2kR_}a}OC+>~B!<(b5&25hs8!%qJdQP~LR)HxS{^a#11y%=@3NGFL0Ti*Uz6 z!q$P$U21+UtmX^x$s^pM(pAbmMWh#4gd+GLmtKHc5AHR}3^8%b7Q&meeDY{WL|6}= zrLX;%Cjqvit>++2Bu2ev!rusKkysM)p+t^zbp_kUK}c^ZaH;0bHTN;P@P)1~lP@Wd zo1}_De34(8$vXPobGN^luoywU1bZw%3mnd%rBZsgqS%i{T*haFK=oxDGN>_^eTMv4 z2DIQFQ)ktx1IVJ+b z*|xpJ4)pcU(7crx1KW^5+fWL(Nn}=7YVim})l;i9F~(}{@#9xL;k0)#0h+tHOqQYU|zw{ z7~~?n0HKL8kBGOi0?<3-F^r2sm5``xQ9_lv@o2& zQfVO?nGqg!hH443?U!>*VHJEC?Gn~+A@&)K>f5uo1uFN&H07G|g+#eOii&71N;48Y zif9BB1~Wr)x{9gR{7zl4)TDWrzw(!ONKQX3?3Y|FbdJ8}@J$}kLK~t=Mog?i2HK+I zPzsy0t7#M|KgGP!IN;Pq5nW*~xsc~4(+0K$eIP!H*M`XGR6QRi-^&GCVMW-d(BF{* zAohhAc}Fc1raTgn$(b2q(;JzGNth=tNp7WSL1_w=@z&*pmXyaDArYS^SXlnyk_aD) zF}S3l)6^7X8n;kLkS3a1Ts|=D_iN=oed*ftq#78Pp;-m&jn0X)aSHpQ9eWE2KR4-8 z>NpUR7W>Zui@ruU6dm86L-I8W*2qilBbx((0d9qTyhw>mxb78^GYQem3!Hl zbsFM30dyq-go9;`UNnc!|Ep{Ohl6E5uUr7v{j(s9$o@9-bkQzhPDp1^ z9Oei=H+3{}zd{fpByL3n)nC+?$t}hYYqrd6Lpa7>*X5MH25rsglW_$Wxw{-gu*fZ` zeYsAgv8lRGq(q8QQN|zwBH>CZMZs*q;3fa}WzZ$yt+@+Y(oJnC$2(C@sSt&#Ba zX52*X*$paTkiAd2I)N<%b`$tx9kP!2Kg6AL|GZ8G@EY#UZeM19;vZDG||1p(`J%$Jcij+F8?Z|%Q&ZL=lBTq-KgR=r(eNU zO5|f($ej=~paFyunIANg6}F!P_f>YdK;th$>=3jjAq`yQ1hF5v!6R_PF92elkvW_N zZg`}r5uNJ{ksri~Iorw?vcRFsZG}8*K^*b2g`jZQw~slmP2lP|#vY_ZlQYljff6?P z>J`71M#?1~-iWGUUi=H=wb+{@Xam^5>~DM5!E21LvxNOPwfc}Rs$6-+=F#1taU@>QY0&JKC_*;$J{H;U@dS#eNoStbHIUtL(SVve!C{8v)>(z z#`R9;&Z^AxJ>@cAf*n$Zrr!S`PAU;BANfGW65pEuHTAn0m2E}A=8s&d!qb%yY|L9x z$#1yRl)QH^t^Y98VJdD(=`W zVPGC1Yh_XR3RmYz4L}l#>D!`@C{;dxO5#Dy2oFM2$H@?psV|%pdv!d4;k(%`afzI@ z@DkJ`uhg%g41N0jTQX(?5DD-UcAN-401iBoWK!!4JNJ(;6b3>I9MKu|s9-PvfLkzV zAx_Jf*3sqAYe7Ak_c54=pTNuJFc<_WX`;nh=i|gu7YOal7hZ?NF-MZ8_4IbxYdoGb ze@pIJDbecAc)`Cd`s6DbeSyhoA0o0c!6PrMr?v*PaCy#WUQz!RhL^+)YMKSx9It@! zH(B(@b!;-JAn^I9#5$+BusmHjZLc%#R=CXNYckAX&M)#MmmgI_`E9c%`NVG5$qdpS|Qf@0@teV&c&(cYt~2Ce2BPxDfiD zRx~mMi0*a9_3luzUB*x}{(Fo|%65;zFmI-yei6}EQ+fT8(OGl%y-JFc08c@Vb1d0L zN%CZ%D#^)yT7lLr&@22yS&Dy4T_iqxI>dq@UowmE(b3y-YK9;x^kBd~Sm`@~^odWz z`Tqj%TsgkwQn!VOfEPcDf%qngVc`Y4sZdr$lfRWLh7ZIjRCaCMP+<1F?-{3xI32nm zoKFap`TP#x6Z|^~1BiIT#Q$(948fE~CspL-gaN!k#gA8i{*xI;Y@%|+c3-wV zbK1`w_0=^#^;@a&y9(VPun!j?eG0J8E{IYN`kcD=cUzp*8h;CyD}X-fSfL!^(-iN~ z+ao+lamOmW$H+$EvRC?&zYFzlB>wHR2Pq*!+XDL%#)Q-$6QB37nb9RYRp2|5yP|jW z!XALNPB|Tu1GnV3@2V$RPNWO)Emq~Q8Dm5LI6a^v{bS*U7+-II_lIYshuSmp`)r^tO7Efi&ySm{CiAbTqZR5CiUX= zuQgr=oYfoVeR9pUix;lqWKId(nO6PXz4*e%u|Ii9Vye3+ ztW3xk_ABh~ux;N3lUcGQL6}>O2|na>s!-8#KEQmXm`e#dq}6kUHw7krQ4B}tC=-J3 zsT6##lp48;@4OE$?eUn?MN$Qk4YucwoV?x)VH(wU;w8I$yu|Roi#xu{@6wAW+2Mjk z+iQmZ=>AM1+&9G<&tNgFG0Dm1>8h~obcX{q%e=EP0}XV^yS7&PY^`*^(;ba3)=HPj zx;52Lm#B^*raIBL$FSIid+iu*;(iWk5YlM#kvtHu=r9-+Q&+CEt|8+?gs|&|gfT$( z9s@)fiwXM)h7bHTc$7*~>eaMMe=Q$~Ja}Rcm;P34uHe+U&6RW*9hcD!3C+@TwO@Pusyf5Qf1c z^%wlo&m?qqCY{!fH<1p+y$@ZHd>RN(C_WJH6+=HK4|o^&g4o2_@Modd*`GeX;WBj|jIU{ALKG(HGrM5ofc_8Jx^G@E>zpWC9>^bPtK6b7;HzDA$K>cppiL8Wi;HGOm2?R0KB=ndTJTQVkYt87|& zhbz&Rq8^Jf>?qgT!D-wzqE2| z=3%gsqkM`N88ISnI8aDjmaB-fXC!N^NCQ|@>^fX=h|}piUd-qN z5yPaQszVgEaYC|=Xk;%vlR^}Q1n$Ubrc$r=X!DQqH|{F)^e-RZT)~MH5XO!|%PyS_|f-wR*+o+Gw;sUzvo@FQLv<|lT(*p zmpCNNIeLq9r$TIafW}oje!$cN$w1}KnskHHxq(m|C~8lnT)LF;vA@L4S%NLE1~c?X zJpSLk-z!y=nR_aiyJc*Ixe`-SUa>N_@GJitgb83-WC0^y1(GUGzK5OXQXhCWpa(H& zUtba$qEGL>$}z=1fk`UZ9`rBBA=G<~l1HMy!1eH_Tg2kk|Mne*-lYHf7x>qIZ*A25 z|M0KebGQ3vx&WVFygSad%()P7$UoiZ311=EU`u|i31kG|r9Y6c+!S%k`eDAy3z+&6 zdG`Qk-bTN}zxtI#(H0e86d+zXDtkCnOpQfh>|{d>?q2*KOuf4od(n#|5a4nL_yNR4 z42W-}483NRHhtd#`i@?IdiV7WZ$J*|Ear5Afn4Qk9Y;8C=|An<<>Pj|kvd;uM~%?J z{rV){UInAg$gAOk^*CB1kkH(Wp9Kt01Q=@0WA=ulZs%~^uw}VTiy>MJ(PD@eLo9Ps zM!k;35Ra)(Es$t|#1ow2sRa^`bbc+GSQIUVI93aqSY6=KE+MnXqD2-pAd7|Ahts$v zEFyUj(IR+zG~Zx+5eQyIwI7RqBN09sP`AR)68I@MH|zTae8Bilx~Bf z1i$?Ohct*8ViAsFmNcK%0c!H+>*^aGj4E65wpU{UAf_NaoOPc1F*zVi0|KQr{xcS| z-Lf7!$&_&D7hzwhA&Ejt9>ib*pZtjUQjFK zz3=Z}%t+ITLHxWXnj)cQc9Dl?#DlXajuhjw(}GaU6xtTRbQMw*!L#=zh9fa&ahv4C zaXdBlxm3gO0l^3dT+zZU4=Icq5o7RBexbQRTIe;QT+PjhgJT9$e$(MC%h=~L;ezb1 zQ7&}h;}H2pZ?fN$u?6$fvHhFG4@v#ngMNwd;u%VZe){O4d($04l+N?;B+5NQs5mgJ zJ_HysONTS;zIFIze<2KJg+f;TFXF({zY{sKJ7rtALGL`usiOH<*{us9&@H2jYaBXD z8W9I3V&394y>QuO5kb0LO)dNWVvZ*G+UF z^%-@=9~saY!;5BX?2sCar0hrN!b>Kd@nk<S1DeLS>NF&SwR?qT zag@yEOU8(>;v5mK!ythy@D=cUq3!$zeehX?eSp~#%L%7K21(s82F3EgAIcR55TH5anFML$9R`zU5MS%lE2kn&BtB%7qhrha(eI z?L>u`B?Wo*80xw>XuiW7f3Bq$;7_~vK0r5{p!M{;ZqlLBUD$?wC2E%F{TD~mv6li{(FV{F)s)IwR_b)*f zEZ=khNk2K=6}jYrIt0CTDZ9S{zKn>9$)h(nH*c!Y0a!~qX)^Xa#6L*TSH9{L<_ugT z_(d zxMs7#WQ4E;a|(x!gI;N%{{9CL5|JO#;O@m0x_j|s&cr|b2>vB-wPH$|iY}Kp3a$mz zS$sU51IDK^?n~@Wf^}{Gf(XFH*a%At0$ty*CttQ($sff3{#63fAcc!Ch}T7=hwRLrN=E*Y(&+_(*z=cZN~5 zD$T7X;WpfQs+_K|Gej+0i&2Bry3@&^evn%3eP1vXS#l7Bern`=h#{bmG~{r4xk$QDJGlmz(59^HR!vN;8CLI8qd% zKe|U1A?$D3EI%v$QP^O*8NZ&peSVhQ3lpa<@dOdSvB&}vmbi9ih{~w1Foj8Mi&Zvx zVUdAuLqCw)J3jwfR+(o#;Bo|ZNYJad>$SIe#f{Ue|5&>?BCo1kv)_}YBsMUT6K&Hq z%K8nDU{~Nel%bONMNE5lMCRTM`5f1$jI%dkB{VOgES@Fa_>&tDbNnAJWq|L*lr7VK zM5!X!6*MCFvQ~0~7?i;mQ+7A#R~S$C14G#u#K*GWIp$)X7IKM)IFYQ~L?Kzk9uAYs zk}6VpWBGXbfKNe`i=(%rsH7?_BqF^nVa~7FX61&_!|-SC5pN(56^i;MH|=rQ3gMxa zNNH+d{!vL4RxbaOdu{2S%bzXUHhF5}ick6Dc`YHSNr9?NmpQ#00;B6uC#J zQI&y})E-dpz6u_A(|oReGJCok5OENblMhIA?$P4wY0DWD%nK7G;EbfIK3P^21ov=U zAst(F_`cCqdg`*p1oI3DFKn`WDx4<17iOFog`_N(i(?)Ycu9xC#QV_IB2FAR%XfkA z($i9iV|PUv==G2+D4cX&r^^ptVS)AVaQ^aql9o4U$d83zCTb=(kbIj{&jYFF6CQFc zBfR8SRR3c1NM_3*xUa*53+vUDukCaOoeC_td`(6qYZc%8OY#F=Wg`ffXVD0#MsCIf zGz$Xn2EBX#5oLFi6`R;`_$1$?krFD-BbMmex5*;EEAg< z5e57a&|3zINwl=S5+1@Ubj>xg^cPY!OMM6085fE03B8@><$TBwgLMA#{^R>^@6&GI z8}ush+}{hgCO?F$D4((KPVc_Fe_Onh{3qP!ZIrf_${k2wQ_4SgyS`sQ;V!#P|8@&{ zf!!>Em)jfm<_5jO>3;D?@J-70@CN->?BiOK5HKK=d`*N@&XPFyEJYaCA@v=)#vXdj zdxV0J*Y`q39y<=C8Q)~d9eiAPc=0DIO-mOPxAr3b$ zVX=R|^K(DsM&9&`bd$0lmVELK)|(Lk=1ps1LqMQX&Kp-0jzmjx=O@}I^&ap1UjiqF z(U7vy*M|pImQAH~eYf0&zs76Ie;5d+%7~fw>1o-XEp<2~ub+fKUc-0{=|5+NBo z6rd(ZJDOed-EXb601%`okxCq!a`ewk$KqoVSTC%{Z#|15hNk*;slvijHqttx15|*L zhk@D&;%zy#VT>L~v<0zT1}_@fRRG9FKEInGj-1Mq`kweZmU za{Fb6z5M4(5c-$hm(=rz4>c)INJk45`Fh0a2eD1j9d+5u-=;v+%MQcGji+4|{Ij>a zx6S*5mmN3~i!Y?3KnGz^$wz@+ZvOpr`~TzH|JvC;`N!Y4{eSuYms_4H z=OD84ch_(VjWiw>Cy5x!FBFV=_0kb(Pw?G=9>1~#Z#5NST=SWrsSkwF{ABMVb@FdS zrV%4KU}KSt?5-5K$8c22S-i)>RH-a?O#`J%G%3bd)aF*d+lX^lQlg! zUVGV#wd~s0Ui;cVs;_-;vI4%g_vLDRZs_J|q00?uh>s9F7vD2@?iTmaeEpN-{l>n2 ziL_R``c=%Z_Vm}D{@T-Dd-~sG%TG>@*Pi|&CA)U?*N*-V>ge}&c8*rT(I-c)+Rt}J z$F#LDCMU2Ci0?fcOHgxIwV;j)fYu z&y2P<7Mv+OnJf|m86h;kz(O(rT+LL;BeHN`Y@%a1Ku|vJ@U>W@q$j}8A0e#y zwDOk76hH?X95(U=e6&->?#}MwQ$__%D^RK9seWNu!u{b2SZS$Z$;aZ;S+{JK@BnQZ z$4U6IcSB6bb5GK|3JPY4AAh%&OpUw)e@RRoAWseu7pJeYRMFMQ8|xl( ze9kJ46tMsoz4F$wWP?$TfTllWdh6RXN<28jg@NevB;nH%%dS#YM=pyf3dC}YMbJV) zpcwp_$vYkkmCiPS29mnXUIPH?&sOQ?p&#tFkpRg|5UKIhOC-<7tfJ_a`V!=jMPd@` z=@<`0ema^(s=SjNnwib3yI#lr2fE$lrHU`9P#A*9{|@L@HyfxWZZ<4s4o3A8pU7XK zE8P72_nQrP-p$58;K8o<82^6P!@qjD{+a##W+R~TX5$~9I>o?ONE$W_%n-)zz4QlB zvV|H0hc|7rd~;?OUJl(_nNS@9Oe{4|;yT!F5nN1L&V71$VF41r`?ig_-+OD|@9o{1 zzQ`N&gBy|R=KFOX3X_|1mLgm!Tr;)-$r%yikQ#c;DN zaA0+AHc*CP{gV=b?XX3=yA2v8a~1d8yHpzMeUH<4Z9&T$Yk!PFVTaROfIoNlcU;`x zYH}QXlio@->TcBHt2;2s6!1X_uf-GC$sKp>r!p>3Np8Lky1GdpUBqNJ9uVC<*?3(B zbNL_wVFr2vR>m#~`hg0lX6Cb;kb5@CCAFaJf>VjjThJk7>QR30Z?y@~FkO3F5ShVH z1n4(~xFR58Lw2*V<7BOOv+);(0Gt@&BiM7{LFR+8eE`cav!6G>GB@gm*gp>_8u;Pw zHwu6IET-_!kctlcot#*D$j!z(on9#W3+V>?45SwS+`HMhQUAD6|91b2W7DNFDfG7D zM{v@KsK?#ng$KBWYgb-3QguSz$waF$>LXgdNundSf+ofGZdk`hTE+rF6)QP!8HsBA z#S>j#&oGGo^~jeb9EVWq#r(ckrO5*ty_ z&9`cLdP8<-hfzD+X%rYM>hA{}?HBIuirP2Y3;FC0b1jx%N&Gkb=<!v~*1*VE)J!T$4+vL(B(Lh*@A#M{E;uwm3WYzWJ4oV;nqyMFW>Qx=i$!>HCR| ztl;Ce{3w&zPwujhMuZ-KSNQJq85(b#7nN>H)$yIIki&osr@?7M;1ZNHk-N7K!=}^J zb-p|Q<9q4N_eG{!pfrOliPwz9ZgiY-k2Ps_z8JI^eQ_dP?WOQ!Q`5Hy18+K-^IPU<~eQtxpgJ$gHPy~a7c6@~Oz zXY`&&Mz6QiAa1&%8NHy%`gtexD&=yW&s*p7*7>}3K5sSidA%kx(%1RCdCGsC&ReJR z*6F-;I&YoMYh608w{v{5PUk&@ky~f;*4eyuHg7evdA*&Jqjfg#n^oXCnfIhj+}qiI zcFDZ&7ByWump2b2Q>2L;TzD|j-*=xdkC&y|40sF*{cd-Lw0iLS(hWZ9<0plK#dmxX zPjeGT!1rUkza|+ryIzl!3ES)K93ITige{<}9ci$|o7(_qIoN5%$CV@CM-oD^rG0!l zownE8IqE$Df^Mg!du$q=E&|*72h0}Flo4r%{Wl<3V|WW6i?GcOTHVELN1SGx;}vF+ zbv3~u1ATg2&uyUwIwE}MF@kIZX10oW60tmvP&)g2!pi6TGoa0UYrV#kPV6VHF2;A1|K0ab!gc-S9>hA^N$K)i>@ zA$X~3Ahw#=Q@gN_R#S4kb5dhT%M`WOh61H8kky)M)r&OPD%?$o2A^q_a;Ze(oW`4t z4korzktiP1zvwVc|9z<=cO@rez5xM3{sbSi$XCV;_rVNCmu z%NR774O!9?hJvSABDO~`%;v9`r~V1QSrrKpBn7uc3rvA~2Rsq~TMr%Y+xa4GI2|1y z)R#IU7d&520y%w9=90!v@T|Y(j)Fb4R z=fgQWGy2g=1^%~lT2?@Ug|#Tl*ei}%M;1IZ2+=C=*6l1TD%QY(QUg7nXoY1qNv0HX ze3nAo8$&wpkDrh_Rqh;;^RZw%%d-7GDP<^R{^HN7gNtg|olO2boaG-gtacza%G(dp%Jn?Yi;vAP1l@i*( z#>UMiC_>(`OjBipK9?D#AO;JP}OVPEeo zxy)&$vs7T@G~vo{jPaZ8Nupt*rHBI7ZV4Cf9oBL&?%TuhFr402l!KFHJ^$n>9R6n9 zx>BxvD@0{~uW^>}0mWr0pSxkm(Z-nO1RFmfhqNx-NMtn(IMT(1JX~lGI?kB5e?l70 z{v}Ig>?Yh&Aify?ZW31XOZa#xy54S0U~!hF_J$UT)&{}Fax^U%i5u1zx?_wDxP8pG zxC1o`mIF?S1AZrup$*B6z1<%@^kzB13TLo!jXlXTGJo-u>dCOy3X@w`B|B{YHM5{a zHk+lyhj0T0Y3X(Sh_@Et+QUdJ}5TDT9tAEH=H^{6K8B)oi9n1DfD^9P-Bql8b`fE>LYpTz5V^; zu`^4r*DgLY3h%ob$lMKIiT^E#@4mm@7G%i^#yAiLtP@PQxr8X)l65;)*-Y}^m-#W|_) zWGIfwY;Ol$2R}ic)Amm;@Oe+G_tWNDbwUjtxQ2QNupdK_z+XO9(#ZP%I}&(9DBBtsY?oG5KE!bGnA~xTIEXonaN~fMb269++yp# zhWx@fQ*r<$Kfb*csA&b?9_-ZD`xaJhIoHN6{Mnp!UnSnDulEjk28(_3nzdmD)%$;D zJVx`;VGu>{FgfNUVby4%>lYfw1i~}~m)vYrRghb)O`-L|L#nRU$%rd^K<+Zf*^6}e zhtd;fysLJw@&5jgRJPufXQ77GQvbhsAfL3!%x#WN$KeKmQi4Okndv%^nuQJ6p zEe9CeE=p)H4o(G{DtT>>}75WB>6V zZmnS1VEGma>UD6ZNqHK!jDoxAUIQ(m;a9doeh(Xj_(Ep>vBcPV+)KiFz2P!m)Vv;I z6jfduFxQ)qf`W&WDUi&OlK&DB6G@^ILnUTKDHAH1XbF;>2zJX=1jUrw`C%r9Cb}3Y zkT{)KqFUi3)dz)&d-TKN5zX)}YPmD5sDG%r8TyR?KmCntC}Svp^py=*TZpv;JWd3U zK<`606E+C@LS2h|HiM`^{!+2Uyvt6NZR2-m(h~JKo*f3c9l+KHbk-2rk&XEmInJ;b z>u}$}mgWzz43Fq51b@jLSOd1`>yaFQ4UYSE%ViO1L6Tz%~Jf4?`)iI7lFT z&o(@yATa*{vfi;~JIqp5UQ8;2sH7J`0XP0J@|Jvd4HoFP-%2ZjC{>OLg6%`58$)AX zAH&$T5jOyuD?oVUX15)Btik-gvb?sYWxcpXKVdtP-l98Erz=Uv)Tab&b zIuY9Y>>>PO_)dsOL^m7gE8vem&(?F<-~ytae0~%etVb7zS`M2DD1J8xFOC?08bXydof0$0 zv3De08s9ddLV7Fz9lH|z8LOfh0ZK9ayQt^PW$XJQy@vu3$^-4?^oPgC1)mkx#1_^p z=*^6_g$HKimJnqfMy{#p#-OX=v$baF}=Z!tYmp{Ek28d&- z1fb-b{i}roAdQ>D1!6EVmV;bB`l9B#j)2q43nI`p82AzdQ|hwpi&!J1ZX1Aj4v(9( zeEY?JT0iASZP;2M6iau524dmb2fw>uge{IvGzz_otrd<2kTKyVti_{E;-Tl9Vg9|a z@Z-A)LeVk7m}CBzV(51!tg+3`u3n#hc->(iFVFG+&tJcN4gY`k{@uIRXCL5X@DtVD zLjKGF#p$BY1H}xs?I(X(feKE&2t115V_G4C4Uj=+-JG=qwm|}u(5Y_TYv=k6peAN4 zxMR#bJ!vf%_6#(by@s!M{q>e7AP$!bU(Jqn4D=e;AW;Q=@uZTlf7lo@krsR{3~dyK z=7JE^_WjIW0&3JtD-Vc5Mt^!0>(NUuCIXseSP&sa3<=FDxWP>IhBujvFI}Y3Oq)-Y6GC9_@HiyoSFCf(#86B(nkajNPTak z(p0hy&j7$No3g(y=nMNiVK1d~giIj44GBkgWgc{whTgew_8mT}7-kQi?}%@O@;Iz- zh#)3?w0wANTzz3Mx4o-}})TF2m9E*k4d{Pz`+<8>r{#f4-YkADX7_>%_X6W8(hR?Fc!D*ur3&|oa$ zIx4>^BC(FmuVeG87n?uXJ6Ol&S6ct9BlPPC{nM(D2J;wKBtq|luFWI$zW`2F`vUa{ z-?j2_dRp8^3)7z*^_CCQmuPHtlzt&stb_F5O+y|Xt%LOKcCug#Nim#5zE~4$!Y$fc|Kw2@uRWK;K^VvyRWN zI-&XVdWC`ysS3)y>mbsTiB0c;kt9zI^9dpl^`$Km-;F zd~n^j$^EyAe69r%^}kN)Q$1JYtEJr=RT`H9u-FbVwk?P8gX6>cM0cv&stJThp2n$N z2-j`m!v?SZN+;INzWAO_Y`8v;=fxf$H}hgEscX9%8xZ{h zn5FGD&INH7m^ZqlJ(dl_D0Q|CFDh6!9|Ol35BYo(HzS7+a72!mxi;IllX@G6%=cqi zxlX&)!TMO+f@3ZHsjLIWJQ7v`NKgkhTi$j(&;*<0M?Cm0=kCsUiF5s3R9tOzbc-5w zj)(gm)6pUU3AIYZjqw?hI8&n8I-pIwTzGHMy%jXB37?U>w)z!0&W$}&{Gdm2N%wa4 zc6OV&q(!pY?u!DoFXZHxSPwogQ!-rC?{@gLV#*DPwF3|FAC_+hT(Q1bq>C*bED}Sh zgt6mqDCZg+iY_kkvKFXUV2k?VM7O*TH)Ql;cEj53;~<;O&YEsMEzWbBov9AP*i;0C zamCr<%!n~psT`QUfUDpf52*4(FQ)?&<>+GaY4U8ZE4d5K$#m8>8W`MrCxXrDHx7#J z{#M7rKfHJ_2QRGfU{#zd9{3RbpfJZD*x7p!rF&^a`2+AB%RX*_5YAle-xfTb+{#kj zQfo#4@9pgMj@F~kzfw#CHf@7|Vx6rO%~{_3-U9lrTB6=H6wpTRAT#&UFnzD`Ph5Ox zDXOUQ8r!prB?4El6;jz?PFu)*k1LPMod|Mwdj3%WjxMb{3KY&%|8C;M!-=}!#KRwE zocLgtZv+1wsCYF0eb*;|>-_fuS*`cqb&|diDw;heH`CVn99wd_BNt%74fYN`T;nbP zol|v<`yEv+EN#R#sRnBcucR@Sme#x`?$3AtxKqnx=y zrJ{CQ;vT`nQ$5fzJAHRfk8>ktZT_z=*2xlKUuAL`wyznHFlmjkDNmS>Ep4GJzcIeRJ&93E9~;#6S}k`*3!-kg*(BmYK`_ee=WFWruw{zwCf4 zU7vlp+_FyUY(BjueAl2}%q@3|S~jZPytyvw({^es;OAyN8|6Ek?lqy-9N1Cz!*X53 z629uAc5oaY>^CgpZDAKj&7OW`bOAce5zixuvZj|VF2u*n233hq8(3d z)w_2U-o5{jH|1m9P}9IkmwBXsFc465G@`svWa*H?O!OkvPFutC3Y+R0S8T^_8+ulb z4-R`@A7^;3u|1SNfgIad@ZOh;JA>LYIs@iCpyA7;50~N1#71lr)BhAR_PHG&HFL@S zJh{KsfeNN334f6bBIAQZ8+t zQ6D;m+LB-*7|D7M&9ZwtD;ughtDbeC6KWu9G@IN0S+HsUV9jBE6<~X&A6} z%#@BqW2F_k4^ODIA}uIxL7`l5p}vpOT9o)#6-ue-Uag8&I;bzZbRy7BwNzOU|NQk5 zDT5Ew$r2Dngatx7M|}VHn+>~uHyi)xz&~H-|I$g}cR&mAzs`vz29X(QLw#19Sf3jR z##_vuFVMrT2=T}X4jf1V5&BDh*g@H~g_zL0ZZ9*$PE_G#Og6U4b~pqNpDrRy6FOtq zr)}Qf3aa`^km&SQOv9%;dhFx3<~-kChAT1E8N25SgZB3c0G4?ww=qCU+ttAfF?1xp zOn@BdsHa79*Wi}2zXyxW{?TP`~*;ra~zUt_TNAde7om5_K$D! z9>Y&6qBwySOY!gCG87F>B4Wza=$0H3j~g5kbEU9GHkb)8&OtXAn%{Mtjm0(kNi6_^ zd2?MLsICb1-J5H6hc|ctHIq#!QF5t*VZDgk2PJ>}4wA9aQxOr;Dcow03nHU!7krne+y zaI6W!WEXyecSad_d33U_@y$Xa9?LO1Iy_o{0$52=yS%c1#21r93`LTN=sW}MeeIY3 zVx+YH^Xo5Skl_JqnY=RYtaGx)+Ccr5eVd-< z^CWQo*s&04A+Q^A51}TH@i?&QQLEw4!lWJd`^G0z%(x(AV8;_<(CRcCl^z!Z7$e&`Bc9 zL=%`a{_;Af?l1nPO|z9R=dB#wy4BTTIP^mO!gIf*3cphx_ozxWM0G@&1JXl7%@4@3+0ZDs!bkd;2 zX*tPjO-TFF5uTI$K_uhn6w$6!mGd;lH)_g@VNp~HiffLnuz}!4IKND!ko_`x4Du*d z$|58MvvR`G!!|{C)MZgdXd8-UlZdBci|TF6)Bx52h#uy>rW9>XC@Xa*RGRTPo-%PK z2R=1L1>lgE2Ps{oOup(HDf5{6@5@y*L~lBt3e-)u(%va1h~8VhO0=~>DI7O(Oqb%Z zhpWs5PXFd6o*9?0?7p69HI$>)1TV`J)kQB~f8hhjf`A1wS)bT+Q+$C80vcwKa-ew2 zw_qr(wv~)+S^zNRv72L(hymtsDL2vU?(S~P_nbo-gM`S)Yoor zzg~Ui3-NH8$*;nEaa~?b%|55Bs=P96g_@dG&2v9XA}WtCJstsc3VS4F-DK zAPqFf>BRAr9ZyLE@}O%k3^ZUdx~+CCK7&{ho)a?Tg2&B&)UQ~S^>*&fxBL#%BT|iG zp9tyL9yixekH%<{h}2?QDE!MvBsNe&&y#pQiE)UY4QX@)=`2m@ywi8*FozPZ z`Jg8{)}v|oa61DEX8ew=9Whzof!;%XM~RvRhx{x?oDOPsnLX_JRHf3cnWnkZiVN{* zP(}Ou%}(w`s#@!&0+}z$>EOoB>bwJdf#v$N{V(`EgzyLM| z7DrL_WdrN_xMOh-b{AXK7Ei>r&~DaVK?V z;wj4vHSD<#H;fwj^sdXxyfnomuN{gY*!fiPu^jv@>x)>Vl-+WKwPV)p!EwXvVJY?d zFr^I*@`jzZaH9BY5?+>G!(5y)H9C zmj?iyxYfc`NiekVGYI>eoUEB9g~_$F2#3chK~fCA1-YflJZn9bDO(qhJkZqK|KjnbIz9>!JZI_NR4nJi|9$mh%vHwYZTQDF zkH%6-%teqL9Jro zOFyydb%ha&(d3+$bV4*JW4 zp>YoAseK08c^jCki|kc>&SRCm_6|-KmF_Pjtrao9X6(@br6fEb1CWSqX8m~emLaf+ zFL}ldZ$n9I@1Q|f{49vbb9BQRa>1QQ`i;5ZcaiiR7kG^6zkc{|$>1@qV1UC0HO=_V zEkfL%uf69OA;QkODz4Qd8=+yW@2ziA;;w+Yy2_7JR(W5JcIuQ1w2VW1#0_xn>-3gw z@~t8s>R7-u6f71LN#7KD%iV+EDVzPdH>#YTk5_LiAJN^YwWqK zk}A8&2Lqj8qa9gLnc(Lj

    Xt=q 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

    &s?K0fg>1-kBDz$-Z&;!R0gCQ&3 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

    QB|~*0&neS4=%~avnCGFCx$JkU32z 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

    c1yP7ilBE9=?b)QZ*GW#XDpbY6|=0H_r&O<%TC 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�rac$ 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 $YMo*2U1#Pg7FMB6 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 AU;qFB diff --git a/pods/imports/k8s/main.go b/pods/imports/k8s/main.go deleted file mode 100644 index d4c17cfff..000000000 --- a/pods/imports/k8s/main.go +++ /dev/null @@ -1,5314 +0,0 @@ -// k8s -package k8s - -import ( - "reflect" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" -) - -func init() { - _jsii_.RegisterStruct( - "k8s.Affinity", - reflect.TypeOf((*Affinity)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AggregationRule", - reflect.TypeOf((*AggregationRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ApiServiceSpec", - reflect.TypeOf((*ApiServiceSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AppArmorProfile", - reflect.TypeOf((*AppArmorProfile)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AuditAnnotation", - reflect.TypeOf((*AuditAnnotation)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AuditAnnotationV1Alpha1", - reflect.TypeOf((*AuditAnnotationV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AuditAnnotationV1Beta1", - reflect.TypeOf((*AuditAnnotationV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AwsElasticBlockStoreVolumeSource", - reflect.TypeOf((*AwsElasticBlockStoreVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AzureDiskVolumeSource", - reflect.TypeOf((*AzureDiskVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AzureFilePersistentVolumeSource", - reflect.TypeOf((*AzureFilePersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.AzureFileVolumeSource", - reflect.TypeOf((*AzureFileVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.BasicDeviceV1Alpha3", - reflect.TypeOf((*BasicDeviceV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.BoundObjectReference", - reflect.TypeOf((*BoundObjectReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Capabilities", - reflect.TypeOf((*Capabilities)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CelDeviceSelectorV1Alpha3", - reflect.TypeOf((*CelDeviceSelectorV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CephFsPersistentVolumeSource", - reflect.TypeOf((*CephFsPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CephFsVolumeSource", - reflect.TypeOf((*CephFsVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CertificateSigningRequestSpec", - reflect.TypeOf((*CertificateSigningRequestSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CinderPersistentVolumeSource", - reflect.TypeOf((*CinderPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CinderVolumeSource", - reflect.TypeOf((*CinderVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ClientIpConfig", - reflect.TypeOf((*ClientIpConfig)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ClusterTrustBundleProjection", - reflect.TypeOf((*ClusterTrustBundleProjection)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ClusterTrustBundleSpecV1Alpha1", - reflect.TypeOf((*ClusterTrustBundleSpecV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ComponentCondition", - reflect.TypeOf((*ComponentCondition)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ConfigMapEnvSource", - reflect.TypeOf((*ConfigMapEnvSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ConfigMapKeySelector", - reflect.TypeOf((*ConfigMapKeySelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ConfigMapNodeConfigSource", - reflect.TypeOf((*ConfigMapNodeConfigSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ConfigMapProjection", - reflect.TypeOf((*ConfigMapProjection)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ConfigMapVolumeSource", - reflect.TypeOf((*ConfigMapVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Container", - reflect.TypeOf((*Container)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ContainerPort", - reflect.TypeOf((*ContainerPort)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ContainerResizePolicy", - reflect.TypeOf((*ContainerResizePolicy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ContainerResourceMetricSourceV2", - reflect.TypeOf((*ContainerResourceMetricSourceV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CronJobSpec", - reflect.TypeOf((*CronJobSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CrossVersionObjectReference", - reflect.TypeOf((*CrossVersionObjectReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CrossVersionObjectReferenceV2", - reflect.TypeOf((*CrossVersionObjectReferenceV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CsiDriverSpec", - reflect.TypeOf((*CsiDriverSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CsiNodeDriver", - reflect.TypeOf((*CsiNodeDriver)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CsiNodeSpec", - reflect.TypeOf((*CsiNodeSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CsiPersistentVolumeSource", - reflect.TypeOf((*CsiPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CsiVolumeSource", - reflect.TypeOf((*CsiVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceColumnDefinition", - reflect.TypeOf((*CustomResourceColumnDefinition)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceConversion", - reflect.TypeOf((*CustomResourceConversion)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceDefinitionNames", - reflect.TypeOf((*CustomResourceDefinitionNames)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceDefinitionSpec", - reflect.TypeOf((*CustomResourceDefinitionSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceDefinitionVersion", - reflect.TypeOf((*CustomResourceDefinitionVersion)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceSubresourceScale", - reflect.TypeOf((*CustomResourceSubresourceScale)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceSubresources", - reflect.TypeOf((*CustomResourceSubresources)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.CustomResourceValidation", - reflect.TypeOf((*CustomResourceValidation)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DaemonSetSpec", - reflect.TypeOf((*DaemonSetSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DaemonSetUpdateStrategy", - reflect.TypeOf((*DaemonSetUpdateStrategy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeleteOptions", - reflect.TypeOf((*DeleteOptions)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeploymentSpec", - reflect.TypeOf((*DeploymentSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeploymentStrategy", - reflect.TypeOf((*DeploymentStrategy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceAttributeV1Alpha3", - reflect.TypeOf((*DeviceAttributeV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceClaimConfigurationV1Alpha3", - reflect.TypeOf((*DeviceClaimConfigurationV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceClaimV1Alpha3", - reflect.TypeOf((*DeviceClaimV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceClassConfigurationV1Alpha3", - reflect.TypeOf((*DeviceClassConfigurationV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceClassSpecV1Alpha3", - reflect.TypeOf((*DeviceClassSpecV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceConstraintV1Alpha3", - reflect.TypeOf((*DeviceConstraintV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceRequestV1Alpha3", - reflect.TypeOf((*DeviceRequestV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceSelectorV1Alpha3", - reflect.TypeOf((*DeviceSelectorV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DeviceV1Alpha3", - reflect.TypeOf((*DeviceV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DownwardApiProjection", - reflect.TypeOf((*DownwardApiProjection)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DownwardApiVolumeFile", - reflect.TypeOf((*DownwardApiVolumeFile)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.DownwardApiVolumeSource", - reflect.TypeOf((*DownwardApiVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EmptyDirVolumeSource", - reflect.TypeOf((*EmptyDirVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Endpoint", - reflect.TypeOf((*Endpoint)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EndpointAddress", - reflect.TypeOf((*EndpointAddress)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EndpointConditions", - reflect.TypeOf((*EndpointConditions)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EndpointHints", - reflect.TypeOf((*EndpointHints)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EndpointPort", - reflect.TypeOf((*EndpointPort)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EndpointSubset", - reflect.TypeOf((*EndpointSubset)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EnvFromSource", - reflect.TypeOf((*EnvFromSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EnvVar", - reflect.TypeOf((*EnvVar)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EnvVarSource", - reflect.TypeOf((*EnvVarSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EphemeralContainer", - reflect.TypeOf((*EphemeralContainer)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EphemeralVolumeSource", - reflect.TypeOf((*EphemeralVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EventSeries", - reflect.TypeOf((*EventSeries)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.EventSource", - reflect.TypeOf((*EventSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ExecAction", - reflect.TypeOf((*ExecAction)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ExemptPriorityLevelConfiguration", - reflect.TypeOf((*ExemptPriorityLevelConfiguration)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ExemptPriorityLevelConfigurationV1Beta3", - reflect.TypeOf((*ExemptPriorityLevelConfigurationV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ExternalDocumentation", - reflect.TypeOf((*ExternalDocumentation)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ExternalMetricSourceV2", - reflect.TypeOf((*ExternalMetricSourceV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FcVolumeSource", - reflect.TypeOf((*FcVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FieldSelectorAttributes", - reflect.TypeOf((*FieldSelectorAttributes)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FieldSelectorRequirement", - reflect.TypeOf((*FieldSelectorRequirement)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlexPersistentVolumeSource", - reflect.TypeOf((*FlexPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlexVolumeSource", - reflect.TypeOf((*FlexVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlockerVolumeSource", - reflect.TypeOf((*FlockerVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlowDistinguisherMethod", - reflect.TypeOf((*FlowDistinguisherMethod)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlowDistinguisherMethodV1Beta3", - reflect.TypeOf((*FlowDistinguisherMethodV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlowSchemaSpec", - reflect.TypeOf((*FlowSchemaSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.FlowSchemaSpecV1Beta3", - reflect.TypeOf((*FlowSchemaSpecV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ForZone", - reflect.TypeOf((*ForZone)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GcePersistentDiskVolumeSource", - reflect.TypeOf((*GcePersistentDiskVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GitRepoVolumeSource", - reflect.TypeOf((*GitRepoVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GlusterfsPersistentVolumeSource", - reflect.TypeOf((*GlusterfsPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GlusterfsVolumeSource", - reflect.TypeOf((*GlusterfsVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GroupSubjectV1Beta3", - reflect.TypeOf((*GroupSubjectV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GroupVersionResourceV1Alpha1", - reflect.TypeOf((*GroupVersionResourceV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.GrpcAction", - reflect.TypeOf((*GrpcAction)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HorizontalPodAutoscalerBehaviorV2", - reflect.TypeOf((*HorizontalPodAutoscalerBehaviorV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HorizontalPodAutoscalerSpec", - reflect.TypeOf((*HorizontalPodAutoscalerSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HorizontalPodAutoscalerSpecV2", - reflect.TypeOf((*HorizontalPodAutoscalerSpecV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HostAlias", - reflect.TypeOf((*HostAlias)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HostPathVolumeSource", - reflect.TypeOf((*HostPathVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HpaScalingPolicyV2", - reflect.TypeOf((*HpaScalingPolicyV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HpaScalingRulesV2", - reflect.TypeOf((*HpaScalingRulesV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HttpGetAction", - reflect.TypeOf((*HttpGetAction)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HttpHeader", - reflect.TypeOf((*HttpHeader)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HttpIngressPath", - reflect.TypeOf((*HttpIngressPath)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.HttpIngressRuleValue", - reflect.TypeOf((*HttpIngressRuleValue)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ImageVolumeSource", - reflect.TypeOf((*ImageVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressBackend", - reflect.TypeOf((*IngressBackend)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressClassParametersReference", - reflect.TypeOf((*IngressClassParametersReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressClassSpec", - reflect.TypeOf((*IngressClassSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressRule", - reflect.TypeOf((*IngressRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressServiceBackend", - reflect.TypeOf((*IngressServiceBackend)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressSpec", - reflect.TypeOf((*IngressSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IngressTls", - reflect.TypeOf((*IngressTls)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.IntOrString", - reflect.TypeOf((*IntOrString)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberProperty{JsiiProperty: "value", GoGetter: "Value"}, - }, - func() interface{} { - return &jsiiProxy_IntOrString{} - }, - ) - _jsii_.RegisterEnum( - "k8s.IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind", - reflect.TypeOf((*IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind)(nil)).Elem(), - map[string]interface{}{ - "DELETE_OPTIONS": IoK8SApimachineryPkgApisMetaV1DeleteOptionsKind_DELETE_OPTIONS, - }, - ) - _jsii_.RegisterStruct( - "k8s.IpAddressSpecV1Beta1", - reflect.TypeOf((*IpAddressSpecV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IpBlock", - reflect.TypeOf((*IpBlock)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IscsiPersistentVolumeSource", - reflect.TypeOf((*IscsiPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.IscsiVolumeSource", - reflect.TypeOf((*IscsiVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.JobSpec", - reflect.TypeOf((*JobSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.JobTemplateSpec", - reflect.TypeOf((*JobTemplateSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.JsonSchemaProps", - reflect.TypeOf((*JsonSchemaProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KeyToPath", - reflect.TypeOf((*KeyToPath)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeApiService", - reflect.TypeOf((*KubeApiService)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeApiService{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeApiServiceList", - reflect.TypeOf((*KubeApiServiceList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeApiServiceList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeApiServiceListProps", - reflect.TypeOf((*KubeApiServiceListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeApiServiceProps", - reflect.TypeOf((*KubeApiServiceProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeBinding", - reflect.TypeOf((*KubeBinding)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeBinding{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeBindingProps", - reflect.TypeOf((*KubeBindingProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeCertificateSigningRequest", - reflect.TypeOf((*KubeCertificateSigningRequest)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCertificateSigningRequest{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeCertificateSigningRequestList", - reflect.TypeOf((*KubeCertificateSigningRequestList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCertificateSigningRequestList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeCertificateSigningRequestListProps", - reflect.TypeOf((*KubeCertificateSigningRequestListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeCertificateSigningRequestProps", - reflect.TypeOf((*KubeCertificateSigningRequestProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeClusterRole", - reflect.TypeOf((*KubeClusterRole)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeClusterRole{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeClusterRoleBinding", - reflect.TypeOf((*KubeClusterRoleBinding)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeClusterRoleBinding{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeClusterRoleBindingList", - reflect.TypeOf((*KubeClusterRoleBindingList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeClusterRoleBindingList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeClusterRoleBindingListProps", - reflect.TypeOf((*KubeClusterRoleBindingListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeClusterRoleBindingProps", - reflect.TypeOf((*KubeClusterRoleBindingProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeClusterRoleList", - reflect.TypeOf((*KubeClusterRoleList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeClusterRoleList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeClusterRoleListProps", - reflect.TypeOf((*KubeClusterRoleListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeClusterRoleProps", - reflect.TypeOf((*KubeClusterRoleProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeClusterTrustBundleListV1Alpha1", - reflect.TypeOf((*KubeClusterTrustBundleListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeClusterTrustBundleListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeClusterTrustBundleListV1Alpha1Props", - reflect.TypeOf((*KubeClusterTrustBundleListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeClusterTrustBundleV1Alpha1", - reflect.TypeOf((*KubeClusterTrustBundleV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeClusterTrustBundleV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeClusterTrustBundleV1Alpha1Props", - reflect.TypeOf((*KubeClusterTrustBundleV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeComponentStatus", - reflect.TypeOf((*KubeComponentStatus)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeComponentStatus{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeComponentStatusList", - reflect.TypeOf((*KubeComponentStatusList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeComponentStatusList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeComponentStatusListProps", - reflect.TypeOf((*KubeComponentStatusListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeComponentStatusProps", - reflect.TypeOf((*KubeComponentStatusProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeConfigMap", - reflect.TypeOf((*KubeConfigMap)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeConfigMap{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeConfigMapList", - reflect.TypeOf((*KubeConfigMapList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeConfigMapList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeConfigMapListProps", - reflect.TypeOf((*KubeConfigMapListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeConfigMapProps", - reflect.TypeOf((*KubeConfigMapProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeControllerRevision", - reflect.TypeOf((*KubeControllerRevision)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeControllerRevision{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeControllerRevisionList", - reflect.TypeOf((*KubeControllerRevisionList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeControllerRevisionList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeControllerRevisionListProps", - reflect.TypeOf((*KubeControllerRevisionListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeControllerRevisionProps", - reflect.TypeOf((*KubeControllerRevisionProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeCronJob", - reflect.TypeOf((*KubeCronJob)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCronJob{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeCronJobList", - reflect.TypeOf((*KubeCronJobList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCronJobList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeCronJobListProps", - reflect.TypeOf((*KubeCronJobListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeCronJobProps", - reflect.TypeOf((*KubeCronJobProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeCsiDriver", - reflect.TypeOf((*KubeCsiDriver)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCsiDriver{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeCsiDriverList", - reflect.TypeOf((*KubeCsiDriverList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCsiDriverList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeCsiDriverListProps", - reflect.TypeOf((*KubeCsiDriverListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeCsiDriverProps", - reflect.TypeOf((*KubeCsiDriverProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeCsiNode", - reflect.TypeOf((*KubeCsiNode)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCsiNode{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeCsiNodeList", - reflect.TypeOf((*KubeCsiNodeList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCsiNodeList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeCsiNodeListProps", - reflect.TypeOf((*KubeCsiNodeListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeCsiNodeProps", - reflect.TypeOf((*KubeCsiNodeProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeCsiStorageCapacity", - reflect.TypeOf((*KubeCsiStorageCapacity)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCsiStorageCapacity{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeCsiStorageCapacityList", - reflect.TypeOf((*KubeCsiStorageCapacityList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCsiStorageCapacityList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeCsiStorageCapacityListProps", - reflect.TypeOf((*KubeCsiStorageCapacityListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeCsiStorageCapacityProps", - reflect.TypeOf((*KubeCsiStorageCapacityProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeCustomResourceDefinition", - reflect.TypeOf((*KubeCustomResourceDefinition)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCustomResourceDefinition{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeCustomResourceDefinitionList", - reflect.TypeOf((*KubeCustomResourceDefinitionList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeCustomResourceDefinitionList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeCustomResourceDefinitionListProps", - reflect.TypeOf((*KubeCustomResourceDefinitionListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeCustomResourceDefinitionProps", - reflect.TypeOf((*KubeCustomResourceDefinitionProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeDaemonSet", - reflect.TypeOf((*KubeDaemonSet)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDaemonSet{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeDaemonSetList", - reflect.TypeOf((*KubeDaemonSetList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDaemonSetList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeDaemonSetListProps", - reflect.TypeOf((*KubeDaemonSetListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeDaemonSetProps", - reflect.TypeOf((*KubeDaemonSetProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeDeployment", - reflect.TypeOf((*KubeDeployment)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDeployment{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeDeploymentList", - reflect.TypeOf((*KubeDeploymentList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDeploymentList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeDeploymentListProps", - reflect.TypeOf((*KubeDeploymentListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeDeploymentProps", - reflect.TypeOf((*KubeDeploymentProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeDeviceClassListV1Alpha3", - reflect.TypeOf((*KubeDeviceClassListV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDeviceClassListV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeDeviceClassListV1Alpha3Props", - reflect.TypeOf((*KubeDeviceClassListV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeDeviceClassV1Alpha3", - reflect.TypeOf((*KubeDeviceClassV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeDeviceClassV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeDeviceClassV1Alpha3Props", - reflect.TypeOf((*KubeDeviceClassV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeEndpointSlice", - reflect.TypeOf((*KubeEndpointSlice)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEndpointSlice{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeEndpointSliceList", - reflect.TypeOf((*KubeEndpointSliceList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEndpointSliceList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeEndpointSliceListProps", - reflect.TypeOf((*KubeEndpointSliceListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeEndpointSliceProps", - reflect.TypeOf((*KubeEndpointSliceProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeEndpoints", - reflect.TypeOf((*KubeEndpoints)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEndpoints{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeEndpointsList", - reflect.TypeOf((*KubeEndpointsList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEndpointsList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeEndpointsListProps", - reflect.TypeOf((*KubeEndpointsListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeEndpointsProps", - reflect.TypeOf((*KubeEndpointsProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeEvent", - reflect.TypeOf((*KubeEvent)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEvent{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeEventList", - reflect.TypeOf((*KubeEventList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEventList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeEventListProps", - reflect.TypeOf((*KubeEventListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeEventProps", - reflect.TypeOf((*KubeEventProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeEviction", - reflect.TypeOf((*KubeEviction)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeEviction{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeEvictionProps", - reflect.TypeOf((*KubeEvictionProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeFlowSchema", - reflect.TypeOf((*KubeFlowSchema)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeFlowSchema{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeFlowSchemaList", - reflect.TypeOf((*KubeFlowSchemaList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeFlowSchemaList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeFlowSchemaListProps", - reflect.TypeOf((*KubeFlowSchemaListProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeFlowSchemaListV1Beta3", - reflect.TypeOf((*KubeFlowSchemaListV1Beta3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeFlowSchemaListV1Beta3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeFlowSchemaListV1Beta3Props", - reflect.TypeOf((*KubeFlowSchemaListV1Beta3Props)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeFlowSchemaProps", - reflect.TypeOf((*KubeFlowSchemaProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeFlowSchemaV1Beta3", - reflect.TypeOf((*KubeFlowSchemaV1Beta3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeFlowSchemaV1Beta3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeFlowSchemaV1Beta3Props", - reflect.TypeOf((*KubeFlowSchemaV1Beta3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeHorizontalPodAutoscaler", - reflect.TypeOf((*KubeHorizontalPodAutoscaler)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeHorizontalPodAutoscaler{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeHorizontalPodAutoscalerList", - reflect.TypeOf((*KubeHorizontalPodAutoscalerList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeHorizontalPodAutoscalerList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeHorizontalPodAutoscalerListProps", - reflect.TypeOf((*KubeHorizontalPodAutoscalerListProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeHorizontalPodAutoscalerListV2", - reflect.TypeOf((*KubeHorizontalPodAutoscalerListV2)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeHorizontalPodAutoscalerListV2{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeHorizontalPodAutoscalerListV2Props", - reflect.TypeOf((*KubeHorizontalPodAutoscalerListV2Props)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeHorizontalPodAutoscalerProps", - reflect.TypeOf((*KubeHorizontalPodAutoscalerProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeHorizontalPodAutoscalerV2", - reflect.TypeOf((*KubeHorizontalPodAutoscalerV2)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeHorizontalPodAutoscalerV2{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeHorizontalPodAutoscalerV2Props", - reflect.TypeOf((*KubeHorizontalPodAutoscalerV2Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeIngress", - reflect.TypeOf((*KubeIngress)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeIngress{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeIngressClass", - reflect.TypeOf((*KubeIngressClass)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeIngressClass{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeIngressClassList", - reflect.TypeOf((*KubeIngressClassList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeIngressClassList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeIngressClassListProps", - reflect.TypeOf((*KubeIngressClassListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeIngressClassProps", - reflect.TypeOf((*KubeIngressClassProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeIngressList", - reflect.TypeOf((*KubeIngressList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeIngressList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeIngressListProps", - reflect.TypeOf((*KubeIngressListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeIngressProps", - reflect.TypeOf((*KubeIngressProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeIpAddressListV1Beta1", - reflect.TypeOf((*KubeIpAddressListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeIpAddressListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeIpAddressListV1Beta1Props", - reflect.TypeOf((*KubeIpAddressListV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeIpAddressV1Beta1", - reflect.TypeOf((*KubeIpAddressV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeIpAddressV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeIpAddressV1Beta1Props", - reflect.TypeOf((*KubeIpAddressV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeJob", - reflect.TypeOf((*KubeJob)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeJob{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeJobList", - reflect.TypeOf((*KubeJobList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeJobList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeJobListProps", - reflect.TypeOf((*KubeJobListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeJobProps", - reflect.TypeOf((*KubeJobProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeLease", - reflect.TypeOf((*KubeLease)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLease{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeLeaseCandidateListV1Alpha1", - reflect.TypeOf((*KubeLeaseCandidateListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLeaseCandidateListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeLeaseCandidateListV1Alpha1Props", - reflect.TypeOf((*KubeLeaseCandidateListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeLeaseCandidateV1Alpha1", - reflect.TypeOf((*KubeLeaseCandidateV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLeaseCandidateV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeLeaseCandidateV1Alpha1Props", - reflect.TypeOf((*KubeLeaseCandidateV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeLeaseList", - reflect.TypeOf((*KubeLeaseList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLeaseList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeLeaseListProps", - reflect.TypeOf((*KubeLeaseListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeLeaseProps", - reflect.TypeOf((*KubeLeaseProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeLimitRange", - reflect.TypeOf((*KubeLimitRange)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLimitRange{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeLimitRangeList", - reflect.TypeOf((*KubeLimitRangeList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLimitRangeList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeLimitRangeListProps", - reflect.TypeOf((*KubeLimitRangeListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeLimitRangeProps", - reflect.TypeOf((*KubeLimitRangeProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeLocalSubjectAccessReview", - reflect.TypeOf((*KubeLocalSubjectAccessReview)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeLocalSubjectAccessReview{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeLocalSubjectAccessReviewProps", - reflect.TypeOf((*KubeLocalSubjectAccessReviewProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeMutatingWebhookConfiguration", - reflect.TypeOf((*KubeMutatingWebhookConfiguration)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeMutatingWebhookConfiguration{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeMutatingWebhookConfigurationList", - reflect.TypeOf((*KubeMutatingWebhookConfigurationList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeMutatingWebhookConfigurationList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeMutatingWebhookConfigurationListProps", - reflect.TypeOf((*KubeMutatingWebhookConfigurationListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeMutatingWebhookConfigurationProps", - reflect.TypeOf((*KubeMutatingWebhookConfigurationProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeNamespace", - reflect.TypeOf((*KubeNamespace)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeNamespace{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeNamespaceList", - reflect.TypeOf((*KubeNamespaceList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeNamespaceList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeNamespaceListProps", - reflect.TypeOf((*KubeNamespaceListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeNamespaceProps", - reflect.TypeOf((*KubeNamespaceProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeNetworkPolicy", - reflect.TypeOf((*KubeNetworkPolicy)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeNetworkPolicy{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeNetworkPolicyList", - reflect.TypeOf((*KubeNetworkPolicyList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeNetworkPolicyList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeNetworkPolicyListProps", - reflect.TypeOf((*KubeNetworkPolicyListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeNetworkPolicyProps", - reflect.TypeOf((*KubeNetworkPolicyProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeNode", - reflect.TypeOf((*KubeNode)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeNode{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeNodeList", - reflect.TypeOf((*KubeNodeList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeNodeList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeNodeListProps", - reflect.TypeOf((*KubeNodeListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeNodeProps", - reflect.TypeOf((*KubeNodeProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePersistentVolume", - reflect.TypeOf((*KubePersistentVolume)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePersistentVolume{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePersistentVolumeClaim", - reflect.TypeOf((*KubePersistentVolumeClaim)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePersistentVolumeClaim{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePersistentVolumeClaimList", - reflect.TypeOf((*KubePersistentVolumeClaimList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePersistentVolumeClaimList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePersistentVolumeClaimListProps", - reflect.TypeOf((*KubePersistentVolumeClaimListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePersistentVolumeClaimProps", - reflect.TypeOf((*KubePersistentVolumeClaimProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePersistentVolumeList", - reflect.TypeOf((*KubePersistentVolumeList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePersistentVolumeList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePersistentVolumeListProps", - reflect.TypeOf((*KubePersistentVolumeListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePersistentVolumeProps", - reflect.TypeOf((*KubePersistentVolumeProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePod", - reflect.TypeOf((*KubePod)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePod{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePodDisruptionBudget", - reflect.TypeOf((*KubePodDisruptionBudget)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodDisruptionBudget{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePodDisruptionBudgetList", - reflect.TypeOf((*KubePodDisruptionBudgetList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodDisruptionBudgetList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePodDisruptionBudgetListProps", - reflect.TypeOf((*KubePodDisruptionBudgetListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePodDisruptionBudgetProps", - reflect.TypeOf((*KubePodDisruptionBudgetProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePodList", - reflect.TypeOf((*KubePodList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePodListProps", - reflect.TypeOf((*KubePodListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePodProps", - reflect.TypeOf((*KubePodProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePodSchedulingContextListV1Alpha3", - reflect.TypeOf((*KubePodSchedulingContextListV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodSchedulingContextListV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePodSchedulingContextListV1Alpha3Props", - reflect.TypeOf((*KubePodSchedulingContextListV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePodSchedulingContextV1Alpha3", - reflect.TypeOf((*KubePodSchedulingContextV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodSchedulingContextV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePodSchedulingContextV1Alpha3Props", - reflect.TypeOf((*KubePodSchedulingContextV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePodTemplate", - reflect.TypeOf((*KubePodTemplate)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodTemplate{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePodTemplateList", - reflect.TypeOf((*KubePodTemplateList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePodTemplateList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePodTemplateListProps", - reflect.TypeOf((*KubePodTemplateListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePodTemplateProps", - reflect.TypeOf((*KubePodTemplateProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePriorityClass", - reflect.TypeOf((*KubePriorityClass)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePriorityClass{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePriorityClassList", - reflect.TypeOf((*KubePriorityClassList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePriorityClassList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePriorityClassListProps", - reflect.TypeOf((*KubePriorityClassListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePriorityClassProps", - reflect.TypeOf((*KubePriorityClassProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePriorityLevelConfiguration", - reflect.TypeOf((*KubePriorityLevelConfiguration)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePriorityLevelConfiguration{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubePriorityLevelConfigurationList", - reflect.TypeOf((*KubePriorityLevelConfigurationList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePriorityLevelConfigurationList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePriorityLevelConfigurationListProps", - reflect.TypeOf((*KubePriorityLevelConfigurationListProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePriorityLevelConfigurationListV1Beta3", - reflect.TypeOf((*KubePriorityLevelConfigurationListV1Beta3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePriorityLevelConfigurationListV1Beta3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePriorityLevelConfigurationListV1Beta3Props", - reflect.TypeOf((*KubePriorityLevelConfigurationListV1Beta3Props)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubePriorityLevelConfigurationProps", - reflect.TypeOf((*KubePriorityLevelConfigurationProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubePriorityLevelConfigurationV1Beta3", - reflect.TypeOf((*KubePriorityLevelConfigurationV1Beta3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubePriorityLevelConfigurationV1Beta3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubePriorityLevelConfigurationV1Beta3Props", - reflect.TypeOf((*KubePriorityLevelConfigurationV1Beta3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeReplicaSet", - reflect.TypeOf((*KubeReplicaSet)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeReplicaSet{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeReplicaSetList", - reflect.TypeOf((*KubeReplicaSetList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeReplicaSetList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeReplicaSetListProps", - reflect.TypeOf((*KubeReplicaSetListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeReplicaSetProps", - reflect.TypeOf((*KubeReplicaSetProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeReplicationController", - reflect.TypeOf((*KubeReplicationController)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeReplicationController{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeReplicationControllerList", - reflect.TypeOf((*KubeReplicationControllerList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeReplicationControllerList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeReplicationControllerListProps", - reflect.TypeOf((*KubeReplicationControllerListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeReplicationControllerProps", - reflect.TypeOf((*KubeReplicationControllerProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceClaimListV1Alpha3", - reflect.TypeOf((*KubeResourceClaimListV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceClaimListV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimListV1Alpha3Props", - reflect.TypeOf((*KubeResourceClaimListV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceClaimTemplateListV1Alpha3", - reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceClaimTemplateListV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimTemplateListV1Alpha3Props", - reflect.TypeOf((*KubeResourceClaimTemplateListV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceClaimTemplateV1Alpha3", - reflect.TypeOf((*KubeResourceClaimTemplateV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceClaimTemplateV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimTemplateV1Alpha3Props", - reflect.TypeOf((*KubeResourceClaimTemplateV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceClaimV1Alpha3", - reflect.TypeOf((*KubeResourceClaimV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceClaimV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceClaimV1Alpha3Props", - reflect.TypeOf((*KubeResourceClaimV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceQuota", - reflect.TypeOf((*KubeResourceQuota)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceQuota{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeResourceQuotaList", - reflect.TypeOf((*KubeResourceQuotaList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceQuotaList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceQuotaListProps", - reflect.TypeOf((*KubeResourceQuotaListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceQuotaProps", - reflect.TypeOf((*KubeResourceQuotaProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeResourceSliceV1Alpha3", - reflect.TypeOf((*KubeResourceSliceV1Alpha3)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeResourceSliceV1Alpha3{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeResourceSliceV1Alpha3Props", - reflect.TypeOf((*KubeResourceSliceV1Alpha3Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeRole", - reflect.TypeOf((*KubeRole)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeRole{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeRoleBinding", - reflect.TypeOf((*KubeRoleBinding)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeRoleBinding{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeRoleBindingList", - reflect.TypeOf((*KubeRoleBindingList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeRoleBindingList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeRoleBindingListProps", - reflect.TypeOf((*KubeRoleBindingListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeRoleBindingProps", - reflect.TypeOf((*KubeRoleBindingProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeRoleList", - reflect.TypeOf((*KubeRoleList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeRoleList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeRoleListProps", - reflect.TypeOf((*KubeRoleListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeRoleProps", - reflect.TypeOf((*KubeRoleProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeRuntimeClass", - reflect.TypeOf((*KubeRuntimeClass)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeRuntimeClass{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeRuntimeClassList", - reflect.TypeOf((*KubeRuntimeClassList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeRuntimeClassList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeRuntimeClassListProps", - reflect.TypeOf((*KubeRuntimeClassListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeRuntimeClassProps", - reflect.TypeOf((*KubeRuntimeClassProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeScale", - reflect.TypeOf((*KubeScale)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeScale{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeScaleProps", - reflect.TypeOf((*KubeScaleProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSecret", - reflect.TypeOf((*KubeSecret)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSecret{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeSecretList", - reflect.TypeOf((*KubeSecretList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSecretList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSecretListProps", - reflect.TypeOf((*KubeSecretListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeSecretProps", - reflect.TypeOf((*KubeSecretProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSelfSubjectAccessReview", - reflect.TypeOf((*KubeSelfSubjectAccessReview)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSelfSubjectAccessReview{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSelfSubjectAccessReviewProps", - reflect.TypeOf((*KubeSelfSubjectAccessReviewProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSelfSubjectReview", - reflect.TypeOf((*KubeSelfSubjectReview)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSelfSubjectReview{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSelfSubjectReviewProps", - reflect.TypeOf((*KubeSelfSubjectReviewProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSelfSubjectReviewV1Alpha1", - reflect.TypeOf((*KubeSelfSubjectReviewV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSelfSubjectReviewV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSelfSubjectReviewV1Alpha1Props", - reflect.TypeOf((*KubeSelfSubjectReviewV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSelfSubjectReviewV1Beta1", - reflect.TypeOf((*KubeSelfSubjectReviewV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSelfSubjectReviewV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSelfSubjectReviewV1Beta1Props", - reflect.TypeOf((*KubeSelfSubjectReviewV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSelfSubjectRulesReview", - reflect.TypeOf((*KubeSelfSubjectRulesReview)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSelfSubjectRulesReview{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSelfSubjectRulesReviewProps", - reflect.TypeOf((*KubeSelfSubjectRulesReviewProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeService", - reflect.TypeOf((*KubeService)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeService{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeServiceAccount", - reflect.TypeOf((*KubeServiceAccount)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeServiceAccount{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeServiceAccountList", - reflect.TypeOf((*KubeServiceAccountList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeServiceAccountList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeServiceAccountListProps", - reflect.TypeOf((*KubeServiceAccountListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeServiceAccountProps", - reflect.TypeOf((*KubeServiceAccountProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeServiceCidrListV1Beta1", - reflect.TypeOf((*KubeServiceCidrListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeServiceCidrListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeServiceCidrListV1Beta1Props", - reflect.TypeOf((*KubeServiceCidrListV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeServiceCidrv1Beta1", - reflect.TypeOf((*KubeServiceCidrv1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeServiceCidrv1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeServiceCidrv1Beta1Props", - reflect.TypeOf((*KubeServiceCidrv1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeServiceList", - reflect.TypeOf((*KubeServiceList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeServiceList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeServiceListProps", - reflect.TypeOf((*KubeServiceListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeServiceProps", - reflect.TypeOf((*KubeServiceProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStatefulSet", - reflect.TypeOf((*KubeStatefulSet)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStatefulSet{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeStatefulSetList", - reflect.TypeOf((*KubeStatefulSetList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStatefulSetList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStatefulSetListProps", - reflect.TypeOf((*KubeStatefulSetListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeStatefulSetProps", - reflect.TypeOf((*KubeStatefulSetProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStatus", - reflect.TypeOf((*KubeStatus)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStatus{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStatusProps", - reflect.TypeOf((*KubeStatusProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStorageClass", - reflect.TypeOf((*KubeStorageClass)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStorageClass{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeStorageClassList", - reflect.TypeOf((*KubeStorageClassList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStorageClassList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStorageClassListProps", - reflect.TypeOf((*KubeStorageClassListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeStorageClassProps", - reflect.TypeOf((*KubeStorageClassProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStorageVersionListV1Alpha1", - reflect.TypeOf((*KubeStorageVersionListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStorageVersionListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStorageVersionListV1Alpha1Props", - reflect.TypeOf((*KubeStorageVersionListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStorageVersionMigrationListV1Alpha1", - reflect.TypeOf((*KubeStorageVersionMigrationListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStorageVersionMigrationListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStorageVersionMigrationListV1Alpha1Props", - reflect.TypeOf((*KubeStorageVersionMigrationListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStorageVersionMigrationV1Alpha1", - reflect.TypeOf((*KubeStorageVersionMigrationV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStorageVersionMigrationV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStorageVersionMigrationV1Alpha1Props", - reflect.TypeOf((*KubeStorageVersionMigrationV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeStorageVersionV1Alpha1", - reflect.TypeOf((*KubeStorageVersionV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeStorageVersionV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeStorageVersionV1Alpha1Props", - reflect.TypeOf((*KubeStorageVersionV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeSubjectAccessReview", - reflect.TypeOf((*KubeSubjectAccessReview)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeSubjectAccessReview{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeSubjectAccessReviewProps", - reflect.TypeOf((*KubeSubjectAccessReviewProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeTokenRequest", - reflect.TypeOf((*KubeTokenRequest)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeTokenRequest{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeTokenRequestProps", - reflect.TypeOf((*KubeTokenRequestProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeTokenReview", - reflect.TypeOf((*KubeTokenReview)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeTokenReview{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeTokenReviewProps", - reflect.TypeOf((*KubeTokenReviewProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicy", - reflect.TypeOf((*KubeValidatingAdmissionPolicy)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicy{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyBinding", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBinding)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyBinding{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyBindingList", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyBindingListProps", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Alpha1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyBindingListV1Beta1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingListV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyBindingProps", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyBindingV1Alpha1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyBindingV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyBindingV1Beta1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyBindingV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyList", - reflect.TypeOf((*KubeValidatingAdmissionPolicyList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyListProps", - reflect.TypeOf((*KubeValidatingAdmissionPolicyListProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyListV1Alpha1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyListV1Beta1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyListV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyProps", - reflect.TypeOf((*KubeValidatingAdmissionPolicyProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyV1Alpha1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingAdmissionPolicyV1Beta1", - reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingAdmissionPolicyV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingAdmissionPolicyV1Beta1Props", - reflect.TypeOf((*KubeValidatingAdmissionPolicyV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingWebhookConfiguration", - reflect.TypeOf((*KubeValidatingWebhookConfiguration)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingWebhookConfiguration{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeValidatingWebhookConfigurationList", - reflect.TypeOf((*KubeValidatingWebhookConfigurationList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeValidatingWebhookConfigurationList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingWebhookConfigurationListProps", - reflect.TypeOf((*KubeValidatingWebhookConfigurationListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeValidatingWebhookConfigurationProps", - reflect.TypeOf((*KubeValidatingWebhookConfigurationProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeVolumeAttachment", - reflect.TypeOf((*KubeVolumeAttachment)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeVolumeAttachment{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterClass( - "k8s.KubeVolumeAttachmentList", - reflect.TypeOf((*KubeVolumeAttachmentList)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeVolumeAttachmentList{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeVolumeAttachmentListProps", - reflect.TypeOf((*KubeVolumeAttachmentListProps)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.KubeVolumeAttachmentProps", - reflect.TypeOf((*KubeVolumeAttachmentProps)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeVolumeAttributesClassListV1Alpha1", - reflect.TypeOf((*KubeVolumeAttributesClassListV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeVolumeAttributesClassListV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeVolumeAttributesClassListV1Alpha1Props", - reflect.TypeOf((*KubeVolumeAttributesClassListV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeVolumeAttributesClassListV1Beta1", - reflect.TypeOf((*KubeVolumeAttributesClassListV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeVolumeAttributesClassListV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeVolumeAttributesClassListV1Beta1Props", - reflect.TypeOf((*KubeVolumeAttributesClassListV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeVolumeAttributesClassV1Alpha1", - reflect.TypeOf((*KubeVolumeAttributesClassV1Alpha1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeVolumeAttributesClassV1Alpha1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeVolumeAttributesClassV1Alpha1Props", - reflect.TypeOf((*KubeVolumeAttributesClassV1Alpha1Props)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.KubeVolumeAttributesClassV1Beta1", - reflect.TypeOf((*KubeVolumeAttributesClassV1Beta1)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberMethod{JsiiMethod: "addDependency", GoMethod: "AddDependency"}, - _jsii_.MemberMethod{JsiiMethod: "addJsonPatch", GoMethod: "AddJsonPatch"}, - _jsii_.MemberProperty{JsiiProperty: "apiGroup", GoGetter: "ApiGroup"}, - _jsii_.MemberProperty{JsiiProperty: "apiVersion", GoGetter: "ApiVersion"}, - _jsii_.MemberProperty{JsiiProperty: "chart", GoGetter: "Chart"}, - _jsii_.MemberProperty{JsiiProperty: "kind", GoGetter: "Kind"}, - _jsii_.MemberProperty{JsiiProperty: "metadata", GoGetter: "Metadata"}, - _jsii_.MemberProperty{JsiiProperty: "name", GoGetter: "Name"}, - _jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"}, - _jsii_.MemberMethod{JsiiMethod: "toJson", GoMethod: "ToJson"}, - _jsii_.MemberMethod{JsiiMethod: "toString", GoMethod: "ToString"}, - }, - func() interface{} { - j := jsiiProxy_KubeVolumeAttributesClassV1Beta1{} - _jsii_.InitJsiiProxy(&j.Type__cdk8sApiObject) - return &j - }, - ) - _jsii_.RegisterStruct( - "k8s.KubeVolumeAttributesClassV1Beta1Props", - reflect.TypeOf((*KubeVolumeAttributesClassV1Beta1Props)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LabelSelector", - reflect.TypeOf((*LabelSelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LabelSelectorAttributes", - reflect.TypeOf((*LabelSelectorAttributes)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LabelSelectorRequirement", - reflect.TypeOf((*LabelSelectorRequirement)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LeaseCandidateSpecV1Alpha1", - reflect.TypeOf((*LeaseCandidateSpecV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LeaseSpec", - reflect.TypeOf((*LeaseSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Lifecycle", - reflect.TypeOf((*Lifecycle)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LifecycleHandler", - reflect.TypeOf((*LifecycleHandler)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LimitRangeItem", - reflect.TypeOf((*LimitRangeItem)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LimitRangeSpec", - reflect.TypeOf((*LimitRangeSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LimitResponse", - reflect.TypeOf((*LimitResponse)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LimitResponseV1Beta3", - reflect.TypeOf((*LimitResponseV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LimitedPriorityLevelConfiguration", - reflect.TypeOf((*LimitedPriorityLevelConfiguration)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LimitedPriorityLevelConfigurationV1Beta3", - reflect.TypeOf((*LimitedPriorityLevelConfigurationV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ListMeta", - reflect.TypeOf((*ListMeta)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LocalObjectReference", - reflect.TypeOf((*LocalObjectReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.LocalVolumeSource", - reflect.TypeOf((*LocalVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ManagedFieldsEntry", - reflect.TypeOf((*ManagedFieldsEntry)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MatchCondition", - reflect.TypeOf((*MatchCondition)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MatchConditionV1Alpha1", - reflect.TypeOf((*MatchConditionV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MatchConditionV1Beta1", - reflect.TypeOf((*MatchConditionV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MatchResources", - reflect.TypeOf((*MatchResources)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MatchResourcesV1Alpha1", - reflect.TypeOf((*MatchResourcesV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MatchResourcesV1Beta1", - reflect.TypeOf((*MatchResourcesV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MetricIdentifierV2", - reflect.TypeOf((*MetricIdentifierV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MetricSpecV2", - reflect.TypeOf((*MetricSpecV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MetricTargetV2", - reflect.TypeOf((*MetricTargetV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.MutatingWebhook", - reflect.TypeOf((*MutatingWebhook)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NamedRuleWithOperations", - reflect.TypeOf((*NamedRuleWithOperations)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NamedRuleWithOperationsV1Alpha1", - reflect.TypeOf((*NamedRuleWithOperationsV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NamedRuleWithOperationsV1Beta1", - reflect.TypeOf((*NamedRuleWithOperationsV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NamespaceSpec", - reflect.TypeOf((*NamespaceSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NetworkPolicyEgressRule", - reflect.TypeOf((*NetworkPolicyEgressRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NetworkPolicyIngressRule", - reflect.TypeOf((*NetworkPolicyIngressRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NetworkPolicyPeer", - reflect.TypeOf((*NetworkPolicyPeer)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NetworkPolicyPort", - reflect.TypeOf((*NetworkPolicyPort)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NetworkPolicySpec", - reflect.TypeOf((*NetworkPolicySpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NfsVolumeSource", - reflect.TypeOf((*NfsVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NodeAffinity", - reflect.TypeOf((*NodeAffinity)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NodeConfigSource", - reflect.TypeOf((*NodeConfigSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NodeSelector", - reflect.TypeOf((*NodeSelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NodeSelectorRequirement", - reflect.TypeOf((*NodeSelectorRequirement)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NodeSelectorTerm", - reflect.TypeOf((*NodeSelectorTerm)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NodeSpec", - reflect.TypeOf((*NodeSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NonResourceAttributes", - reflect.TypeOf((*NonResourceAttributes)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NonResourcePolicyRule", - reflect.TypeOf((*NonResourcePolicyRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.NonResourcePolicyRuleV1Beta3", - reflect.TypeOf((*NonResourcePolicyRuleV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ObjectFieldSelector", - reflect.TypeOf((*ObjectFieldSelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ObjectMeta", - reflect.TypeOf((*ObjectMeta)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ObjectMetricSourceV2", - reflect.TypeOf((*ObjectMetricSourceV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ObjectReference", - reflect.TypeOf((*ObjectReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.OpaqueDeviceConfigurationV1Alpha3", - reflect.TypeOf((*OpaqueDeviceConfigurationV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Overhead", - reflect.TypeOf((*Overhead)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.OwnerReference", - reflect.TypeOf((*OwnerReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParamKind", - reflect.TypeOf((*ParamKind)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParamKindV1Alpha1", - reflect.TypeOf((*ParamKindV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParamKindV1Beta1", - reflect.TypeOf((*ParamKindV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParamRef", - reflect.TypeOf((*ParamRef)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParamRefV1Alpha1", - reflect.TypeOf((*ParamRefV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParamRefV1Beta1", - reflect.TypeOf((*ParamRefV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ParentReferenceV1Beta1", - reflect.TypeOf((*ParentReferenceV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PersistentVolumeClaimSpec", - reflect.TypeOf((*PersistentVolumeClaimSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PersistentVolumeClaimTemplate", - reflect.TypeOf((*PersistentVolumeClaimTemplate)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PersistentVolumeClaimVolumeSource", - reflect.TypeOf((*PersistentVolumeClaimVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PersistentVolumeSpec", - reflect.TypeOf((*PersistentVolumeSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PhotonPersistentDiskVolumeSource", - reflect.TypeOf((*PhotonPersistentDiskVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodAffinity", - reflect.TypeOf((*PodAffinity)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodAffinityTerm", - reflect.TypeOf((*PodAffinityTerm)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodAntiAffinity", - reflect.TypeOf((*PodAntiAffinity)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodDisruptionBudgetSpec", - reflect.TypeOf((*PodDisruptionBudgetSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodDnsConfig", - reflect.TypeOf((*PodDnsConfig)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodDnsConfigOption", - reflect.TypeOf((*PodDnsConfigOption)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodFailurePolicy", - reflect.TypeOf((*PodFailurePolicy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodFailurePolicyOnExitCodesRequirement", - reflect.TypeOf((*PodFailurePolicyOnExitCodesRequirement)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodFailurePolicyOnPodConditionsPattern", - reflect.TypeOf((*PodFailurePolicyOnPodConditionsPattern)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodFailurePolicyRule", - reflect.TypeOf((*PodFailurePolicyRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodOs", - reflect.TypeOf((*PodOs)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodReadinessGate", - reflect.TypeOf((*PodReadinessGate)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodResourceClaim", - reflect.TypeOf((*PodResourceClaim)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodSchedulingContextSpecV1Alpha3", - reflect.TypeOf((*PodSchedulingContextSpecV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodSchedulingGate", - reflect.TypeOf((*PodSchedulingGate)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodSecurityContext", - reflect.TypeOf((*PodSecurityContext)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodSpec", - reflect.TypeOf((*PodSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodTemplateSpec", - reflect.TypeOf((*PodTemplateSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PodsMetricSourceV2", - reflect.TypeOf((*PodsMetricSourceV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PolicyRule", - reflect.TypeOf((*PolicyRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PolicyRulesWithSubjects", - reflect.TypeOf((*PolicyRulesWithSubjects)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PolicyRulesWithSubjectsV1Beta3", - reflect.TypeOf((*PolicyRulesWithSubjectsV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PortworxVolumeSource", - reflect.TypeOf((*PortworxVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Preconditions", - reflect.TypeOf((*Preconditions)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PreferredSchedulingTerm", - reflect.TypeOf((*PreferredSchedulingTerm)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PriorityLevelConfigurationReference", - reflect.TypeOf((*PriorityLevelConfigurationReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PriorityLevelConfigurationReferenceV1Beta3", - reflect.TypeOf((*PriorityLevelConfigurationReferenceV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PriorityLevelConfigurationSpec", - reflect.TypeOf((*PriorityLevelConfigurationSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.PriorityLevelConfigurationSpecV1Beta3", - reflect.TypeOf((*PriorityLevelConfigurationSpecV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Probe", - reflect.TypeOf((*Probe)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ProjectedVolumeSource", - reflect.TypeOf((*ProjectedVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterClass( - "k8s.Quantity", - reflect.TypeOf((*Quantity)(nil)).Elem(), - []_jsii_.Member{ - _jsii_.MemberProperty{JsiiProperty: "value", GoGetter: "Value"}, - }, - func() interface{} { - return &jsiiProxy_Quantity{} - }, - ) - _jsii_.RegisterStruct( - "k8s.QueuingConfiguration", - reflect.TypeOf((*QueuingConfiguration)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.QueuingConfigurationV1Beta3", - reflect.TypeOf((*QueuingConfigurationV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.QuobyteVolumeSource", - reflect.TypeOf((*QuobyteVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RbdPersistentVolumeSource", - reflect.TypeOf((*RbdPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RbdVolumeSource", - reflect.TypeOf((*RbdVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ReplicaSetSpec", - reflect.TypeOf((*ReplicaSetSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ReplicationControllerSpec", - reflect.TypeOf((*ReplicationControllerSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceAttributes", - reflect.TypeOf((*ResourceAttributes)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceClaim", - reflect.TypeOf((*ResourceClaim)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceClaimSpecV1Alpha3", - reflect.TypeOf((*ResourceClaimSpecV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceClaimTemplateSpecV1Alpha3", - reflect.TypeOf((*ResourceClaimTemplateSpecV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceFieldSelector", - reflect.TypeOf((*ResourceFieldSelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceMetricSourceV2", - reflect.TypeOf((*ResourceMetricSourceV2)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourcePolicyRule", - reflect.TypeOf((*ResourcePolicyRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourcePolicyRuleV1Beta3", - reflect.TypeOf((*ResourcePolicyRuleV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourcePoolV1Alpha3", - reflect.TypeOf((*ResourcePoolV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceQuotaSpec", - reflect.TypeOf((*ResourceQuotaSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceRequirements", - reflect.TypeOf((*ResourceRequirements)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ResourceSliceSpecV1Alpha3", - reflect.TypeOf((*ResourceSliceSpecV1Alpha3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RoleRef", - reflect.TypeOf((*RoleRef)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RollingUpdateDaemonSet", - reflect.TypeOf((*RollingUpdateDaemonSet)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RollingUpdateDeployment", - reflect.TypeOf((*RollingUpdateDeployment)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RollingUpdateStatefulSetStrategy", - reflect.TypeOf((*RollingUpdateStatefulSetStrategy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.RuleWithOperations", - reflect.TypeOf((*RuleWithOperations)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ScaleIoPersistentVolumeSource", - reflect.TypeOf((*ScaleIoPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ScaleIoVolumeSource", - reflect.TypeOf((*ScaleIoVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ScaleSpec", - reflect.TypeOf((*ScaleSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Scheduling", - reflect.TypeOf((*Scheduling)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ScopeSelector", - reflect.TypeOf((*ScopeSelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ScopedResourceSelectorRequirement", - reflect.TypeOf((*ScopedResourceSelectorRequirement)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SeLinuxOptions", - reflect.TypeOf((*SeLinuxOptions)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SeccompProfile", - reflect.TypeOf((*SeccompProfile)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SecretEnvSource", - reflect.TypeOf((*SecretEnvSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SecretKeySelector", - reflect.TypeOf((*SecretKeySelector)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SecretProjection", - reflect.TypeOf((*SecretProjection)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SecretReference", - reflect.TypeOf((*SecretReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SecretVolumeSource", - reflect.TypeOf((*SecretVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SecurityContext", - reflect.TypeOf((*SecurityContext)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SelectableField", - reflect.TypeOf((*SelectableField)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SelfSubjectAccessReviewSpec", - reflect.TypeOf((*SelfSubjectAccessReviewSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SelfSubjectRulesReviewSpec", - reflect.TypeOf((*SelfSubjectRulesReviewSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServiceAccountSubjectV1Beta3", - reflect.TypeOf((*ServiceAccountSubjectV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServiceAccountTokenProjection", - reflect.TypeOf((*ServiceAccountTokenProjection)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServiceBackendPort", - reflect.TypeOf((*ServiceBackendPort)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServiceCidrSpecV1Beta1", - reflect.TypeOf((*ServiceCidrSpecV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServicePort", - reflect.TypeOf((*ServicePort)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServiceReference", - reflect.TypeOf((*ServiceReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ServiceSpec", - reflect.TypeOf((*ServiceSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SessionAffinityConfig", - reflect.TypeOf((*SessionAffinityConfig)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SleepAction", - reflect.TypeOf((*SleepAction)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StatefulSetOrdinals", - reflect.TypeOf((*StatefulSetOrdinals)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StatefulSetPersistentVolumeClaimRetentionPolicy", - reflect.TypeOf((*StatefulSetPersistentVolumeClaimRetentionPolicy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StatefulSetSpec", - reflect.TypeOf((*StatefulSetSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StatefulSetUpdateStrategy", - reflect.TypeOf((*StatefulSetUpdateStrategy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StatusCause", - reflect.TypeOf((*StatusCause)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StatusDetails", - reflect.TypeOf((*StatusDetails)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StorageOsPersistentVolumeSource", - reflect.TypeOf((*StorageOsPersistentVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StorageOsVolumeSource", - reflect.TypeOf((*StorageOsVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.StorageVersionMigrationSpecV1Alpha1", - reflect.TypeOf((*StorageVersionMigrationSpecV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Subject", - reflect.TypeOf((*Subject)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SubjectAccessReviewSpec", - reflect.TypeOf((*SubjectAccessReviewSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SubjectV1Beta3", - reflect.TypeOf((*SubjectV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SuccessPolicy", - reflect.TypeOf((*SuccessPolicy)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.SuccessPolicyRule", - reflect.TypeOf((*SuccessPolicyRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Sysctl", - reflect.TypeOf((*Sysctl)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Taint", - reflect.TypeOf((*Taint)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TcpSocketAction", - reflect.TypeOf((*TcpSocketAction)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TokenRequest", - reflect.TypeOf((*TokenRequest)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TokenRequestSpec", - reflect.TypeOf((*TokenRequestSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TokenReviewSpec", - reflect.TypeOf((*TokenReviewSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Toleration", - reflect.TypeOf((*Toleration)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TopologySelectorLabelRequirement", - reflect.TypeOf((*TopologySelectorLabelRequirement)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TopologySelectorTerm", - reflect.TypeOf((*TopologySelectorTerm)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TopologySpreadConstraint", - reflect.TypeOf((*TopologySpreadConstraint)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TypedLocalObjectReference", - reflect.TypeOf((*TypedLocalObjectReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.TypedObjectReference", - reflect.TypeOf((*TypedObjectReference)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.UserSubjectV1Beta3", - reflect.TypeOf((*UserSubjectV1Beta3)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingAdmissionPolicyBindingSpec", - reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingAdmissionPolicyBindingSpecV1Alpha1", - reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpecV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingAdmissionPolicyBindingSpecV1Beta1", - reflect.TypeOf((*ValidatingAdmissionPolicyBindingSpecV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingAdmissionPolicySpec", - reflect.TypeOf((*ValidatingAdmissionPolicySpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingAdmissionPolicySpecV1Alpha1", - reflect.TypeOf((*ValidatingAdmissionPolicySpecV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingAdmissionPolicySpecV1Beta1", - reflect.TypeOf((*ValidatingAdmissionPolicySpecV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidatingWebhook", - reflect.TypeOf((*ValidatingWebhook)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Validation", - reflect.TypeOf((*Validation)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidationRule", - reflect.TypeOf((*ValidationRule)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidationV1Alpha1", - reflect.TypeOf((*ValidationV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.ValidationV1Beta1", - reflect.TypeOf((*ValidationV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Variable", - reflect.TypeOf((*Variable)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VariableV1Alpha1", - reflect.TypeOf((*VariableV1Alpha1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VariableV1Beta1", - reflect.TypeOf((*VariableV1Beta1)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.Volume", - reflect.TypeOf((*Volume)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeAttachmentSource", - reflect.TypeOf((*VolumeAttachmentSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeAttachmentSpec", - reflect.TypeOf((*VolumeAttachmentSpec)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeDevice", - reflect.TypeOf((*VolumeDevice)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeMount", - reflect.TypeOf((*VolumeMount)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeNodeAffinity", - reflect.TypeOf((*VolumeNodeAffinity)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeNodeResources", - reflect.TypeOf((*VolumeNodeResources)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeProjection", - reflect.TypeOf((*VolumeProjection)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VolumeResourceRequirements", - reflect.TypeOf((*VolumeResourceRequirements)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.VsphereVirtualDiskVolumeSource", - reflect.TypeOf((*VsphereVirtualDiskVolumeSource)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.WebhookClientConfig", - reflect.TypeOf((*WebhookClientConfig)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.WebhookConversion", - reflect.TypeOf((*WebhookConversion)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.WeightedPodAffinityTerm", - reflect.TypeOf((*WeightedPodAffinityTerm)(nil)).Elem(), - ) - _jsii_.RegisterStruct( - "k8s.WindowsSecurityContextOptions", - reflect.TypeOf((*WindowsSecurityContextOptions)(nil)).Elem(), - ) -} diff --git a/pods/imports/k8s/version b/pods/imports/k8s/version deleted file mode 100644 index 77d6f4ca2..000000000 --- a/pods/imports/k8s/version +++ /dev/null @@ -1 +0,0 @@ -0.0.0 diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitor.go b/pods/imports/monitoringcoreoscom/ServiceMonitor.go deleted file mode 100644 index 2e915896f..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitor.go +++ /dev/null @@ -1,317 +0,0 @@ -package monitoringcoreoscom - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/monitoringcoreoscom/jsii" - - "github.com/aws/constructs-go/constructs/v10" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" - "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/monitoringcoreoscom/internal" -) - -// ServiceMonitor defines monitoring for a set of services. -type ServiceMonitor interface { - cdk8s.ApiObject - // The group portion of the API version (e.g. `authorization.k8s.io`). - ApiGroup() *string - // The object's API version (e.g. `authorization.k8s.io/v1`). - ApiVersion() *string - // The chart in which this object is defined. - Chart() cdk8s.Chart - // The object kind. - Kind() *string - // Metadata associated with this API object. - Metadata() cdk8s.ApiObjectMetadataDefinition - // The name of the API object. - // - // If a name is specified in `metadata.name` this will be the name returned. - // Otherwise, a name will be generated by calling - // `Chart.of(this).generatedObjectName(this)`, which by default uses the - // construct path to generate a DNS-compatible name for the resource. - Name() *string - // The tree node. - Node() constructs.Node - // Create a dependency between this ApiObject and other constructs. - // - // These can be other ApiObjects, Charts, or custom. - AddDependency(dependencies ...constructs.IConstruct) - // Applies a set of RFC-6902 JSON-Patch operations to the manifest synthesized for this API object. - // - // Example: - // kubePod.addJsonPatch(JsonPatch.replace('/spec/enableServiceLinks', true)); - // - AddJsonPatch(ops ...cdk8s.JsonPatch) - // Renders the object to Kubernetes JSON. - ToJson() interface{} - // Returns a string representation of this construct. - ToString() *string -} - -// The jsii proxy struct for ServiceMonitor -type jsiiProxy_ServiceMonitor struct { - internal.Type__cdk8sApiObject -} - -func (j *jsiiProxy_ServiceMonitor) ApiGroup() *string { - var returns *string - _jsii_.Get( - j, - "apiGroup", - &returns, - ) - return returns -} - -func (j *jsiiProxy_ServiceMonitor) ApiVersion() *string { - var returns *string - _jsii_.Get( - j, - "apiVersion", - &returns, - ) - return returns -} - -func (j *jsiiProxy_ServiceMonitor) Chart() cdk8s.Chart { - var returns cdk8s.Chart - _jsii_.Get( - j, - "chart", - &returns, - ) - return returns -} - -func (j *jsiiProxy_ServiceMonitor) Kind() *string { - var returns *string - _jsii_.Get( - j, - "kind", - &returns, - ) - return returns -} - -func (j *jsiiProxy_ServiceMonitor) Metadata() cdk8s.ApiObjectMetadataDefinition { - var returns cdk8s.ApiObjectMetadataDefinition - _jsii_.Get( - j, - "metadata", - &returns, - ) - return returns -} - -func (j *jsiiProxy_ServiceMonitor) Name() *string { - var returns *string - _jsii_.Get( - j, - "name", - &returns, - ) - return returns -} - -func (j *jsiiProxy_ServiceMonitor) Node() constructs.Node { - var returns constructs.Node - _jsii_.Get( - j, - "node", - &returns, - ) - return returns -} - - -// Defines a "ServiceMonitor" API object. -func NewServiceMonitor(scope constructs.Construct, id *string, props *ServiceMonitorProps) ServiceMonitor { - _init_.Initialize() - - if err := validateNewServiceMonitorParameters(scope, id, props); err != nil { - panic(err) - } - j := jsiiProxy_ServiceMonitor{} - - _jsii_.Create( - "monitoringcoreoscom.ServiceMonitor", - []interface{}{scope, id, props}, - &j, - ) - - return &j -} - -// Defines a "ServiceMonitor" API object. -func NewServiceMonitor_Override(s ServiceMonitor, scope constructs.Construct, id *string, props *ServiceMonitorProps) { - _init_.Initialize() - - _jsii_.Create( - "monitoringcoreoscom.ServiceMonitor", - []interface{}{scope, id, props}, - s, - ) -} - -// Return whether the given object is an `ApiObject`. -// -// We do attribute detection since we can't reliably use 'instanceof'. -func ServiceMonitor_IsApiObject(o interface{}) *bool { - _init_.Initialize() - - if err := validateServiceMonitor_IsApiObjectParameters(o); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "monitoringcoreoscom.ServiceMonitor", - "isApiObject", - []interface{}{o}, - &returns, - ) - - return returns -} - -// Checks if `x` is a construct. -// -// Use this method instead of `instanceof` to properly detect `Construct` -// instances, even when the construct library is symlinked. -// -// Explanation: in JavaScript, multiple copies of the `constructs` library on -// disk are seen as independent, completely different libraries. As a -// consequence, the class `Construct` in each copy of the `constructs` library -// is seen as a different class, and an instance of one class will not test as -// `instanceof` the other class. `npm install` will not create installations -// like this, but users may manually symlink construct libraries together or -// use a monorepo tool: in those cases, multiple copies of the `constructs` -// library can be accidentally installed, and `instanceof` will behave -// unpredictably. It is safest to avoid using `instanceof`, and using -// this type-testing method instead. -// -// Returns: true if `x` is an object created from a class which extends `Construct`. -func ServiceMonitor_IsConstruct(x interface{}) *bool { - _init_.Initialize() - - if err := validateServiceMonitor_IsConstructParameters(x); err != nil { - panic(err) - } - var returns *bool - - _jsii_.StaticInvoke( - "monitoringcoreoscom.ServiceMonitor", - "isConstruct", - []interface{}{x}, - &returns, - ) - - return returns -} - -// Renders a Kubernetes manifest for "ServiceMonitor". -// -// This can be used to inline resource manifests inside other objects (e.g. as templates). -func ServiceMonitor_Manifest(props *ServiceMonitorProps) interface{} { - _init_.Initialize() - - if err := validateServiceMonitor_ManifestParameters(props); err != nil { - panic(err) - } - var returns interface{} - - _jsii_.StaticInvoke( - "monitoringcoreoscom.ServiceMonitor", - "manifest", - []interface{}{props}, - &returns, - ) - - return returns -} - -// Returns the `ApiObject` named `Resource` which is a child of the given construct. -// -// If `c` is an `ApiObject`, it is returned directly. Throws an -// exception if the construct does not have a child named `Default` _or_ if -// this child is not an `ApiObject`. -func ServiceMonitor_Of(c constructs.IConstruct) cdk8s.ApiObject { - _init_.Initialize() - - if err := validateServiceMonitor_OfParameters(c); err != nil { - panic(err) - } - var returns cdk8s.ApiObject - - _jsii_.StaticInvoke( - "monitoringcoreoscom.ServiceMonitor", - "of", - []interface{}{c}, - &returns, - ) - - return returns -} - -func ServiceMonitor_GVK() *cdk8s.GroupVersionKind { - _init_.Initialize() - var returns *cdk8s.GroupVersionKind - _jsii_.StaticGet( - "monitoringcoreoscom.ServiceMonitor", - "GVK", - &returns, - ) - return returns -} - -func (s *jsiiProxy_ServiceMonitor) AddDependency(dependencies ...constructs.IConstruct) { - args := []interface{}{} - for _, a := range dependencies { - args = append(args, a) - } - - _jsii_.InvokeVoid( - s, - "addDependency", - args, - ) -} - -func (s *jsiiProxy_ServiceMonitor) AddJsonPatch(ops ...cdk8s.JsonPatch) { - args := []interface{}{} - for _, a := range ops { - args = append(args, a) - } - - _jsii_.InvokeVoid( - s, - "addJsonPatch", - args, - ) -} - -func (s *jsiiProxy_ServiceMonitor) ToJson() interface{} { - var returns interface{} - - _jsii_.Invoke( - s, - "toJson", - nil, // no parameters - &returns, - ) - - return returns -} - -func (s *jsiiProxy_ServiceMonitor) ToString() *string { - var returns *string - - _jsii_.Invoke( - s, - "toString", - nil, // no parameters - &returns, - ) - - return returns -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorProps.go b/pods/imports/monitoringcoreoscom/ServiceMonitorProps.go deleted file mode 100644 index f8bd112c2..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorProps.go +++ /dev/null @@ -1,13 +0,0 @@ -package monitoringcoreoscom - -import ( - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" -) - -// ServiceMonitor defines monitoring for a set of services. -type ServiceMonitorProps struct { - // Specification of desired Service selection for target discovery by Prometheus. - Spec *ServiceMonitorSpec `field:"required" json:"spec" yaml:"spec"` - Metadata *cdk8s.ApiObjectMetadata `field:"optional" json:"metadata" yaml:"metadata"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go deleted file mode 100644 index 9f258a8d3..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpec.go +++ /dev/null @@ -1,47 +0,0 @@ -package monitoringcoreoscom - - -// Specification of desired Service selection for target discovery by Prometheus. -type ServiceMonitorSpec struct { - // Label selector to select the Kubernetes `Endpoints` objects. - Selector *ServiceMonitorSpecSelector `field:"required" json:"selector" yaml:"selector"` - // `attachMetadata` defines additional metadata which is added to the discovered targets. - // - // It requires Prometheus >= v2.37.0. - AttachMetadata *ServiceMonitorSpecAttachMetadata `field:"optional" json:"attachMetadata" yaml:"attachMetadata"` - // List of endpoints part of this ServiceMonitor. - Endpoints *[]*ServiceMonitorSpecEndpoints `field:"optional" json:"endpoints" yaml:"endpoints"` - // `jobLabel` selects the label from the associated Kubernetes `Service` object which will be used as the `job` label for all metrics. - // - // For example if `jobLabel` is set to `foo` and the Kubernetes `Service` object is labeled with `foo: bar`, then Prometheus adds the `job="bar"` label to all ingested metrics. - // If the value of this field is empty or if the label doesn't exist for the given Service, the `job` label of the metrics defaults to the name of the associated Kubernetes `Service`. - JobLabel *string `field:"optional" json:"jobLabel" yaml:"jobLabel"` - // Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. - // - // 0 means no limit. - // It requires Prometheus >= v2.47.0. - KeepDroppedTargets *float64 `field:"optional" json:"keepDroppedTargets" yaml:"keepDroppedTargets"` - // Per-scrape limit on number of labels that will be accepted for a sample. - // - // It requires Prometheus >= v2.27.0. - LabelLimit *float64 `field:"optional" json:"labelLimit" yaml:"labelLimit"` - // Per-scrape limit on length of labels name that will be accepted for a sample. - // - // It requires Prometheus >= v2.27.0. - LabelNameLengthLimit *float64 `field:"optional" json:"labelNameLengthLimit" yaml:"labelNameLengthLimit"` - // Per-scrape limit on length of labels value that will be accepted for a sample. - // - // It requires Prometheus >= v2.27.0. - LabelValueLengthLimit *float64 `field:"optional" json:"labelValueLengthLimit" yaml:"labelValueLengthLimit"` - // Selector to select which namespaces the Kubernetes `Endpoints` objects are discovered from. - NamespaceSelector *ServiceMonitorSpecNamespaceSelector `field:"optional" json:"namespaceSelector" yaml:"namespaceSelector"` - // `podTargetLabels` defines the labels which are transferred from the associated Kubernetes `Pod` object onto the ingested metrics. - PodTargetLabels *[]*string `field:"optional" json:"podTargetLabels" yaml:"podTargetLabels"` - // `sampleLimit` defines a per-scrape limit on the number of scraped samples that will be accepted. - SampleLimit *float64 `field:"optional" json:"sampleLimit" yaml:"sampleLimit"` - // `targetLabels` defines the labels which are transferred from the associated Kubernetes `Service` object onto the ingested metrics. - TargetLabels *[]*string `field:"optional" json:"targetLabels" yaml:"targetLabels"` - // `targetLimit` defines a limit on the number of scraped targets that will be accepted. - TargetLimit *float64 `field:"optional" json:"targetLimit" yaml:"targetLimit"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go deleted file mode 100644 index 3a8c198d9..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecAttachMetadata.go +++ /dev/null @@ -1,11 +0,0 @@ -package monitoringcoreoscom - - -// `attachMetadata` defines additional metadata which is added to the discovered targets. -// -// It requires Prometheus >= v2.37.0. -type ServiceMonitorSpecAttachMetadata struct { - // When set to true, Prometheus must have the `get` permission on the `Nodes` objects. - Node *bool `field:"optional" json:"node" yaml:"node"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go deleted file mode 100644 index 00871e783..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpoints.go +++ /dev/null @@ -1,83 +0,0 @@ -package monitoringcoreoscom - - -// Endpoint defines an endpoint serving Prometheus metrics to be scraped by Prometheus. -type ServiceMonitorSpecEndpoints struct { - // `authorization` configures the Authorization header credentials to use when scraping the target. - // - // Cannot be set at the same time as `basicAuth`, or `oauth2`. - Authorization *ServiceMonitorSpecEndpointsAuthorization `field:"optional" json:"authorization" yaml:"authorization"` - // `basicAuth` configures the Basic Authentication credentials to use when scraping the target. - // - // Cannot be set at the same time as `authorization`, or `oauth2`. - BasicAuth *ServiceMonitorSpecEndpointsBasicAuth `field:"optional" json:"basicAuth" yaml:"basicAuth"` - // File to read bearer token for scraping the target. - // - // Deprecated: use `authorization` instead. - BearerTokenFile *string `field:"optional" json:"bearerTokenFile" yaml:"bearerTokenFile"` - // `bearerTokenSecret` specifies a key of a Secret containing the bearer token for scraping targets. - // - // The secret needs to be in the same namespace as the ServiceMonitor object and readable by the Prometheus Operator. - // Deprecated: use `authorization` instead. - BearerTokenSecret *ServiceMonitorSpecEndpointsBearerTokenSecret `field:"optional" json:"bearerTokenSecret" yaml:"bearerTokenSecret"` - // `enableHttp2` can be used to disable HTTP2 when scraping the target. - EnableHttp2 *bool `field:"optional" json:"enableHttp2" yaml:"enableHttp2"` - // When true, the pods which are not running (e.g. either in Failed or Succeeded state) are dropped during the target discovery. If unset, the filtering is enabled. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase. - FilterRunning *bool `field:"optional" json:"filterRunning" yaml:"filterRunning"` - // `followRedirects` defines whether the scrape requests should follow HTTP 3xx redirects. - FollowRedirects *bool `field:"optional" json:"followRedirects" yaml:"followRedirects"` - // When true, `honorLabels` preserves the metric's labels when they collide with the target's labels. - HonorLabels *bool `field:"optional" json:"honorLabels" yaml:"honorLabels"` - // `honorTimestamps` controls whether Prometheus preserves the timestamps when exposed by the target. - HonorTimestamps *bool `field:"optional" json:"honorTimestamps" yaml:"honorTimestamps"` - // Interval at which Prometheus scrapes the metrics from the target. - // - // If empty, Prometheus uses the global scrape interval. - Interval *string `field:"optional" json:"interval" yaml:"interval"` - // `metricRelabelings` configures the relabeling rules to apply to the samples before ingestion. - MetricRelabelings *[]*ServiceMonitorSpecEndpointsMetricRelabelings `field:"optional" json:"metricRelabelings" yaml:"metricRelabelings"` - // `oauth2` configures the OAuth2 settings to use when scraping the target. - // - // It requires Prometheus >= 2.27.0. - // Cannot be set at the same time as `authorization`, or `basicAuth`. - Oauth2 *ServiceMonitorSpecEndpointsOauth2 `field:"optional" json:"oauth2" yaml:"oauth2"` - // params define optional HTTP URL parameters. - Params *map[string]*[]*string `field:"optional" json:"params" yaml:"params"` - // HTTP path from which to scrape for metrics. - // - // If empty, Prometheus uses the default value (e.g. `/metrics`). - Path *string `field:"optional" json:"path" yaml:"path"` - // Name of the Service port which this endpoint refers to. - // - // It takes precedence over `targetPort`. - Port *string `field:"optional" json:"port" yaml:"port"` - // `proxyURL` configures the HTTP Proxy URL (e.g. "http://proxyserver:2195") to go through when scraping the target. - ProxyUrl *string `field:"optional" json:"proxyUrl" yaml:"proxyUrl"` - // `relabelings` configures the relabeling rules to apply the target's metadata labels. - // - // The Operator automatically adds relabelings for a few standard Kubernetes fields. - // The original scrape job's name is available via the `__tmp_prometheus_job_name` label. - // More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - Relabelings *[]*ServiceMonitorSpecEndpointsRelabelings `field:"optional" json:"relabelings" yaml:"relabelings"` - // HTTP scheme to use for scraping. - // - // `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. - // If empty, Prometheus uses the default value `http`. - Scheme ServiceMonitorSpecEndpointsScheme `field:"optional" json:"scheme" yaml:"scheme"` - // Timeout after which Prometheus considers the scrape to be failed. - // - // If empty, Prometheus uses the global scrape timeout unless it is less than the target's scrape interval value in which the latter is used. - ScrapeTimeout *string `field:"optional" json:"scrapeTimeout" yaml:"scrapeTimeout"` - // Name or number of the target port of the `Pod` object behind the Service, the port must be specified with container port property. - // - // Deprecated: use `port` instead. - TargetPort ServiceMonitorSpecEndpointsTargetPort `field:"optional" json:"targetPort" yaml:"targetPort"` - // TLS configuration to use when scraping the target. - TlsConfig *ServiceMonitorSpecEndpointsTlsConfig `field:"optional" json:"tlsConfig" yaml:"tlsConfig"` - // `trackTimestampsStaleness` defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. - // - // Has no effect if `honorTimestamps` is false. - // It requires Prometheus >= v2.48.0. - TrackTimestampsStaleness *bool `field:"optional" json:"trackTimestampsStaleness" yaml:"trackTimestampsStaleness"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go deleted file mode 100644 index 1b792fee9..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorization.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// `authorization` configures the Authorization header credentials to use when scraping the target. -// -// Cannot be set at the same time as `basicAuth`, or `oauth2`. -type ServiceMonitorSpecEndpointsAuthorization struct { - // Selects a key of a Secret in the namespace that contains the credentials for authentication. - Credentials *ServiceMonitorSpecEndpointsAuthorizationCredentials `field:"optional" json:"credentials" yaml:"credentials"` - // Defines the authentication type. - // - // The value is case-insensitive. - // "Basic" is not a supported value. - // Default: "Bearer". - Type *string `field:"optional" json:"type" yaml:"type"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go deleted file mode 100644 index f38c06b89..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsAuthorizationCredentials.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// Selects a key of a Secret in the namespace that contains the credentials for authentication. -type ServiceMonitorSpecEndpointsAuthorizationCredentials struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go deleted file mode 100644 index ca708ec57..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuth.go +++ /dev/null @@ -1,13 +0,0 @@ -package monitoringcoreoscom - - -// `basicAuth` configures the Basic Authentication credentials to use when scraping the target. -// -// Cannot be set at the same time as `authorization`, or `oauth2`. -type ServiceMonitorSpecEndpointsBasicAuth struct { - // `password` specifies a key of a Secret containing the password for authentication. - Password *ServiceMonitorSpecEndpointsBasicAuthPassword `field:"optional" json:"password" yaml:"password"` - // `username` specifies a key of a Secret containing the username for authentication. - Username *ServiceMonitorSpecEndpointsBasicAuthUsername `field:"optional" json:"username" yaml:"username"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go deleted file mode 100644 index 216e35f22..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthPassword.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// `password` specifies a key of a Secret containing the password for authentication. -type ServiceMonitorSpecEndpointsBasicAuthPassword struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go deleted file mode 100644 index 26ebfe26c..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBasicAuthUsername.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// `username` specifies a key of a Secret containing the username for authentication. -type ServiceMonitorSpecEndpointsBasicAuthUsername struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go deleted file mode 100644 index 63f3600bf..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsBearerTokenSecret.go +++ /dev/null @@ -1,20 +0,0 @@ -package monitoringcoreoscom - - -// `bearerTokenSecret` specifies a key of a Secret containing the bearer token for scraping targets. -// -// The secret needs to be in the same namespace as the ServiceMonitor object and readable by the Prometheus Operator. -// Deprecated: use `authorization` instead. -type ServiceMonitorSpecEndpointsBearerTokenSecret struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go deleted file mode 100644 index 0f96f733d..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelings.go +++ /dev/null @@ -1,35 +0,0 @@ -package monitoringcoreoscom - - -// RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. -// -// More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config -type ServiceMonitorSpecEndpointsMetricRelabelings struct { - // Action to perform based on the regex matching. - // - // `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. - // Default: "Replace". - Action ServiceMonitorSpecEndpointsMetricRelabelingsAction `field:"optional" json:"action" yaml:"action"` - // Modulus to take of the hash of the source label values. - // - // Only applicable when the action is `HashMod`. - Modulus *float64 `field:"optional" json:"modulus" yaml:"modulus"` - // Regular expression against which the extracted value is matched. - Regex *string `field:"optional" json:"regex" yaml:"regex"` - // Replacement value against which a Replace action is performed if the regular expression matches. - // - // Regex capture groups are available. - Replacement *string `field:"optional" json:"replacement" yaml:"replacement"` - // Separator is the string between concatenated SourceLabels. - Separator *string `field:"optional" json:"separator" yaml:"separator"` - // The source labels select values from existing labels. - // - // Their content is concatenated using the configured Separator and matched against the configured regular expression. - SourceLabels *[]*string `field:"optional" json:"sourceLabels" yaml:"sourceLabels"` - // Label to which the resulting string is written in a replacement. - // - // It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. - // Regex capture groups are available. - TargetLabel *string `field:"optional" json:"targetLabel" yaml:"targetLabel"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go deleted file mode 100644 index 6e0fada0d..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsMetricRelabelingsAction.go +++ /dev/null @@ -1,34 +0,0 @@ -package monitoringcoreoscom - - -// Action to perform based on the regex matching. -// -// `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. -// Default: "Replace". -type ServiceMonitorSpecEndpointsMetricRelabelingsAction string - -const ( - // replace. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_REPLACE ServiceMonitorSpecEndpointsMetricRelabelingsAction = "REPLACE" - // keep. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_KEEP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "KEEP" - // drop. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_DROP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "DROP" - // hashmod. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_HASHMOD ServiceMonitorSpecEndpointsMetricRelabelingsAction = "HASHMOD" - // labelmap. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_LABELMAP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LABELMAP" - // labeldrop. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_LABELDROP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LABELDROP" - // labelkeep. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_LABELKEEP ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LABELKEEP" - // lowercase. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_LOWERCASE ServiceMonitorSpecEndpointsMetricRelabelingsAction = "LOWERCASE" - // uppercase. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_UPPERCASE ServiceMonitorSpecEndpointsMetricRelabelingsAction = "UPPERCASE" - // keepequal. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_KEEPEQUAL ServiceMonitorSpecEndpointsMetricRelabelingsAction = "KEEPEQUAL" - // dropequal. - ServiceMonitorSpecEndpointsMetricRelabelingsAction_DROPEQUAL ServiceMonitorSpecEndpointsMetricRelabelingsAction = "DROPEQUAL" -) - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go deleted file mode 100644 index 19c78d54a..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2.go +++ /dev/null @@ -1,20 +0,0 @@ -package monitoringcoreoscom - - -// `oauth2` configures the OAuth2 settings to use when scraping the target. -// -// It requires Prometheus >= 2.27.0. -// Cannot be set at the same time as `authorization`, or `basicAuth`. -type ServiceMonitorSpecEndpointsOauth2 struct { - // `clientId` specifies a key of a Secret or ConfigMap containing the OAuth2 client's ID. - ClientId *ServiceMonitorSpecEndpointsOauth2ClientId `field:"required" json:"clientId" yaml:"clientId"` - // `clientSecret` specifies a key of a Secret containing the OAuth2 client's secret. - ClientSecret *ServiceMonitorSpecEndpointsOauth2ClientSecret `field:"required" json:"clientSecret" yaml:"clientSecret"` - // `tokenURL` configures the URL to fetch the token from. - TokenUrl *string `field:"required" json:"tokenUrl" yaml:"tokenUrl"` - // `endpointParams` configures the HTTP parameters to append to the token URL. - EndpointParams *map[string]*string `field:"optional" json:"endpointParams" yaml:"endpointParams"` - // `scopes` defines the OAuth2 scopes used for the token request. - Scopes *[]*string `field:"optional" json:"scopes" yaml:"scopes"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go deleted file mode 100644 index 00b0c41a5..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientId.go +++ /dev/null @@ -1,11 +0,0 @@ -package monitoringcoreoscom - - -// `clientId` specifies a key of a Secret or ConfigMap containing the OAuth2 client's ID. -type ServiceMonitorSpecEndpointsOauth2ClientId struct { - // ConfigMap containing data to use for the targets. - ConfigMap *ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap `field:"optional" json:"configMap" yaml:"configMap"` - // Secret containing data to use for the targets. - Secret *ServiceMonitorSpecEndpointsOauth2ClientIdSecret `field:"optional" json:"secret" yaml:"secret"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go deleted file mode 100644 index 0092f4555..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap.go +++ /dev/null @@ -1,15 +0,0 @@ -package monitoringcoreoscom - - -// ConfigMap containing data to use for the targets. -type ServiceMonitorSpecEndpointsOauth2ClientIdConfigMap struct { - // The key to select. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the ConfigMap or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go deleted file mode 100644 index 3df7af985..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientIdSecret.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// Secret containing data to use for the targets. -type ServiceMonitorSpecEndpointsOauth2ClientIdSecret struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go deleted file mode 100644 index 00d8da3bd..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsOauth2ClientSecret.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// `clientSecret` specifies a key of a Secret containing the OAuth2 client's secret. -type ServiceMonitorSpecEndpointsOauth2ClientSecret struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go deleted file mode 100644 index 5cfb6debe..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelings.go +++ /dev/null @@ -1,35 +0,0 @@ -package monitoringcoreoscom - - -// RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. -// -// More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config -type ServiceMonitorSpecEndpointsRelabelings struct { - // Action to perform based on the regex matching. - // - // `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. - // Default: "Replace". - Action ServiceMonitorSpecEndpointsRelabelingsAction `field:"optional" json:"action" yaml:"action"` - // Modulus to take of the hash of the source label values. - // - // Only applicable when the action is `HashMod`. - Modulus *float64 `field:"optional" json:"modulus" yaml:"modulus"` - // Regular expression against which the extracted value is matched. - Regex *string `field:"optional" json:"regex" yaml:"regex"` - // Replacement value against which a Replace action is performed if the regular expression matches. - // - // Regex capture groups are available. - Replacement *string `field:"optional" json:"replacement" yaml:"replacement"` - // Separator is the string between concatenated SourceLabels. - Separator *string `field:"optional" json:"separator" yaml:"separator"` - // The source labels select values from existing labels. - // - // Their content is concatenated using the configured Separator and matched against the configured regular expression. - SourceLabels *[]*string `field:"optional" json:"sourceLabels" yaml:"sourceLabels"` - // Label to which the resulting string is written in a replacement. - // - // It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. - // Regex capture groups are available. - TargetLabel *string `field:"optional" json:"targetLabel" yaml:"targetLabel"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go deleted file mode 100644 index d1c22c515..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsRelabelingsAction.go +++ /dev/null @@ -1,34 +0,0 @@ -package monitoringcoreoscom - - -// Action to perform based on the regex matching. -// -// `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. -// Default: "Replace". -type ServiceMonitorSpecEndpointsRelabelingsAction string - -const ( - // replace. - ServiceMonitorSpecEndpointsRelabelingsAction_REPLACE ServiceMonitorSpecEndpointsRelabelingsAction = "REPLACE" - // keep. - ServiceMonitorSpecEndpointsRelabelingsAction_KEEP ServiceMonitorSpecEndpointsRelabelingsAction = "KEEP" - // drop. - ServiceMonitorSpecEndpointsRelabelingsAction_DROP ServiceMonitorSpecEndpointsRelabelingsAction = "DROP" - // hashmod. - ServiceMonitorSpecEndpointsRelabelingsAction_HASHMOD ServiceMonitorSpecEndpointsRelabelingsAction = "HASHMOD" - // labelmap. - ServiceMonitorSpecEndpointsRelabelingsAction_LABELMAP ServiceMonitorSpecEndpointsRelabelingsAction = "LABELMAP" - // labeldrop. - ServiceMonitorSpecEndpointsRelabelingsAction_LABELDROP ServiceMonitorSpecEndpointsRelabelingsAction = "LABELDROP" - // labelkeep. - ServiceMonitorSpecEndpointsRelabelingsAction_LABELKEEP ServiceMonitorSpecEndpointsRelabelingsAction = "LABELKEEP" - // lowercase. - ServiceMonitorSpecEndpointsRelabelingsAction_LOWERCASE ServiceMonitorSpecEndpointsRelabelingsAction = "LOWERCASE" - // uppercase. - ServiceMonitorSpecEndpointsRelabelingsAction_UPPERCASE ServiceMonitorSpecEndpointsRelabelingsAction = "UPPERCASE" - // keepequal. - ServiceMonitorSpecEndpointsRelabelingsAction_KEEPEQUAL ServiceMonitorSpecEndpointsRelabelingsAction = "KEEPEQUAL" - // dropequal. - ServiceMonitorSpecEndpointsRelabelingsAction_DROPEQUAL ServiceMonitorSpecEndpointsRelabelingsAction = "DROPEQUAL" -) - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go deleted file mode 100644 index 7b96c8eb7..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsScheme.go +++ /dev/null @@ -1,16 +0,0 @@ -package monitoringcoreoscom - - -// HTTP scheme to use for scraping. -// -// `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. -// If empty, Prometheus uses the default value `http`. -type ServiceMonitorSpecEndpointsScheme string - -const ( - // http. - ServiceMonitorSpecEndpointsScheme_HTTP ServiceMonitorSpecEndpointsScheme = "HTTP" - // https. - ServiceMonitorSpecEndpointsScheme_HTTPS ServiceMonitorSpecEndpointsScheme = "HTTPS" -) - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go deleted file mode 100644 index ed64fd142..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort.go +++ /dev/null @@ -1,66 +0,0 @@ -package monitoringcoreoscom - -import ( - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - _init_ "github.com/smartcontractkit/chainlink-testing-framework/pods/imports/monitoringcoreoscom/jsii" -) - -// Name or number of the target port of the `Pod` object behind the Service, the port must be specified with container port property. -// -// Deprecated: use `port` instead. -type ServiceMonitorSpecEndpointsTargetPort interface { - Value() interface{} -} - -// The jsii proxy struct for ServiceMonitorSpecEndpointsTargetPort -type jsiiProxy_ServiceMonitorSpecEndpointsTargetPort struct { - _ byte // padding -} - -func (j *jsiiProxy_ServiceMonitorSpecEndpointsTargetPort) Value() interface{} { - var returns interface{} - _jsii_.Get( - j, - "value", - &returns, - ) - return returns -} - - -func ServiceMonitorSpecEndpointsTargetPort_FromNumber(value *float64) ServiceMonitorSpecEndpointsTargetPort { - _init_.Initialize() - - if err := validateServiceMonitorSpecEndpointsTargetPort_FromNumberParameters(value); err != nil { - panic(err) - } - var returns ServiceMonitorSpecEndpointsTargetPort - - _jsii_.StaticInvoke( - "monitoringcoreoscom.ServiceMonitorSpecEndpointsTargetPort", - "fromNumber", - []interface{}{value}, - &returns, - ) - - return returns -} - -func ServiceMonitorSpecEndpointsTargetPort_FromString(value *string) ServiceMonitorSpecEndpointsTargetPort { - _init_.Initialize() - - if err := validateServiceMonitorSpecEndpointsTargetPort_FromStringParameters(value); err != nil { - panic(err) - } - var returns ServiceMonitorSpecEndpointsTargetPort - - _jsii_.StaticInvoke( - "monitoringcoreoscom.ServiceMonitorSpecEndpointsTargetPort", - "fromString", - []interface{}{value}, - &returns, - ) - - return returns -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go deleted file mode 100644 index eadc1c373..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__checks.go +++ /dev/null @@ -1,24 +0,0 @@ -//go:build !no_runtime_type_checking - -package monitoringcoreoscom - -import ( - "fmt" -) - -func validateServiceMonitorSpecEndpointsTargetPort_FromNumberParameters(value *float64) error { - if value == nil { - return fmt.Errorf("parameter value is required, but nil was provided") - } - - return nil -} - -func validateServiceMonitorSpecEndpointsTargetPort_FromStringParameters(value *string) error { - if value == nil { - return fmt.Errorf("parameter value is required, but nil was provided") - } - - return nil -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go deleted file mode 100644 index ee135ae02..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTargetPort__no_checks.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build no_runtime_type_checking - -package monitoringcoreoscom - -// Building without runtime type checking enabled, so all the below just return nil - -func validateServiceMonitorSpecEndpointsTargetPort_FromNumberParameters(value *float64) error { - return nil -} - -func validateServiceMonitorSpecEndpointsTargetPort_FromStringParameters(value *string) error { - return nil -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go deleted file mode 100644 index 8a476795e..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfig.go +++ /dev/null @@ -1,23 +0,0 @@ -package monitoringcoreoscom - - -// TLS configuration to use when scraping the target. -type ServiceMonitorSpecEndpointsTlsConfig struct { - // Certificate authority used when verifying server certificates. - Ca *ServiceMonitorSpecEndpointsTlsConfigCa `field:"optional" json:"ca" yaml:"ca"` - // Path to the CA cert in the Prometheus container to use for the targets. - CaFile *string `field:"optional" json:"caFile" yaml:"caFile"` - // Client certificate to present when doing client-authentication. - Cert *ServiceMonitorSpecEndpointsTlsConfigCert `field:"optional" json:"cert" yaml:"cert"` - // Path to the client cert file in the Prometheus container for the targets. - CertFile *string `field:"optional" json:"certFile" yaml:"certFile"` - // Disable target certificate validation. - InsecureSkipVerify *bool `field:"optional" json:"insecureSkipVerify" yaml:"insecureSkipVerify"` - // Path to the client key file in the Prometheus container for the targets. - KeyFile *string `field:"optional" json:"keyFile" yaml:"keyFile"` - // Secret containing the client key file for the targets. - KeySecret *ServiceMonitorSpecEndpointsTlsConfigKeySecret `field:"optional" json:"keySecret" yaml:"keySecret"` - // Used to verify the hostname for the targets. - ServerName *string `field:"optional" json:"serverName" yaml:"serverName"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go deleted file mode 100644 index 206568e1b..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCa.go +++ /dev/null @@ -1,11 +0,0 @@ -package monitoringcoreoscom - - -// Certificate authority used when verifying server certificates. -type ServiceMonitorSpecEndpointsTlsConfigCa struct { - // ConfigMap containing data to use for the targets. - ConfigMap *ServiceMonitorSpecEndpointsTlsConfigCaConfigMap `field:"optional" json:"configMap" yaml:"configMap"` - // Secret containing data to use for the targets. - Secret *ServiceMonitorSpecEndpointsTlsConfigCaSecret `field:"optional" json:"secret" yaml:"secret"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go deleted file mode 100644 index 8c27e83ad..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaConfigMap.go +++ /dev/null @@ -1,15 +0,0 @@ -package monitoringcoreoscom - - -// ConfigMap containing data to use for the targets. -type ServiceMonitorSpecEndpointsTlsConfigCaConfigMap struct { - // The key to select. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the ConfigMap or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go deleted file mode 100644 index bad02951a..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCaSecret.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// Secret containing data to use for the targets. -type ServiceMonitorSpecEndpointsTlsConfigCaSecret struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go deleted file mode 100644 index 389c5c594..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCert.go +++ /dev/null @@ -1,11 +0,0 @@ -package monitoringcoreoscom - - -// Client certificate to present when doing client-authentication. -type ServiceMonitorSpecEndpointsTlsConfigCert struct { - // ConfigMap containing data to use for the targets. - ConfigMap *ServiceMonitorSpecEndpointsTlsConfigCertConfigMap `field:"optional" json:"configMap" yaml:"configMap"` - // Secret containing data to use for the targets. - Secret *ServiceMonitorSpecEndpointsTlsConfigCertSecret `field:"optional" json:"secret" yaml:"secret"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go deleted file mode 100644 index 6c36ed7b3..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertConfigMap.go +++ /dev/null @@ -1,15 +0,0 @@ -package monitoringcoreoscom - - -// ConfigMap containing data to use for the targets. -type ServiceMonitorSpecEndpointsTlsConfigCertConfigMap struct { - // The key to select. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the ConfigMap or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go deleted file mode 100644 index e7a623ec6..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigCertSecret.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// Secret containing data to use for the targets. -type ServiceMonitorSpecEndpointsTlsConfigCertSecret struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go deleted file mode 100644 index 1e21cc02c..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecEndpointsTlsConfigKeySecret.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// Secret containing the client key file for the targets. -type ServiceMonitorSpecEndpointsTlsConfigKeySecret struct { - // The key of the secret to select from. - // - // Must be a valid secret key. - Key *string `field:"required" json:"key" yaml:"key"` - // Name of the referent. - // - // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - Name *string `field:"optional" json:"name" yaml:"name"` - // Specify whether the Secret or its key must be defined. - Optional *bool `field:"optional" json:"optional" yaml:"optional"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go deleted file mode 100644 index 215f9e4bd..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecNamespaceSelector.go +++ /dev/null @@ -1,11 +0,0 @@ -package monitoringcoreoscom - - -// Selector to select which namespaces the Kubernetes `Endpoints` objects are discovered from. -type ServiceMonitorSpecNamespaceSelector struct { - // Boolean describing whether all namespaces are selected in contrast to a list restricting them. - Any *bool `field:"optional" json:"any" yaml:"any"` - // List of namespace names to select from. - MatchNames *[]*string `field:"optional" json:"matchNames" yaml:"matchNames"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go deleted file mode 100644 index 11d4b6c80..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelector.go +++ /dev/null @@ -1,15 +0,0 @@ -package monitoringcoreoscom - - -// Label selector to select the Kubernetes `Endpoints` objects. -type ServiceMonitorSpecSelector struct { - // matchExpressions is a list of label selector requirements. - // - // The requirements are ANDed. - MatchExpressions *[]*ServiceMonitorSpecSelectorMatchExpressions `field:"optional" json:"matchExpressions" yaml:"matchExpressions"` - // matchLabels is a map of {key,value} pairs. - // - // A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - MatchLabels *map[string]*string `field:"optional" json:"matchLabels" yaml:"matchLabels"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go b/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go deleted file mode 100644 index 0b28f1403..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitorSpecSelectorMatchExpressions.go +++ /dev/null @@ -1,17 +0,0 @@ -package monitoringcoreoscom - - -// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -type ServiceMonitorSpecSelectorMatchExpressions struct { - // key is the label key that the selector applies to. - Key *string `field:"required" json:"key" yaml:"key"` - // operator represents a key's relationship to a set of values. - // - // Valid operators are In, NotIn, Exists and DoesNotExist. - Operator *string `field:"required" json:"operator" yaml:"operator"` - // values is an array of string values. - // - // If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - Values *[]*string `field:"optional" json:"values" yaml:"values"` -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go deleted file mode 100644 index 3725fefa2..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitor__checks.go +++ /dev/null @@ -1,66 +0,0 @@ -//go:build !no_runtime_type_checking - -package monitoringcoreoscom - -import ( - "fmt" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - "github.com/aws/constructs-go/constructs/v10" -) - -func validateServiceMonitor_IsApiObjectParameters(o interface{}) error { - if o == nil { - return fmt.Errorf("parameter o is required, but nil was provided") - } - - return nil -} - -func validateServiceMonitor_IsConstructParameters(x interface{}) error { - if x == nil { - return fmt.Errorf("parameter x is required, but nil was provided") - } - - return nil -} - -func validateServiceMonitor_ManifestParameters(props *ServiceMonitorProps) error { - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - -func validateServiceMonitor_OfParameters(c constructs.IConstruct) error { - if c == nil { - return fmt.Errorf("parameter c is required, but nil was provided") - } - - return nil -} - -func validateNewServiceMonitorParameters(scope constructs.Construct, id *string, props *ServiceMonitorProps) error { - if scope == nil { - return fmt.Errorf("parameter scope is required, but nil was provided") - } - - if id == nil { - return fmt.Errorf("parameter id is required, but nil was provided") - } - - if props == nil { - return fmt.Errorf("parameter props is required, but nil was provided") - } - if err := _jsii_.ValidateStruct(props, func() string { return "parameter props" }); err != nil { - return err - } - - return nil -} - diff --git a/pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go b/pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go deleted file mode 100644 index f3f17a77a..000000000 --- a/pods/imports/monitoringcoreoscom/ServiceMonitor__no_checks.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build no_runtime_type_checking - -package monitoringcoreoscom - -// Building without runtime type checking enabled, so all the below just return nil - -func validateServiceMonitor_IsApiObjectParameters(o interface{}) error { - return nil -} - -func validateServiceMonitor_IsConstructParameters(x interface{}) error { - return nil -} - -func validateServiceMonitor_ManifestParameters(props *ServiceMonitorProps) error { - return nil -} - -func validateServiceMonitor_OfParameters(c constructs.IConstruct) error { - return nil -} - -func validateNewServiceMonitorParameters(scope constructs.Construct, id *string, props *ServiceMonitorProps) error { - return nil -} - diff --git a/pods/imports/monitoringcoreoscom/internal/types.go b/pods/imports/monitoringcoreoscom/internal/types.go deleted file mode 100644 index de3a04f73..000000000 --- a/pods/imports/monitoringcoreoscom/internal/types.go +++ /dev/null @@ -1,5 +0,0 @@ -package internal -import ( - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" -) -type Type__cdk8sApiObject = cdk8s.ApiObject diff --git a/pods/imports/monitoringcoreoscom/jsii/jsii.go b/pods/imports/monitoringcoreoscom/jsii/jsii.go deleted file mode 100644 index 026932dcd..000000000 --- a/pods/imports/monitoringcoreoscom/jsii/jsii.go +++ /dev/null @@ -1,28 +0,0 @@ -// Package jsii contains the functionaility needed for jsii packages to -// initialize their dependencies and themselves. Users should never need to use this package -// directly. If you find you need to - please report a bug at -// https://github.com/aws/jsii/issues/new/choose -package jsii - -import ( - _ "embed" - - _jsii_ "github.com/aws/jsii-runtime-go/runtime" - - constructs "github.com/aws/constructs-go/constructs/v10/jsii" - cdk8s "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2/jsii" -) - -//go:embed monitoringcoreoscom-0.0.0.tgz -var tarball []byte - -// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module. -// The implementation is idempotent (and hence safe to be called over and over). -func Initialize() { - // Ensure all dependencies are initialized - cdk8s.Initialize() - constructs.Initialize() - - // Load this library into the kernel - _jsii_.Load("monitoringcoreoscom", "0.0.0", tarball) -} diff --git a/pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz b/pods/imports/monitoringcoreoscom/jsii/monitoringcoreoscom-0.0.0.tgz deleted file mode 100644 index 1f6ebc2fb7906e88dc6c3697e2dcdde3f59dccdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34560 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

    onebU39fw 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 0 { - k8s.NewKubeConfigMap(n.chart, S(fmt.Sprintf("%s-configmap", podName)), &k8s.KubeConfigMapProps{ - Metadata: &k8s.ObjectMeta{ - Name: S(fmt.Sprintf("%s-configmap", podName)), + configMap := &corev1.ConfigMap{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "ConfigMap", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-configmap", podName), Namespace: namespace, }, - Data: &podConfig.ConfigMap, - }) + Data: podConfig.ConfigMap, + } + n.objects = append(n.objects, configMap) } - // Create Secrets if provided + // Create Secret if provided if len(podConfig.Secrets) > 0 { - k8s.NewKubeSecret(n.chart, S(fmt.Sprintf("%s-secret", podName)), &k8s.KubeSecretProps{ - Metadata: &k8s.ObjectMeta{ - Name: S(fmt.Sprintf("%s-secret", podName)), + secret := &corev1.Secret{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "Secret", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-secret", podName), Namespace: namespace, }, - StringData: &podConfig.Secrets, - }) + StringData: podConfig.Secrets, + } + n.objects = append(n.objects, secret) } // Define volumes and volume mounts - var volumes []*k8s.Volume - var volumeMounts []*k8s.VolumeMount + var volumes []corev1.Volume + var volumeMounts []corev1.VolumeMount // Prepare ConfigMap volumes idx := 0 for _, fileName := range SortedKeys(podConfig.ConfigMapMountPath) { mountPath := podConfig.ConfigMapMountPath[fileName] - volumes = append(volumes, &k8s.Volume{ - Name: S(fmt.Sprintf("%s-configmap-volume-%d", podName, idx)), - ConfigMap: &k8s.ConfigMapVolumeSource{ - Name: S(fmt.Sprintf("%s-configmap", podName)), - Items: &[]*k8s.KeyToPath{ - { - Key: S(fileName), - Path: S(fileName), + volumes = append(volumes, corev1.Volume{ + Name: fmt.Sprintf("%s-configmap-volume-%d", podName, idx), + VolumeSource: corev1.VolumeSource{ + ConfigMap: &corev1.ConfigMapVolumeSource{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: fmt.Sprintf("%s-configmap", podName), + }, + Items: []corev1.KeyToPath{ + { + Key: fileName, + Path: fileName, + }, }, }, }, }) - volumeMounts = append(volumeMounts, &k8s.VolumeMount{ - Name: S(fmt.Sprintf("%s-configmap-volume-%d", podName, idx)), + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: fmt.Sprintf("%s-configmap-volume-%d", podName, idx), MountPath: mountPath, - SubPath: S(fileName), + SubPath: fileName, }) idx++ } @@ -202,192 +205,244 @@ func (n *App) generate() error { idx = 0 for _, fileName := range SortedKeys(podConfig.SecretsMountPath) { mountPath := podConfig.SecretsMountPath[fileName] - volumes = append(volumes, &k8s.Volume{ - Name: S(fmt.Sprintf("%s-secret-volume-%d", podName, idx)), - Secret: &k8s.SecretVolumeSource{ - SecretName: S(fmt.Sprintf("%s-secret", podName)), - Items: &[]*k8s.KeyToPath{ - { - Key: S(fileName), - Path: S(fileName), + volumes = append(volumes, corev1.Volume{ + Name: fmt.Sprintf("%s-secret-volume-%d", podName, idx), + VolumeSource: corev1.VolumeSource{ + Secret: &corev1.SecretVolumeSource{ + SecretName: fmt.Sprintf("%s-secret", podName), + Items: []corev1.KeyToPath{ + { + Key: fileName, + Path: fileName, + }, }, }, }, }) - volumeMounts = append(volumeMounts, &k8s.VolumeMount{ - Name: S(fmt.Sprintf("%s-secret-volume-%d", podName, idx)), + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: fmt.Sprintf("%s-secret-volume-%d", podName, idx), MountPath: mountPath, - SubPath: S(fileName), + SubPath: fileName, }) idx++ } // Parse port mappings for the container - var containerPorts []*k8s.ContainerPort + var containerPorts []corev1.ContainerPort for i, portMapping := range podConfig.Ports { parts := strings.Split(portMapping, ":") if len(parts) != 2 { return fmt.Errorf("invalid port mapping: %s, should be \"$svc_port:$container_port\"", portMapping) } - containerPort, err := strconv.ParseFloat(parts[1], 64) + containerPort, err := strconv.ParseInt(parts[1], 10, 32) if err != nil { return fmt.Errorf("invalid container port number: %s", parts[1]) } - containerPorts = append(containerPorts, &k8s.ContainerPort{ - Name: S(fmt.Sprintf("port-%d", i)), - // Use HostPort field here to enable node exposed port - ContainerPort: &containerPort, + containerPorts = append(containerPorts, corev1.ContainerPort{ + Name: fmt.Sprintf("port-%d", i), + ContainerPort: int32(containerPort), }) } - container := &k8s.Container{ - Name: S(fmt.Sprintf("%s-container", podName)), - Image: podConfig.Image, - Env: podConfig.Env, - Ports: &containerPorts, - Resources: &k8s.ResourceRequirements{Limits: &podConfig.Limits, Requests: &podConfig.Requests}, - VolumeMounts: &volumeMounts, + // Convert resources to Kubernetes format + resourceRequests := corev1.ResourceList{} + for k, v := range podConfig.Requests { + quantity, err := resource.ParseQuantity(v) + if err != nil { + return fmt.Errorf("invalid resource request %s=%s: %w", k, v, err) + } + switch k { + case "cpu": + resourceRequests[corev1.ResourceCPU] = quantity + case "memory": + resourceRequests[corev1.ResourceMemory] = quantity + } + } + + resourceLimits := corev1.ResourceList{} + for k, v := range podConfig.Limits { + quantity, err := resource.ParseQuantity(v) + if err != nil { + return fmt.Errorf("invalid resource limit %s=%s: %w", k, v, err) + } + switch k { + case "cpu": + resourceLimits[corev1.ResourceCPU] = quantity + case "memory": + resourceLimits[corev1.ResourceMemory] = quantity + } + } + + container := corev1.Container{ + Name: fmt.Sprintf("%s-container", podName), + Image: *podConfig.Image, + Env: podConfig.Env, + Ports: containerPorts, + Resources: corev1.ResourceRequirements{ + Requests: resourceRequests, + Limits: resourceLimits, + }, + VolumeMounts: volumeMounts, SecurityContext: podConfig.ContainerSecurityContext, ReadinessProbe: podConfig.ReadinessProbe, } // Transform container command if podConfig.Command != nil { - cmds := strings.Split(*podConfig.Command, " ") - L.Info().Msg(fmt.Sprintf("commands: %s", strings.Join(cmds, " "))) - command := make([]*string, 0) - for _, cmd := range cmds { - command = append(command, S(cmd)) - } - container.Command = &command - L.Debug().Str("Cmd", *podConfig.Command).Msg("Container command") + container.Command = strings.Split(*podConfig.Command, " ") + log.Printf("Container command: %s", *podConfig.Command) } // Override replicas - replicas := I(1) + replicas := int32(1) if podConfig.Replicas != nil { - replicas = podConfig.Replicas + replicas = *podConfig.Replicas } - // Create Deployment or StatefulSet if any volume claim is present + // Create StatefulSet if volume claims present or StatefulSet flag is true if len(podConfig.VolumeClaimTemplates) > 0 || podConfig.StatefulSet { - k8s.NewKubeStatefulSet(n.chart, S(fmt.Sprintf("%s-statefulset", podName)), &k8s.KubeStatefulSetProps{ - Metadata: &k8s.ObjectMeta{ - Name: S(fmt.Sprintf("%s-statefulset", podName)), + statefulSet := &appsv1.StatefulSet{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "apps/v1", + Kind: "StatefulSet", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-statefulset", podName), Namespace: namespace, }, - Spec: &k8s.StatefulSetSpec{ - ServiceName: S(fmt.Sprintf("%s-svc", podName)), - Replicas: replicas, - Selector: &k8s.LabelSelector{ - MatchLabels: &labels, + Spec: appsv1.StatefulSetSpec{ + ServiceName: fmt.Sprintf("%s-svc", podName), + Replicas: &replicas, + Selector: &metav1.LabelSelector{ + MatchLabels: labels, }, - Template: &k8s.PodTemplateSpec{ - Metadata: &k8s.ObjectMeta{ - Name: S(fmt.Sprintf("%s-pp", podName)), - Labels: &labels, - Annotations: &annotations, + Template: corev1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-pod", podName), + Labels: labels, + Annotations: annotations, Namespace: namespace, }, - Spec: &k8s.PodSpec{ + Spec: corev1.PodSpec{ SecurityContext: podConfig.PodSecurityContext, - Containers: &[]*k8s.Container{container}, - Volumes: &volumes, + Containers: []corev1.Container{container}, + Volumes: volumes, }, }, - VolumeClaimTemplates: &podConfig.VolumeClaimTemplates, + VolumeClaimTemplates: podConfig.VolumeClaimTemplates, }, - }) + } + n.objects = append(n.objects, statefulSet) } else { - k8s.NewKubeDeployment(n.chart, S(fmt.Sprintf("%s-deployment", podName)), &k8s.KubeDeploymentProps{ - Metadata: &k8s.ObjectMeta{ - Name: S(fmt.Sprintf("%s-deployment", podName)), + // Create Deployment + deployment := &appsv1.Deployment{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "apps/v1", + Kind: "Deployment", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-deployment", podName), Namespace: namespace, }, - Spec: &k8s.DeploymentSpec{ - Replicas: podConfig.Replicas, - Selector: &k8s.LabelSelector{ - MatchLabels: &labels, + Spec: appsv1.DeploymentSpec{ + Replicas: &replicas, + Selector: &metav1.LabelSelector{ + MatchLabels: labels, }, - Template: &k8s.PodTemplateSpec{ - Metadata: &k8s.ObjectMeta{ - Labels: &labels, - Annotations: &annotations, + Template: corev1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + Labels: labels, + Annotations: annotations, Namespace: namespace, }, - Spec: &k8s.PodSpec{ + Spec: corev1.PodSpec{ SecurityContext: podConfig.PodSecurityContext, - Containers: &[]*k8s.Container{container}, - Volumes: &volumes, + Containers: []corev1.Container{container}, + Volumes: volumes, }, }, }, - }) + } + n.objects = append(n.objects, deployment) } // Parse port mappings for the service - var servicePorts []*k8s.ServicePort + var servicePorts []corev1.ServicePort for i, portMapping := range podConfig.Ports { parts := strings.Split(portMapping, ":") if len(parts) != 2 { log.Fatalf("Invalid port mapping: %s", portMapping) } - port, err := strconv.ParseFloat(parts[0], 64) + port, err := strconv.ParseInt(parts[0], 10, 32) if err != nil { log.Fatalf("Invalid port number: %s", parts[0]) } - containerPort, err := strconv.ParseFloat(parts[1], 64) + targetPort, err := strconv.ParseInt(parts[1], 10, 32) if err != nil { log.Fatalf("Invalid container port number: %s", parts[1]) } - servicePorts = append(servicePorts, &k8s.ServicePort{ - Name: S(fmt.Sprintf("port-%d", i)), - Port: &port, - TargetPort: k8s.IntOrString_FromNumber(&containerPort), + servicePorts = append(servicePorts, corev1.ServicePort{ + Name: fmt.Sprintf("port-%d", i), + Port: int32(port), + TargetPort: intstr.FromInt(int(targetPort)), }) } if len(servicePorts) > 0 { - // Create the KubeService with the parsed ports - k8s.NewKubeService(n.chart, S(fmt.Sprintf("%s-svc", podName)), &k8s.KubeServiceProps{ - Metadata: &k8s.ObjectMeta{ - Name: S(fmt.Sprintf("%s-svc", podName)), + // Create the Service + service := &corev1.Service{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "Service", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-svc", podName), Namespace: namespace, }, - Spec: &k8s.ServiceSpec{ - Type: S("LoadBalancer"), - Ports: &servicePorts, - Selector: &labels, + Spec: corev1.ServiceSpec{ + Type: corev1.ServiceTypeLoadBalancer, + Ports: servicePorts, + Selector: labels, }, - }) + } + n.objects = append(n.objects, service) } } - yaml := n.app.SynthYaml() - L.Debug().Msg(*yaml) - n.manifest = yaml + + // Generate YAML from all objects + yamlDocs := make([]string, 0, len(n.objects)) + for _, obj := range n.objects { + yamlBytes, err := yaml.Marshal(obj) + if err != nil { + return fmt.Errorf("failed to marshal object to YAML: %w", err) + } + yamlDocs = append(yamlDocs, string(yamlBytes)) + } + + fullYAML := strings.Join(yamlDocs, "---\n") + n.manifest = &fullYAML + log.Printf("Generated YAML:\n%s", fullYAML) return nil } func (n *App) apply() error { - if os.Getenv("SNAPSHOT_TESTS") == "true" { // coverage-ignore + if os.Getenv("SNAPSHOT_TESTS") == "true" { return nil } if n.manifest == nil { return fmt.Errorf("manifest is empty, nothing to generate") } - // re-create deployments dir - _ = os.RemoveAll(ManifestsDir) _ = os.Mkdir(ManifestsDir, os.ModePerm) // write generate manifest manifestFile := filepath.Join(ManifestsDir, fmt.Sprintf("pods-%s.tmp.yml", uuid.NewString()[0:5])) err := os.WriteFile(manifestFile, []byte(*n.manifest), 0o600) if err != nil { - return fmt.Errorf("failed to write manifest to file: %v", err) + return fmt.Errorf("failed to write manifest to file: %w", err) } // apply the manifest cmd := exec.Command("kubectl", "apply", "-f", manifestFile, "--wait=true") @@ -395,8 +450,7 @@ func (n *App) apply() error { if err != nil { return fmt.Errorf("failed to apply manifest: %v\nOutput: %s", err, string(output)) } - L.Info().Str("Path", manifestFile).Msg("Manifest applied successfully:") - L.Info().Msg(string(output)) + log.Printf("Manifest applied successfully: %s", manifestFile) return nil } @@ -409,3 +463,27 @@ func WaitReady(t time.Duration) error { func (n *App) Manifest() *string { return n.manifest } + +// NewKubernetesClient creates a new Kubernetes client +func NewKubernetesClient() (*kubernetes.Clientset, error) { + var config *rest.Config + var err error + + // Try in-cluster config first + config, err = rest.InClusterConfig() + if err != nil { + // Fall back to kubeconfig + kubeconfig := filepath.Join(homedir.HomeDir(), ".kube", "config") + config, err = clientcmd.BuildConfigFromFlags("", kubeconfig) + if err != nil { + return nil, fmt.Errorf("failed to get kubeconfig: %w", err) + } + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, fmt.Errorf("failed to create clientset: %w", err) + } + + return clientset, nil +} diff --git a/pods/pods_test.go b/pods/pods_test.go index 5540f90df..af9311320 100644 --- a/pods/pods_test.go +++ b/pods/pods_test.go @@ -124,13 +124,13 @@ func TestPods(t *testing.T) { Name: p.S("test-pod-1"), Image: p.S("nginx:latest"), Ports: []string{"80:80"}, - ConfigMap: map[string]*string{ - "config.toml": p.S(`test`), - "config2.toml": p.S(`test`), + ConfigMap: map[string]string{ + "config.toml": `test`, + "config2.toml": `test`, }, - ConfigMapMountPath: map[string]*string{ - "config.toml": p.S("/config.toml"), - "config2.toml": p.S("/config2.toml"), + ConfigMapMountPath: map[string]string{ + "config.toml": "/config.toml", + "config2.toml": "/config2.toml", }, }, }, @@ -146,28 +146,19 @@ func TestPods(t *testing.T) { Name: p.S("test-pod-1"), Image: p.S("nginx:latest"), Ports: []string{"80:80"}, - Secrets: map[string]*string{ - "secret.toml": p.S(`test`), - "secret2.toml": p.S(`test`), + Secrets: map[string]string{ + "secret.toml": `test`, + "secret2.toml": `test`, }, - SecretsMountPath: map[string]*string{ - "secret.toml": p.S("/secret.toml"), - "secret2.toml": p.S("/secret2.toml"), + SecretsMountPath: map[string]string{ + "secret.toml": "/secret.toml", + "secret2.toml": "/secret2.toml", }, }, }, }, validateManifest: defaultNoErr, }, - { - name: "test-volumes", - skipCI: true, - props: &p.Config{ - Namespace: p.S("test-volumes"), - Pods: []*p.PodConfig{p.PostgreSQL("pg-x", "postgres:15", p.ResourcesSmall(), p.ResourcesSmall(), p.S("1Gi"))}, - }, - validateManifest: defaultNoErr, - }, { name: "test-services", props: &p.Config{ From 6dd228c3203faba2dcc058606d2496c4d3b0b026 Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 11:00:39 +0100 Subject: [PATCH 09/16] simplify --- framework/components/blockchain/anvil.go | 7 +- framework/components/clnode/clnode.go | 11 +- framework/components/common.go | 5 - framework/components/postgres/postgres.go | 201 +++++++++--------- .../components/simple_node_set/node_set.go | 3 +- framework/go.mod | 2 +- pods/__snapshots__/pods_test.snap | 54 ++--- pods/pods.go | 60 +++--- pods/pods_test.go | 18 +- 9 files changed, 170 insertions(+), 191 deletions(-) delete mode 100644 framework/components/common.go diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 450f1bda4..5b96dd7d3 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -3,7 +3,6 @@ package blockchain import ( "context" "fmt" - "os" "strings" v1 "k8s.io/api/core/v1" @@ -11,7 +10,6 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components" ) const ( @@ -60,11 +58,8 @@ func newAnvil(ctx context.Context, in *Input) (*Output, error) { framework.L.Info().Any("Cmd", strings.Join(entryPoint, " ")).Msg("Creating anvil with command") - ns := os.Getenv(components.K8sNamespaceEnvVar) - - if ns != "" { + if pods.K8sEnabled() { _, err := pods.Run(&pods.Config{ - Namespace: pods.S(ns), Pods: []*pods.PodConfig{ { Name: pods.S(in.ContainerName), diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 40e2a7326..f6e7bc88d 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -13,8 +13,6 @@ import ( "text/template" "time" - "github.com/aws/jsii-runtime-go" - "github.com/smartcontractkit/chainlink-testing-framework/pods" v1 "k8s.io/api/core/v1" @@ -25,7 +23,6 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/postgres" ) @@ -295,13 +292,9 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, return nil, err } - ns := os.Getenv(components.K8sNamespaceEnvVar) // k8s deployment - if ns != "" { - pods.Lock() - defer pods.Unlock() + if pods.K8sEnabled() { _, err := pods.Run(&pods.Config{ - Namespace: pods.S(ns), Pods: []*pods.PodConfig{ { Name: pods.S(containerName), @@ -312,7 +305,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, Ports: []string{"6688:6688", "6690:6690"}, ContainerSecurityContext: &v1.SecurityContext{ // these are specific things we need to staging cluster - RunAsNonRoot: jsii.Bool(true), + RunAsNonRoot: pods.Bool(true), RunAsUser: pods.I64(14933), RunAsGroup: pods.I64(999), }, diff --git a/framework/components/common.go b/framework/components/common.go deleted file mode 100644 index 64dc0cab8..000000000 --- a/framework/components/common.go +++ /dev/null @@ -1,5 +0,0 @@ -package components - -const ( - K8sNamespaceEnvVar = "KUBERNETES_NAMESPACE" -) diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index fb31dab25..5caaa55cf 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -18,7 +18,6 @@ import ( tcwait "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components" ) const ( @@ -126,11 +125,9 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { var o *Output - ns := os.Getenv(components.K8sNamespaceEnvVar) // k8s deployment - if ns != "" { + if pods.K8sEnabled() { _, err := pods.Run(&pods.Config{ - Namespace: pods.S(ns), Pods: []*pods.PodConfig{ { Name: pods.S(in.Name), @@ -192,111 +189,111 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { Database, ), } - } else { - // local deployment - req := testcontainers.ContainerRequest{ - AlwaysPullImage: in.PullImage, - Image: in.Image, - Name: containerName, - Labels: framework.DefaultTCLabels(), - ExposedPorts: []string{bindPort}, - Networks: []string{framework.DefaultNetworkName}, - NetworkAliases: map[string][]string{ - framework.DefaultNetworkName: {containerName}, - }, - Env: map[string]string{ - "POSTGRES_USER": User, - "POSTGRES_PASSWORD": Password, - "POSTGRES_DB": Database, - }, - Cmd: []string{ - "postgres", "-c", - fmt.Sprintf("port=%s", Port), - "-c", "shared_preload_libraries=pg_stat_statements", - "-c", "pg_stat_statements.track=all", + return o, nil + } + // local deployment + req := testcontainers.ContainerRequest{ + AlwaysPullImage: in.PullImage, + Image: in.Image, + Name: containerName, + Labels: framework.DefaultTCLabels(), + ExposedPorts: []string{bindPort}, + Networks: []string{framework.DefaultNetworkName}, + NetworkAliases: map[string][]string{ + framework.DefaultNetworkName: {containerName}, + }, + Env: map[string]string{ + "POSTGRES_USER": User, + "POSTGRES_PASSWORD": Password, + "POSTGRES_DB": Database, + }, + Cmd: []string{ + "postgres", "-c", + fmt.Sprintf("port=%s", Port), + "-c", "shared_preload_libraries=pg_stat_statements", + "-c", "pg_stat_statements.track=all", + }, + Files: []testcontainers.ContainerFile{ + { + HostFilePath: initFile.Name(), + ContainerFilePath: "/docker-entrypoint-initdb.d/init.sql", + FileMode: 0o644, }, - Files: []testcontainers.ContainerFile{ - { - HostFilePath: initFile.Name(), - ContainerFilePath: "/docker-entrypoint-initdb.d/init.sql", - FileMode: 0o644, + }, + Mounts: testcontainers.ContainerMounts{ + { + Source: testcontainers.GenericVolumeMountSource{ + Name: fmt.Sprintf("%s%s", DBVolumeName, in.VolumeName), }, + Target: "/var/lib/postgresql/data", }, - Mounts: testcontainers.ContainerMounts{ + }, + WaitingFor: tcwait.ForExec([]string{ + "psql", "-h", "127.0.0.1", + "-U", User, "-p", Port, "-c", "select", "1", "-d", Database, + }). + WithStartupTimeout(3 * time.Minute). + WithPollInterval(200 * time.Millisecond), + } + req.HostConfigModifier = func(h *container.HostConfig) { + h.PortBindings = nat.PortMap{ + nat.Port(bindPort): []nat.PortBinding{ { - Source: testcontainers.GenericVolumeMountSource{ - Name: fmt.Sprintf("%s%s", DBVolumeName, in.VolumeName), - }, - Target: "/var/lib/postgresql/data", + HostIP: "0.0.0.0", + HostPort: strconv.Itoa(portToExpose), }, }, - WaitingFor: tcwait.ForExec([]string{ - "psql", "-h", "127.0.0.1", - "-U", User, "-p", Port, "-c", "select", "1", "-d", Database, - }). - WithStartupTimeout(3 * time.Minute). - WithPollInterval(200 * time.Millisecond), - } - req.HostConfigModifier = func(h *container.HostConfig) { - h.PortBindings = nat.PortMap{ - nat.Port(bindPort): []nat.PortBinding{ - { - HostIP: "0.0.0.0", - HostPort: strconv.Itoa(portToExpose), - }, - }, - } - framework.ResourceLimitsFunc(h, in.ContainerResources) - } - c, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ - ContainerRequest: req, - Started: true, - Reuse: true, - }) - if err != nil { - return nil, err - } - host, err := framework.GetHostWithContext(ctx, c) - if err != nil { - return nil, err - } - o = &Output{ - ContainerName: containerName, - InternalURL: fmt.Sprintf( - "postgresql://%s:%s@%s:%s/%s?sslmode=disable", - User, - Password, - containerName, - Port, - Database, - ), - Url: fmt.Sprintf( - "postgresql://%s:%s@%s:%d/%s?sslmode=disable", - User, - Password, - host, - portToExpose, - Database, - ), - } - if in.JDDatabase { - o.JDInternalURL = fmt.Sprintf( - "postgresql://%s:%s@%s:%s/%s?sslmode=disable", - User, - Password, - containerName, - Port, - JDDatabase, - ) - o.JDUrl = fmt.Sprintf( - "postgresql://%s:%s@%s:%d/%s?sslmode=disable", - User, - Password, - host, - portToExpose, - JDDatabase, - ) } + framework.ResourceLimitsFunc(h, in.ContainerResources) + } + c, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ + ContainerRequest: req, + Started: true, + Reuse: true, + }) + if err != nil { + return nil, err + } + host, err := framework.GetHostWithContext(ctx, c) + if err != nil { + return nil, err + } + o = &Output{ + ContainerName: containerName, + InternalURL: fmt.Sprintf( + "postgresql://%s:%s@%s:%s/%s?sslmode=disable", + User, + Password, + containerName, + Port, + Database, + ), + Url: fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + host, + portToExpose, + Database, + ), + } + if in.JDDatabase { + o.JDInternalURL = fmt.Sprintf( + "postgresql://%s:%s@%s:%s/%s?sslmode=disable", + User, + Password, + containerName, + Port, + JDDatabase, + ) + o.JDUrl = fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + host, + portToExpose, + JDDatabase, + ) } return o, nil } diff --git a/framework/components/simple_node_set/node_set.go b/framework/components/simple_node_set/node_set.go index 9b5def5a1..f279fe870 100644 --- a/framework/components/simple_node_set/node_set.go +++ b/framework/components/simple_node_set/node_set.go @@ -14,7 +14,6 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/clnode" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/postgres" @@ -205,7 +204,7 @@ func sharedDBSetup(ctx context.Context, in *Input, bcOut *blockchain.Output) (*O } sortNodeOutsByHostPort(nodeOuts) // wait for all K8s services at once - if os.Getenv(components.K8sNamespaceEnvVar) != "" { + if pods.K8sEnabled() { if err := pods.WaitReady(3 * time.Minute); err != nil { return nil, err } diff --git a/framework/go.mod b/framework/go.mod index 0c82e84eb..053bd7a65 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -12,7 +12,6 @@ require ( dario.cat/mergo v1.0.1 github.com/Masterminds/semver/v3 v3.4.0 github.com/avast/retry-go/v4 v4.6.1 - github.com/aws/jsii-runtime-go v1.126.0 github.com/block-vision/sui-go-sdk v1.0.6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/docker/docker v28.3.3+incompatible @@ -64,6 +63,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.55.6 // indirect github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect + github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/pods/__snapshots__/pods_test.snap b/pods/__snapshots__/pods_test.snap index 88bb8de54..60cb59755 100755 --- a/pods/__snapshots__/pods_test.snap +++ b/pods/__snapshots__/pods_test.snap @@ -11,14 +11,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-single-pod spec: containers: @@ -49,7 +49,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -68,14 +68,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-multiple-pods spec: containers: @@ -106,7 +106,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -122,14 +122,14 @@ spec: selector: matchLabels: app: test-pod-2 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-2 - generated-by: pods + generated-by: ctfv2 namespace: test-multiple-pods spec: containers: @@ -160,7 +160,7 @@ spec: targetPort: 80 selector: app: test-pod-2 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -179,14 +179,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-custom-resources spec: containers: @@ -217,7 +217,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -246,14 +246,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-configmaps spec: containers: @@ -304,7 +304,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -333,14 +333,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-secrets spec: containers: @@ -391,7 +391,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -410,14 +410,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-instances spec: containers: @@ -448,7 +448,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -563,14 +563,14 @@ spec: selector: matchLabels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: creationTimestamp: null labels: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 namespace: test-services spec: containers: @@ -601,7 +601,7 @@ spec: targetPort: 80 selector: app: test-pod-1 - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} @@ -621,7 +621,7 @@ spec: matchLabels: app: anvil chain.link/component: cl - generated-by: pods + generated-by: ctfv2 strategy: {} template: metadata: @@ -631,7 +631,7 @@ spec: labels: app: anvil chain.link/component: cl - generated-by: pods + generated-by: ctfv2 namespace: test-command spec: containers: @@ -667,7 +667,7 @@ spec: selector: app: anvil chain.link/component: cl - generated-by: pods + generated-by: ctfv2 type: LoadBalancer status: loadBalancer: {} diff --git a/pods/pods.go b/pods/pods.go index 11c92a5f0..64a95dd1c 100644 --- a/pods/pods.go +++ b/pods/pods.go @@ -3,7 +3,6 @@ package pods import ( "context" "fmt" - "log" "maps" "os" "os/exec" @@ -12,6 +11,8 @@ import ( "strings" "time" + "github.com/rs/zerolog/log" + "github.com/google/uuid" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -26,14 +27,16 @@ import ( ) const ( - ManifestsDir = "pods-out" + ManifestsDir = "pods-out" + K8sNamespaceEnvVar = "KUBERNETES_NAMESPACE" ) +// Client is a global K8s client that we use for all deployments var Client *API // Config describes Pods library configuration type Config struct { - Namespace *string + Namespace string Pods []*PodConfig } @@ -82,19 +85,26 @@ type PodConfig struct { type App struct { cfg *Config objects []any - manifest *string + manifest string +} + +func K8sEnabled() bool { + return os.Getenv(K8sNamespaceEnvVar) != "" } // Run generates and applies a new K8s YAML manifest func Run(cfg *Config) (string, error) { var err error - Client, err = NewAPI(*cfg.Namespace) + if cfg.Namespace == "" { + cfg.Namespace = os.Getenv(K8sNamespaceEnvVar) + } + Client, err = NewAPI(cfg.Namespace) if err != nil { return "", fmt.Errorf("failed to create K8s client: %w", err) } if Client != nil { - if err := Client.CreateNamespace(*cfg.Namespace); err != nil { - return "", fmt.Errorf("failed to create namespace: %s, %w", *cfg.Namespace, err) + if err := Client.CreateNamespace(cfg.Namespace); err != nil { + return "", fmt.Errorf("failed to create namespace: %s, %w", cfg.Namespace, err) } } p := &App{ @@ -103,23 +113,14 @@ func Run(cfg *Config) (string, error) { if err := p.generate(); err != nil { return "", err } - return *p.Manifest(), p.apply() -} - -// Lock and Unlock are no longer needed (kept for API compatibility) -func Lock() { - // No-op since we're not using JSII -} - -func Unlock() { - // No-op since we're not using JSII + return p.Manifest(), p.apply() } -// generate provides a simplified Docker Compose like API for K8s and generates YAML a manifest to deploy +// generate provides a simplified template that is focused on deploying K8s Pods func (n *App) generate() error { for _, podConfig := range n.cfg.Pods { podName := *podConfig.Name - namespace := *n.cfg.Namespace + namespace := n.cfg.Namespace // Define resources if podConfig.Requests == nil { @@ -130,7 +131,7 @@ func (n *App) generate() error { } // Define labels - labels := map[string]string{"app": podName, "generated-by": "pods"} + labels := map[string]string{"app": podName, "generated-by": "ctfv2"} maps.Copy(labels, podConfig.Labels) // Define annotations @@ -373,17 +374,17 @@ func (n *App) generate() error { for i, portMapping := range podConfig.Ports { parts := strings.Split(portMapping, ":") if len(parts) != 2 { - log.Fatalf("Invalid port mapping: %s", portMapping) + L.Fatal().Msgf("Invalid port mapping: %s", portMapping) } port, err := strconv.ParseInt(parts[0], 10, 32) if err != nil { - log.Fatalf("Invalid port number: %s", parts[0]) + L.Fatal().Msgf("Invalid port number: %s", parts[0]) } targetPort, err := strconv.ParseInt(parts[1], 10, 32) if err != nil { - log.Fatalf("Invalid container port number: %s", parts[1]) + L.Fatal().Msgf("Invalid container port number: %s", parts[1]) } servicePorts = append(servicePorts, corev1.ServicePort{ @@ -424,9 +425,8 @@ func (n *App) generate() error { yamlDocs = append(yamlDocs, string(yamlBytes)) } - fullYAML := strings.Join(yamlDocs, "---\n") - n.manifest = &fullYAML - log.Printf("Generated YAML:\n%s", fullYAML) + n.manifest = strings.Join(yamlDocs, "---\n") + L.Debug().Msgf("Generated YAML:\n%s", n.manifest) return nil } @@ -434,13 +434,13 @@ func (n *App) apply() error { if os.Getenv("SNAPSHOT_TESTS") == "true" { return nil } - if n.manifest == nil { + if n.manifest == "" { return fmt.Errorf("manifest is empty, nothing to generate") } _ = os.Mkdir(ManifestsDir, os.ModePerm) // write generate manifest manifestFile := filepath.Join(ManifestsDir, fmt.Sprintf("pods-%s.tmp.yml", uuid.NewString()[0:5])) - err := os.WriteFile(manifestFile, []byte(*n.manifest), 0o600) + err := os.WriteFile(manifestFile, []byte(n.manifest), 0o600) if err != nil { return fmt.Errorf("failed to write manifest to file: %w", err) } @@ -450,7 +450,7 @@ func (n *App) apply() error { if err != nil { return fmt.Errorf("failed to apply manifest: %v\nOutput: %s", err, string(output)) } - log.Printf("Manifest applied successfully: %s", manifestFile) + L.Info().Str("Manifest", manifestFile).Msg("Manifest applied successfully") return nil } @@ -460,7 +460,7 @@ func WaitReady(t time.Duration) error { } // Manifest returns current generated YAML manifest -func (n *App) Manifest() *string { +func (n *App) Manifest() string { return n.manifest } diff --git a/pods/pods_test.go b/pods/pods_test.go index af9311320..140cd8ecc 100644 --- a/pods/pods_test.go +++ b/pods/pods_test.go @@ -21,7 +21,7 @@ func TestPods(t *testing.T) { { name: "test-single-pod", props: &p.Config{ - Namespace: p.S("test-single-pod"), + Namespace: "test-single-pod", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -35,7 +35,7 @@ func TestPods(t *testing.T) { { name: "test-command", props: &p.Config{ - Namespace: p.S("test-command"), + Namespace: "test-command", Pods: []*p.PodConfig{ { Name: p.S("anvil"), @@ -52,7 +52,7 @@ func TestPods(t *testing.T) { { name: "test-instances", props: &p.Config{ - Namespace: p.S("test-instances"), + Namespace: "test-instances", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -67,7 +67,7 @@ func TestPods(t *testing.T) { { name: "test-multiple-pods", props: &p.Config{ - Namespace: p.S("test-multiple-pods"), + Namespace: "test-multiple-pods", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -86,7 +86,7 @@ func TestPods(t *testing.T) { { name: "test-custom-resources", props: &p.Config{ - Namespace: p.S("test-custom-resources"), + Namespace: "test-custom-resources", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -102,7 +102,7 @@ func TestPods(t *testing.T) { { name: "test-invalid-ports", props: &p.Config{ - Namespace: p.S("test-invalid-ports"), + Namespace: "test-invalid-ports", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -118,7 +118,7 @@ func TestPods(t *testing.T) { { name: "test-configmaps", props: &p.Config{ - Namespace: p.S("test-configmaps"), + Namespace: "test-configmaps", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -140,7 +140,7 @@ func TestPods(t *testing.T) { { name: "test-secrets", props: &p.Config{ - Namespace: p.S("test-secrets"), + Namespace: "test-secrets", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), @@ -162,7 +162,7 @@ func TestPods(t *testing.T) { { name: "test-services", props: &p.Config{ - Namespace: p.S("test-services"), + Namespace: "test-services", Pods: []*p.PodConfig{ { Name: p.S("test-pod-1"), From 92070c64f0532bc56f3667463c86335ca10ffece Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 11:12:42 +0100 Subject: [PATCH 10/16] merge modules --- book/go.mod | 2 - book/go.sum | 16 +- framework/components/blockchain/anvil.go | 2 +- framework/components/clnode/clnode.go | 2 +- framework/components/dockercompose/go.mod | 5 +- framework/components/fake/go.mod | 5 +- framework/components/postgres/postgres.go | 2 +- .../components/simple_node_set/node_set.go | 2 +- framework/examples/chip_ingress/go.mod | 1 - framework/examples/myproject/go.mod | 2 - framework/examples/myproject/go.sum | 16 +- framework/examples/myproject_cll/go.mod | 2 - framework/examples/myproject_cll/go.sum | 16 +- framework/go.mod | 21 +- framework/go.sum | 20 +- {pods => framework/pods}/.githooks/go-lint | 0 {pods => framework/pods}/.githooks/go-test | 0 {pods => framework/pods}/.githooks/typos | 0 .../.github/workflows/pods-test-deploy.yml | 0 .../pods}/.github/workflows/pods-test.yml | 0 {pods => framework/pods}/.gitignore | 0 {pods => framework/pods}/.golangci.yaml | 0 .../pods}/.pre-commit-config.yaml | 0 {pods => framework/pods}/.testcoverage.yml | 0 {pods => framework/pods}/Justfile | 0 {pods => framework/pods}/README.md | 2 +- .../pods}/__snapshots__/pods_test.snap | 0 {pods => framework/pods}/_typos.toml | 0 {pods => framework/pods}/client.go | 0 {pods => framework/pods}/cover.svg | 0 .../pods}/crds/monitoring.coreos.com.yml | 0 {pods => framework/pods}/defaults.go | 0 {pods => framework/pods}/devbox.json | 0 {pods => framework/pods}/devbox.lock | 0 {pods => framework/pods}/forward.go | 0 {pods => framework/pods}/kind.yml | 0 {pods => framework/pods}/log.go | 0 {pods => framework/pods}/pods.go | 0 {pods => framework/pods}/pods_test.go | 2 +- {pods => framework/pods}/sync.go | 0 pods/go.mod | 80 ------- pods/go.sum | 218 ------------------ 42 files changed, 58 insertions(+), 358 deletions(-) rename {pods => framework/pods}/.githooks/go-lint (100%) rename {pods => framework/pods}/.githooks/go-test (100%) rename {pods => framework/pods}/.githooks/typos (100%) rename {pods => framework/pods}/.github/workflows/pods-test-deploy.yml (100%) rename {pods => framework/pods}/.github/workflows/pods-test.yml (100%) rename {pods => framework/pods}/.gitignore (100%) rename {pods => framework/pods}/.golangci.yaml (100%) rename {pods => framework/pods}/.pre-commit-config.yaml (100%) rename {pods => framework/pods}/.testcoverage.yml (100%) rename {pods => framework/pods}/Justfile (100%) rename {pods => framework/pods}/README.md (90%) rename {pods => framework/pods}/__snapshots__/pods_test.snap (100%) rename {pods => framework/pods}/_typos.toml (100%) rename {pods => framework/pods}/client.go (100%) rename {pods => framework/pods}/cover.svg (100%) rename {pods => framework/pods}/crds/monitoring.coreos.com.yml (100%) rename {pods => framework/pods}/defaults.go (100%) rename {pods => framework/pods}/devbox.json (100%) rename {pods => framework/pods}/devbox.lock (100%) rename {pods => framework/pods}/forward.go (100%) rename {pods => framework/pods}/kind.yml (100%) rename {pods => framework/pods}/log.go (100%) rename {pods => framework/pods}/pods.go (100%) rename {pods => framework/pods}/pods_test.go (98%) rename {pods => framework/pods}/sync.go (100%) delete mode 100644 pods/go.mod delete mode 100644 pods/go.sum diff --git a/book/go.mod b/book/go.mod index 428b3c87a..bab690e93 100644 --- a/book/go.mod +++ b/book/go.mod @@ -5,7 +5,6 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../framework github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../framework/components/fake - github.com/smartcontractkit/chainlink-testing-framework/pods => ../pods ) require ( @@ -49,7 +48,6 @@ require ( github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/testify v1.11.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect diff --git a/book/go.sum b/book/go.sum index 6b0574ddf..750c9cc64 100644 --- a/book/go.sum +++ b/book/go.sum @@ -149,12 +149,10 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= -github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= -github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= -github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-snaps v0.5.19 h1:hUJlCQOpTt1M+kSisMwioDWZDWpDtdAvUhvWCx1YGW0= +github.com/gkampitakis/go-snaps v0.5.19/go.mod h1:gC3YqxQTPyIXvQrw/Vpt3a8VqR1MO8sVpZFWN4DGwNs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -185,8 +183,8 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= -github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -400,6 +398,8 @@ github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWR github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 5b96dd7d3..8018f7906 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -7,7 +7,7 @@ import ( v1 "k8s.io/api/core/v1" - "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework" ) diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index f6e7bc88d..844064a5f 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -13,7 +13,7 @@ import ( "text/template" "time" - "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" v1 "k8s.io/api/core/v1" diff --git a/framework/components/dockercompose/go.mod b/framework/components/dockercompose/go.mod index dedae154e..46644b3f1 100644 --- a/framework/components/dockercompose/go.mod +++ b/framework/components/dockercompose/go.mod @@ -2,10 +2,7 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework/compone go 1.25.3 -replace ( - github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework - github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods -) +replace github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework // make vulnerability scanner happy replace github.com/containerd/containerd/v2 => github.com/containerd/containerd/v2 v2.1.5 diff --git a/framework/components/fake/go.mod b/framework/components/fake/go.mod index 5caca9874..b8f04a175 100644 --- a/framework/components/fake/go.mod +++ b/framework/components/fake/go.mod @@ -2,10 +2,7 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework/compone go 1.24.4 -replace ( - github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework - github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods -) +replace github.com/smartcontractkit/chainlink-testing-framework/framework => ../../../framework require ( github.com/docker/docker v28.3.3+incompatible diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index 5caaa55cf..9eecd8c6f 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -10,7 +10,7 @@ import ( v1 "k8s.io/api/core/v1" - "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" diff --git a/framework/components/simple_node_set/node_set.go b/framework/components/simple_node_set/node_set.go index f279fe870..c9c1f68d8 100644 --- a/framework/components/simple_node_set/node_set.go +++ b/framework/components/simple_node_set/node_set.go @@ -11,7 +11,7 @@ import ( "golang.org/x/sync/errgroup" - "github.com/smartcontractkit/chainlink-testing-framework/pods" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" diff --git a/framework/examples/chip_ingress/go.mod b/framework/examples/chip_ingress/go.mod index 71b2da0cb..e25ecada8 100644 --- a/framework/examples/chip_ingress/go.mod +++ b/framework/examples/chip_ingress/go.mod @@ -5,7 +5,6 @@ go 1.25.3 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/dockercompose => ../../components/dockercompose - github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods ) // make vulnerability scanner happy diff --git a/framework/examples/myproject/go.mod b/framework/examples/myproject/go.mod index 13fb224e5..2313fee34 100644 --- a/framework/examples/myproject/go.mod +++ b/framework/examples/myproject/go.mod @@ -5,7 +5,6 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../../components/fake - github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods github.com/smartcontractkit/chainlink-testing-framework/wasp => ../../../wasp ) @@ -53,7 +52,6 @@ require ( github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/rs/xid v1.6.0 // indirect github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 // indirect - github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/cobra v1.9.1 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/tjhop/slog-gokit v0.1.3 // indirect diff --git a/framework/examples/myproject/go.sum b/framework/examples/myproject/go.sum index e84c2abda..8dc235180 100644 --- a/framework/examples/myproject/go.sum +++ b/framework/examples/myproject/go.sum @@ -377,12 +377,10 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= -github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= -github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= -github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-snaps v0.5.19 h1:hUJlCQOpTt1M+kSisMwioDWZDWpDtdAvUhvWCx1YGW0= +github.com/gkampitakis/go-snaps v0.5.19/go.mod h1:gC3YqxQTPyIXvQrw/Vpt3a8VqR1MO8sVpZFWN4DGwNs= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= @@ -465,8 +463,8 @@ github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= -github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -1032,6 +1030,8 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sercand/kuberesolver/v5 v5.1.1 h1:CYH+d67G0sGBj7q5wLK61yzqJJ8gLLC8aeprPTHb6yY= github.com/sercand/kuberesolver/v5 v5.1.1/go.mod h1:Fs1KbKhVRnB2aDWN12NjKCB+RgYMWZJ294T3BtmVCpQ= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= github.com/sethvargo/go-retry v0.2.4/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= diff --git a/framework/examples/myproject_cll/go.mod b/framework/examples/myproject_cll/go.mod index 90168fc11..dde6fe725 100644 --- a/framework/examples/myproject_cll/go.mod +++ b/framework/examples/myproject_cll/go.mod @@ -5,7 +5,6 @@ go 1.24.4 replace ( github.com/smartcontractkit/chainlink-testing-framework/framework => ../../ github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake => ../../components/fake - github.com/smartcontractkit/chainlink-testing-framework/pods => ../../../pods github.com/smartcontractkit/chainlink-testing-framework/wasp => ../../../wasp ) @@ -115,7 +114,6 @@ require ( github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/supranational/blst v0.3.13 // indirect github.com/testcontainers/testcontainers-go v0.37.0 // indirect diff --git a/framework/examples/myproject_cll/go.sum b/framework/examples/myproject_cll/go.sum index 62daac8b3..bf60f418c 100644 --- a/framework/examples/myproject_cll/go.sum +++ b/framework/examples/myproject_cll/go.sum @@ -124,12 +124,10 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= -github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= -github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= -github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-snaps v0.5.19 h1:hUJlCQOpTt1M+kSisMwioDWZDWpDtdAvUhvWCx1YGW0= +github.com/gkampitakis/go-snaps v0.5.19/go.mod h1:gC3YqxQTPyIXvQrw/Vpt3a8VqR1MO8sVpZFWN4DGwNs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -159,8 +157,8 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= -github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -327,6 +325,8 @@ github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWR github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= diff --git a/framework/go.mod b/framework/go.mod index 053bd7a65..6a63b8262 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -3,7 +3,6 @@ module github.com/smartcontractkit/chainlink-testing-framework/framework go 1.24.2 replace ( - github.com/smartcontractkit/chainlink-testing-framework/pods => ../pods github.com/smartcontractkit/chainlink-testing-framework/wasp => ../wasp github.com/smartcontractkit/chainlink-testing-framework/wasp-tests => ../wasp/examples ) @@ -12,11 +11,14 @@ require ( dario.cat/mergo v1.0.1 github.com/Masterminds/semver/v3 v3.4.0 github.com/avast/retry-go/v4 v4.6.1 + github.com/aws/jsii-runtime-go v1.126.0 github.com/block-vision/sui-go-sdk v1.0.6 + github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/docker/docker v28.3.3+incompatible github.com/docker/go-connections v0.5.0 github.com/ethereum/go-ethereum v1.15.0 + github.com/gkampitakis/go-snaps v0.5.19 github.com/go-playground/locales v0.14.1 github.com/go-playground/universal-translator v0.18.1 github.com/go-playground/validator/v10 v10.22.1 @@ -30,7 +32,6 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.33.0 - github.com/smartcontractkit/chainlink-testing-framework/pods v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.2 github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.37.0 @@ -43,6 +44,9 @@ require ( google.golang.org/grpc v1.71.0 gopkg.in/guregu/null.v4 v4.0.0 k8s.io/api v0.32.3 + k8s.io/apimachinery v0.32.3 + k8s.io/client-go v0.32.3 + sigs.k8s.io/yaml v1.4.0 ) require ( @@ -63,7 +67,6 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.55.6 // indirect github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -71,7 +74,6 @@ require ( github.com/bytedance/sonic v1.11.6 // indirect github.com/bytedance/sonic/loader v0.1.1 // indirect github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect @@ -109,6 +111,7 @@ require ( github.com/gabriel-vasile/mimetype v1.4.6 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/gin-gonic/gin v1.10.0 // indirect + github.com/gkampitakis/ciinfo v0.3.2 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -126,6 +129,7 @@ require ( github.com/go-openapi/validate v0.24.0 // indirect github.com/go-redsync/redsync/v4 v4.13.0 // indirect github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-yaml v1.18.0 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -170,11 +174,14 @@ require ( github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/klauspost/compress v1.18.2 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a // indirect github.com/magiconair/properties v1.8.10 // indirect github.com/mailru/easyjson v0.7.7 // indirect + github.com/maruel/natural v1.1.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.5.1 // indirect @@ -223,10 +230,12 @@ require ( github.com/prometheus/prometheus v0.302.0 // indirect github.com/prometheus/sigv4 v0.1.1 // indirect github.com/redis/go-redis/v9 v9.7.0 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/rs/xid v1.6.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect github.com/sercand/kuberesolver/v5 v5.1.1 // indirect + github.com/sergi/go-diff v1.4.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/shopspring/decimal v1.4.0 // indirect @@ -240,6 +249,7 @@ require ( github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect + github.com/tidwall/sjson v1.2.5 // indirect github.com/tjhop/slog-gokit v0.1.3 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect @@ -291,15 +301,12 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apimachinery v0.32.3 // indirect - k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect ) replace ( diff --git a/framework/go.sum b/framework/go.sum index a732eb332..0fe56b246 100644 --- a/framework/go.sum +++ b/framework/go.sum @@ -161,6 +161,7 @@ github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOV github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -233,12 +234,10 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= -github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= -github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= -github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-snaps v0.5.19 h1:hUJlCQOpTt1M+kSisMwioDWZDWpDtdAvUhvWCx1YGW0= +github.com/gkampitakis/go-snaps v0.5.19/go.mod h1:gC3YqxQTPyIXvQrw/Vpt3a8VqR1MO8sVpZFWN4DGwNs= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -305,8 +304,8 @@ github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= -github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -666,6 +665,7 @@ github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwy github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -721,6 +721,7 @@ github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5 github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= @@ -739,6 +740,8 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sercand/kuberesolver/v5 v5.1.1 h1:CYH+d67G0sGBj7q5wLK61yzqJJ8gLLC8aeprPTHb6yY= github.com/sercand/kuberesolver/v5 v5.1.1/go.mod h1:Fs1KbKhVRnB2aDWN12NjKCB+RgYMWZJ294T3BtmVCpQ= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= @@ -784,6 +787,7 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/testcontainers/testcontainers-go v0.37.0 h1:L2Qc0vkTw2EHWQ08djon0D2uw7Z/PtHS/QzZZ5Ra/hg= github.com/testcontainers/testcontainers-go v0.37.0/go.mod h1:QPzbxZhQ6Bclip9igjLFj6z0hs01bU8lrl2dHQmgFGM= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= diff --git a/pods/.githooks/go-lint b/framework/pods/.githooks/go-lint similarity index 100% rename from pods/.githooks/go-lint rename to framework/pods/.githooks/go-lint diff --git a/pods/.githooks/go-test b/framework/pods/.githooks/go-test similarity index 100% rename from pods/.githooks/go-test rename to framework/pods/.githooks/go-test diff --git a/pods/.githooks/typos b/framework/pods/.githooks/typos similarity index 100% rename from pods/.githooks/typos rename to framework/pods/.githooks/typos diff --git a/pods/.github/workflows/pods-test-deploy.yml b/framework/pods/.github/workflows/pods-test-deploy.yml similarity index 100% rename from pods/.github/workflows/pods-test-deploy.yml rename to framework/pods/.github/workflows/pods-test-deploy.yml diff --git a/pods/.github/workflows/pods-test.yml b/framework/pods/.github/workflows/pods-test.yml similarity index 100% rename from pods/.github/workflows/pods-test.yml rename to framework/pods/.github/workflows/pods-test.yml diff --git a/pods/.gitignore b/framework/pods/.gitignore similarity index 100% rename from pods/.gitignore rename to framework/pods/.gitignore diff --git a/pods/.golangci.yaml b/framework/pods/.golangci.yaml similarity index 100% rename from pods/.golangci.yaml rename to framework/pods/.golangci.yaml diff --git a/pods/.pre-commit-config.yaml b/framework/pods/.pre-commit-config.yaml similarity index 100% rename from pods/.pre-commit-config.yaml rename to framework/pods/.pre-commit-config.yaml diff --git a/pods/.testcoverage.yml b/framework/pods/.testcoverage.yml similarity index 100% rename from pods/.testcoverage.yml rename to framework/pods/.testcoverage.yml diff --git a/pods/Justfile b/framework/pods/Justfile similarity index 100% rename from pods/Justfile rename to framework/pods/Justfile diff --git a/pods/README.md b/framework/pods/README.md similarity index 90% rename from pods/README.md rename to framework/pods/README.md index 7da26ae09..fd41ee93c 100644 --- a/pods/README.md +++ b/framework/pods/README.md @@ -11,7 +11,7 @@ It meant to be used with `CTFv2` framework to run components on `K8s`. ### Real world example (Chainlink Node Set) In this example we'll spin up a local `Kind` cluster and deploy a Chainlink cluster, -just [40 lines](https://github.com/smartcontractkit/chainlink-testing-framework/pods/blob/master/examples/nodeset_test.go) of code (without product +just [40 lines](https://github.com/smartcontractkit/chainlink-testing-framework/framework/pods/blob/master/examples/nodeset_test.go) of code (without product configuration). Follow the [README](./environment/README.md) diff --git a/pods/__snapshots__/pods_test.snap b/framework/pods/__snapshots__/pods_test.snap similarity index 100% rename from pods/__snapshots__/pods_test.snap rename to framework/pods/__snapshots__/pods_test.snap diff --git a/pods/_typos.toml b/framework/pods/_typos.toml similarity index 100% rename from pods/_typos.toml rename to framework/pods/_typos.toml diff --git a/pods/client.go b/framework/pods/client.go similarity index 100% rename from pods/client.go rename to framework/pods/client.go diff --git a/pods/cover.svg b/framework/pods/cover.svg similarity index 100% rename from pods/cover.svg rename to framework/pods/cover.svg diff --git a/pods/crds/monitoring.coreos.com.yml b/framework/pods/crds/monitoring.coreos.com.yml similarity index 100% rename from pods/crds/monitoring.coreos.com.yml rename to framework/pods/crds/monitoring.coreos.com.yml diff --git a/pods/defaults.go b/framework/pods/defaults.go similarity index 100% rename from pods/defaults.go rename to framework/pods/defaults.go diff --git a/pods/devbox.json b/framework/pods/devbox.json similarity index 100% rename from pods/devbox.json rename to framework/pods/devbox.json diff --git a/pods/devbox.lock b/framework/pods/devbox.lock similarity index 100% rename from pods/devbox.lock rename to framework/pods/devbox.lock diff --git a/pods/forward.go b/framework/pods/forward.go similarity index 100% rename from pods/forward.go rename to framework/pods/forward.go diff --git a/pods/kind.yml b/framework/pods/kind.yml similarity index 100% rename from pods/kind.yml rename to framework/pods/kind.yml diff --git a/pods/log.go b/framework/pods/log.go similarity index 100% rename from pods/log.go rename to framework/pods/log.go diff --git a/pods/pods.go b/framework/pods/pods.go similarity index 100% rename from pods/pods.go rename to framework/pods/pods.go diff --git a/pods/pods_test.go b/framework/pods/pods_test.go similarity index 98% rename from pods/pods_test.go rename to framework/pods/pods_test.go index 140cd8ecc..6edb62e89 100644 --- a/pods/pods_test.go +++ b/framework/pods/pods_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/gkampitakis/go-snaps/snaps" - p "github.com/smartcontractkit/chainlink-testing-framework/pods" + p "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/stretchr/testify/require" ) diff --git a/pods/sync.go b/framework/pods/sync.go similarity index 100% rename from pods/sync.go rename to framework/pods/sync.go diff --git a/pods/go.mod b/pods/go.mod deleted file mode 100644 index 8276dc026..000000000 --- a/pods/go.mod +++ /dev/null @@ -1,80 +0,0 @@ -module github.com/smartcontractkit/chainlink-testing-framework/pods - -go 1.24.0 - -require ( - github.com/aws/jsii-runtime-go v1.126.0 - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 - github.com/gkampitakis/go-snaps v0.5.11 - github.com/google/uuid v1.6.0 - github.com/rs/zerolog v1.33.0 - github.com/stretchr/testify v1.11.1 - k8s.io/api v0.32.3 - k8s.io/apimachinery v0.32.3 - k8s.io/client-go v0.32.3 - sigs.k8s.io/yaml v1.4.0 -) - -require ( - github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/fatih/color v1.18.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/gkampitakis/ciinfo v0.3.1 // indirect - github.com/gkampitakis/go-diff v1.3.2 // indirect - github.com/go-logr/logr v1.4.2 // indirect - github.com/go-openapi/jsonpointer v0.21.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.23.0 // indirect - github.com/goccy/go-yaml v1.15.13 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.9 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/maruel/natural v1.1.1 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/moby/spdystream v0.5.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.1 // indirect - github.com/tidwall/sjson v1.2.5 // indirect - github.com/x448/float16 v0.8.4 // indirect - github.com/yuin/goldmark v1.4.13 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.27.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.7.0 // indirect - golang.org/x/tools v0.36.0 // indirect - google.golang.org/protobuf v1.35.1 // indirect - gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect -) diff --git a/pods/go.sum b/pods/go.sum deleted file mode 100644 index c65e63094..000000000 --- a/pods/go.sum +++ /dev/null @@ -1,218 +0,0 @@ -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gkampitakis/ciinfo v0.3.1 h1:lzjbemlGI4Q+XimPg64ss89x8Mf3xihJqy/0Mgagapo= -github.com/gkampitakis/ciinfo v0.3.1/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= -github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= -github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.11 h1:LFG0ggUKR+KEiiaOvFCmLgJ5NO2zf93AxxddkBn3LdQ= -github.com/gkampitakis/go-snaps v0.5.11/go.mod h1:PcKmy8q5Se7p48ywpogN5Td13reipz1Iivah4wrTIvY= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/goccy/go-yaml v1.15.13 h1:Xd87Yddmr2rC1SLLTm2MNDcTjeO/GYo0JGiww6gSTDg= -github.com/goccy/go-yaml v1.15.13/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= -github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= -github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= -github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= -github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= -github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= -github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= -github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= -github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= -gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= -k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 98e324c5b49f8d3a9ce737d46843f13daf8b5cfc Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 11:58:21 +0100 Subject: [PATCH 11/16] ci --- .../workflows/pods-test.yml | 15 +-- framework/pods/.golangci.yaml | 76 --------------- framework/pods/.pre-commit-config.yaml | 20 ---- framework/pods/.testcoverage.yml | 11 --- framework/pods/_typos.toml | 5 - framework/pods/client.go | 93 +------------------ 6 files changed, 6 insertions(+), 214 deletions(-) rename framework/pods/.github/workflows/pods-test-deploy.yml => .github/workflows/pods-test.yml (79%) delete mode 100644 framework/pods/.golangci.yaml delete mode 100644 framework/pods/.pre-commit-config.yaml delete mode 100644 framework/pods/.testcoverage.yml delete mode 100644 framework/pods/_typos.toml diff --git a/framework/pods/.github/workflows/pods-test-deploy.yml b/.github/workflows/pods-test.yml similarity index 79% rename from framework/pods/.github/workflows/pods-test-deploy.yml rename to .github/workflows/pods-test.yml index 5afd16789..11fe8367c 100644 --- a/framework/pods/.github/workflows/pods-test-deploy.yml +++ b/.github/workflows/pods-test.yml @@ -1,5 +1,8 @@ -name: Deploy Tests +name: Snapshot Tests on: [push] +defaults: + run: + working-directory: framework/pods concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true @@ -13,7 +16,7 @@ jobs: fail-fast: false matrix: test: - - test: test-deploy + - test: test vm: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -36,14 +39,6 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} just-version: '1.39.0' - - name: Create k8s Kind Cluster - uses: helm/kind-action@v1 - name: Run tests - env: - CI: true run: | just ${{ matrix.test.test }} - - name: Check test coverage - uses: vladopajic/go-test-coverage@v2 - with: - config: ./.testcoverage.yml \ No newline at end of file diff --git a/framework/pods/.golangci.yaml b/framework/pods/.golangci.yaml deleted file mode 100644 index 7f4ef66e8..000000000 --- a/framework/pods/.golangci.yaml +++ /dev/null @@ -1,76 +0,0 @@ -run: - concurrency: 4 - timeout: 5m -linters: - enable: - - errcheck - - gosimple - - govet - - ineffassign - - staticcheck - - typecheck - - unused - - exhaustive - - copyloopvar - - revive - - goimports - - gosec - - misspell - - errorlint - - contextcheck -linters-settings: - exhaustive: - default-signifies-exhaustive: true - goimports: - local-prefixes: github.com/smartcontractkit/chainlink-testing-framework/ - gosec: - exclude-generated: true - errorlint: - # Allow formatting of errors without %w - errorf: false - revive: - confidence: 0.8 - rules: - - name: blank-imports - - name: context-as-argument - - name: context-keys-type - - name: dot-imports - - name: error-return - - name: error-strings - - name: error-naming - - name: if-return - - name: increment-decrement - # - name: var-naming - - name: var-declaration - - name: package-comments - - name: range - - name: receiver-naming - - name: time-naming - - name: unexported-return - - name: indent-error-flow - - name: errorf - - name: exported - - name: empty-block - - name: superfluous-else - # - name: unused-parameter - - name: unreachable-code - - name: redefines-builtin-id - - name: waitgroup-by-value - - name: unconditional-recursion - - name: struct-tag - - name: string-format - - name: string-of-int - - name: range-val-address - - name: range-val-in-closure - - name: modifies-value-receiver - - name: modifies-parameter - - name: identical-branches - - name: get-return - - name: defer - - name: constant-logical-expr - - name: bool-literal-in-expr - - name: atomic -issues: - exclude-dirs: - - __snapshots__ - - imports diff --git a/framework/pods/.pre-commit-config.yaml b/framework/pods/.pre-commit-config.yaml deleted file mode 100644 index f4967b46d..000000000 --- a/framework/pods/.pre-commit-config.yaml +++ /dev/null @@ -1,20 +0,0 @@ -exclude: '(\.bin|\.abi)' - -repos: - - repo: local - hooks: - - id: go-lint - name: Check Go Lint - entry: ./.githooks/go-lint - language: script - pass_filenames: false - - id: go-test - name: Run Snapshot Tests - entry: ./.githooks/go-test - language: script - pass_filenames: false - - id: typos - name: Typos - entry: ./.githooks/typos - language: script - pass_filenames: false diff --git a/framework/pods/.testcoverage.yml b/framework/pods/.testcoverage.yml deleted file mode 100644 index e6873d032..000000000 --- a/framework/pods/.testcoverage.yml +++ /dev/null @@ -1,11 +0,0 @@ -profile: cover.out -threshold: - file: 90 - package: 90 - total: 90 -exclude: - paths: - - imports -breakdown-file-name: '' -diff: - base-breakdown-file-name: '' \ No newline at end of file diff --git a/framework/pods/_typos.toml b/framework/pods/_typos.toml deleted file mode 100644 index ac291164d..000000000 --- a/framework/pods/_typos.toml +++ /dev/null @@ -1,5 +0,0 @@ -[files] -extend-exclude = [ - "imports/*", - "crds/*" -] \ No newline at end of file diff --git a/framework/pods/client.go b/framework/pods/client.go index 386366d59..a1c8ee61a 100644 --- a/framework/pods/client.go +++ b/framework/pods/client.go @@ -4,12 +4,9 @@ import ( "context" "fmt" "os" - "os/exec" "strings" "time" - "github.com/aws/jsii-runtime-go" - "github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -48,25 +45,6 @@ func NewAPI(namespace string) (*API, error) { }, nil } -func NewApp(ns string) (*API, cdk8s.App, cdk8s.Chart, error) { - app := cdk8s.NewApp(nil) - chart := cdk8s.NewChart(app, jsii.String("composite-chart"), &cdk8s.ChartProps{ - Namespace: S(ns), - }) - api, err := NewAPI(ns) - if err != nil { - return api, app, chart, err - } - if api == nil { - return api, app, chart, nil - } - err = api.CreateNamespace(ns) - if err != nil { - return api, app, chart, err - } - return api, app, chart, nil -} - // GetPods returns a list of Pods in the specified namespace. func (k *API) GetPods(ctx context.Context) (*corev1.PodList, error) { pods, err := k.ClientSet.CoreV1().Pods(k.namespace).List(ctx, metav1.ListOptions{}) @@ -76,50 +54,6 @@ func (k *API) GetPods(ctx context.Context) (*corev1.PodList, error) { return pods, nil } -// GetConfigMaps returns a map of ConfigMap names to their data in the specified namespace. -func (k *API) GetConfigMaps(ctx context.Context) (map[string]map[string]string, error) { - configMaps, err := k.ClientSet.CoreV1().ConfigMaps(k.namespace).List(ctx, metav1.ListOptions{}) - if err != nil { // coverage-ignore - return nil, fmt.Errorf("failed to list ConfigMaps: %v", err) - } - result := make(map[string]map[string]string) - for _, cm := range configMaps.Items { - result[cm.Name] = cm.Data - } - return result, nil -} - -// GetSecrets returns a map of Secret names to their data in the specified namespace. -func (k *API) GetSecrets(ctx context.Context) (map[string]map[string][]byte, error) { - secrets, err := k.ClientSet.CoreV1().Secrets(k.namespace).List(ctx, metav1.ListOptions{}) - if err != nil { // coverage-ignore - return nil, fmt.Errorf("failed to list Secrets: %v", err) - } - result := make(map[string]map[string][]byte) - for _, secret := range secrets.Items { - result[secret.Name] = secret.Data - } - return result, nil -} - -// GetPersistentVolumes returns a map of Pod names to their volumes in the specified namespace. -func (k *API) GetPersistentVolumes(ctx context.Context) ([]corev1.PersistentVolume, error) { // coverage-ignore - vols, err := k.ClientSet.CoreV1().PersistentVolumes().List(ctx, metav1.ListOptions{}) - if err != nil { // coverage-ignore - return nil, fmt.Errorf("failed to list Pods: %v", err) - } - return vols.Items, nil -} - -// GetServices returns a list of Services in the specified namespace. -func (k *API) GetServices(ctx context.Context) ([]corev1.Service, error) { // coverage-ignore - services, err := k.ClientSet.CoreV1().Services(k.namespace).List(ctx, metav1.ListOptions{}) - if err != nil { // coverage-ignore - return nil, fmt.Errorf("failed to list services: %v", err) - } - return services.Items, nil -} - // AllPodsReady checks if all Pods in the namespace are ready. // A Pod is considered ready if all its containers are ready and the Pod's phase is "Running". func (k *API) AllPodsReady(ctx context.Context) (bool, error) { @@ -169,31 +103,6 @@ func (k *API) RemoveNamespace(name string) error { return nil } -// Apply applied manifests and waits -func (k *API) Apply(manifest string) error { - if manifest == "" { - return fmt.Errorf("manifest is empty, nothing to apply") - } - tmpFile, err := os.Create("tmp.yml") - if err != nil { - return fmt.Errorf("failed to create temp file: %w", err) - } - if _, err := tmpFile.WriteString(manifest); err != nil { - return fmt.Errorf("failed to write manifest: %w", err) - } - tmpFile.Close() - ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute) - defer cancel() - //nolint - cmd := exec.CommandContext(ctx, "kubectl", "apply", "-f", tmpFile.Name(), "--wait") - output, err := cmd.CombinedOutput() - if err != nil { - return fmt.Errorf("kubectl apply failed: %w\nOutput: %s", err, string(output)) - } - _, err = k.waitAllPodsReady(context.Background(), 3*time.Minute) - return err -} - // waitAllPodsReady waits until all Pods in the namespace are ready or the timeout is reached. // It retries the check periodically until the condition is met or the timeout occurs. func (k *API) waitAllPodsReady(ctx context.Context, timeout time.Duration) (bool, error) { @@ -219,4 +128,4 @@ func (k *API) waitAllPodsReady(ctx context.Context, timeout time.Duration) (bool time.Sleep(retryInterval) } } -} \ No newline at end of file +} From 0ccbf99374e2e94a4571c0553461ff1587fda852 Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 12:02:28 +0100 Subject: [PATCH 12/16] fix ci --- .github/workflows/pods-test.yml | 2 +- framework/components/dockercompose/go.mod | 2 -- framework/components/dockercompose/go.sum | 18 ------------------ framework/components/fake/go.sum | 18 ------------------ framework/examples/chip_ingress/go.mod | 1 - framework/examples/chip_ingress/go.sum | 18 ------------------ framework/examples/myproject/go.mod | 5 ----- framework/examples/myproject/go.sum | 12 ------------ framework/examples/myproject_cll/go.mod | 9 --------- framework/examples/myproject_cll/go.sum | 18 ------------------ framework/go.mod | 5 ----- framework/go.sum | 12 ------------ 12 files changed, 1 insertion(+), 119 deletions(-) diff --git a/.github/workflows/pods-test.yml b/.github/workflows/pods-test.yml index 11fe8367c..ec3301bed 100644 --- a/.github/workflows/pods-test.yml +++ b/.github/workflows/pods-test.yml @@ -23,7 +23,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version-file: go.mod + go-version-file: framework/go.mod - name: Install dependencies run: go mod download - name: Cache Go modules diff --git a/framework/components/dockercompose/go.mod b/framework/components/dockercompose/go.mod index 46644b3f1..902af0689 100644 --- a/framework/components/dockercompose/go.mod +++ b/framework/components/dockercompose/go.mod @@ -210,11 +210,9 @@ require ( golang.org/x/net v0.45.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.41.0 // indirect - golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect golang.org/x/term v0.36.0 // indirect golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.12.0 // indirect - golang.org/x/tools/cmd/godoc v0.1.0-deprecated // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/grpc v1.75.0 // indirect diff --git a/framework/components/dockercompose/go.sum b/framework/components/dockercompose/go.sum index e86229bda..f615c83a7 100644 --- a/framework/components/dockercompose/go.sum +++ b/framework/components/dockercompose/go.sum @@ -63,10 +63,6 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 h1:S7EPdMVZod8BGKQQPTBK+FcX github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -89,8 +85,6 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -228,8 +222,6 @@ github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv0 github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20= @@ -677,8 +669,6 @@ github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8 github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= -github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= @@ -741,8 +731,6 @@ golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= @@ -807,8 +795,6 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= @@ -832,10 +818,6 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= -golang.org/x/tools/cmd/godoc v0.1.0-deprecated h1:sEGTwp9aZNTHsdf/2BGaRqE4ZLndRVH17rbQ2OVun9Q= -golang.org/x/tools/cmd/godoc v0.1.0-deprecated/go.mod h1:J6VY4iFch6TIm456U3fnw1EJZaIqcYlhHu6GpHQ9HJk= -golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= -golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/components/fake/go.sum b/framework/components/fake/go.sum index 8d23ceea0..ad96ce07f 100644 --- a/framework/components/fake/go.sum +++ b/framework/components/fake/go.sum @@ -4,18 +4,12 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8af github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/block-vision/sui-go-sdk v1.0.6 h1:FysCc4TJC8v4BEBbCjJPDR4iR5eKqJT1dxGwsT67etg= @@ -25,8 +19,6 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= @@ -80,8 +72,6 @@ github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv0 github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= @@ -264,8 +254,6 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -297,12 +285,8 @@ golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -341,8 +325,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/examples/chip_ingress/go.mod b/framework/examples/chip_ingress/go.mod index e25ecada8..38f47389b 100644 --- a/framework/examples/chip_ingress/go.mod +++ b/framework/examples/chip_ingress/go.mod @@ -211,7 +211,6 @@ require ( golang.org/x/term v0.36.0 // indirect golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.12.0 // indirect - golang.org/x/tools/godoc v0.1.0-deprecated // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect google.golang.org/grpc v1.75.0 // indirect diff --git a/framework/examples/chip_ingress/go.sum b/framework/examples/chip_ingress/go.sum index 030a566fa..8747bdbb4 100644 --- a/framework/examples/chip_ingress/go.sum +++ b/framework/examples/chip_ingress/go.sum @@ -63,10 +63,6 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3 h1:S7EPdMVZod8BGKQQPTBK+FcX github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.3/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8= github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20150223135152-b965b613227f/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -89,8 +85,6 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -228,8 +222,6 @@ github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv0 github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20= @@ -676,8 +668,6 @@ github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8 github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= -github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= @@ -740,8 +730,6 @@ golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= @@ -805,8 +793,6 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= @@ -830,10 +816,6 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= -golang.org/x/tools/cmd/godoc v0.1.0-deprecated h1:sEGTwp9aZNTHsdf/2BGaRqE4ZLndRVH17rbQ2OVun9Q= -golang.org/x/tools/cmd/godoc v0.1.0-deprecated/go.mod h1:J6VY4iFch6TIm456U3fnw1EJZaIqcYlhHu6GpHQ9HJk= -golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= -golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/examples/myproject/go.mod b/framework/examples/myproject/go.mod index 2313fee34..1fa2a325c 100644 --- a/framework/examples/myproject/go.mod +++ b/framework/examples/myproject/go.mod @@ -25,11 +25,8 @@ require ( ) require ( - github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/bufbuild/protocompile v0.14.1 // indirect github.com/buger/goterm v1.0.4 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -56,12 +53,10 @@ require ( github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/tjhop/slog-gokit v0.1.3 // indirect github.com/urfave/cli v1.22.16 // indirect - github.com/yuin/goldmark v1.4.13 // indirect github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.31.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.31.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.31.0 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect ) require ( diff --git a/framework/examples/myproject/go.sum b/framework/examples/myproject/go.sum index 8dc235180..66691e5b8 100644 --- a/framework/examples/myproject/go.sum +++ b/framework/examples/myproject/go.sum @@ -119,10 +119,6 @@ github.com/awalterschulze/gographviz v2.0.3+incompatible h1:9sVEXJBJLwGX7EQVhLm2 github.com/awalterschulze/gographviz v2.0.3+incompatible/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59 h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= @@ -172,8 +168,6 @@ github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -1189,8 +1183,6 @@ github.com/xssnick/tonutils-go v1.12.0 h1:Qn1yf/S6OEFD4a1sdpq8qHMzqJFjHaOWxmuXiD github.com/xssnick/tonutils-go v1.12.0/go.mod h1:Wj8TFiUUc7IGdLn2X/ZDzmMs/1b4fsF3iJzH/l+PXTI= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= @@ -1324,9 +1316,6 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbD golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= @@ -1420,7 +1409,6 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= diff --git a/framework/examples/myproject_cll/go.mod b/framework/examples/myproject_cll/go.mod index dde6fe725..9fcd996b9 100644 --- a/framework/examples/myproject_cll/go.mod +++ b/framework/examples/myproject_cll/go.mod @@ -17,17 +17,13 @@ require ( require ( dario.cat/mergo v1.0.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/avast/retry-go/v4 v4.6.1 // indirect - github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/bits-and-blooms/bitset v1.17.0 // indirect github.com/block-vision/sui-go-sdk v1.0.6 // indirect github.com/bytedance/sonic v1.12.3 // indirect github.com/bytedance/sonic/loader v0.2.0 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect @@ -52,7 +48,6 @@ require ( github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/ethereum/go-ethereum v1.15.0 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect - github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect @@ -125,7 +120,6 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/yuin/goldmark v1.4.13 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect @@ -136,8 +130,6 @@ require ( golang.org/x/arch v0.11.0 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.16.0 // indirect @@ -145,7 +137,6 @@ require ( golang.org/x/term v0.34.0 // indirect golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.36.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.72.2 // indirect diff --git a/framework/examples/myproject_cll/go.sum b/framework/examples/myproject_cll/go.sum index bf60f418c..85851adb8 100644 --- a/framework/examples/myproject_cll/go.sum +++ b/framework/examples/myproject_cll/go.sum @@ -6,8 +6,6 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= @@ -18,10 +16,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= @@ -33,8 +27,6 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= @@ -108,8 +100,6 @@ github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv0 github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= @@ -378,8 +368,6 @@ github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGC github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -413,13 +401,8 @@ golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -456,7 +439,6 @@ golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= diff --git a/framework/go.mod b/framework/go.mod index 6a63b8262..c11d30f2d 100644 --- a/framework/go.mod +++ b/framework/go.mod @@ -11,9 +11,7 @@ require ( dario.cat/mergo v1.0.1 github.com/Masterminds/semver/v3 v3.4.0 github.com/avast/retry-go/v4 v4.6.1 - github.com/aws/jsii-runtime-go v1.126.0 github.com/block-vision/sui-go-sdk v1.0.6 - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/docker/docker v28.3.3+incompatible github.com/docker/go-connections v0.5.0 @@ -66,7 +64,6 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.55.6 // indirect - github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -259,7 +256,6 @@ require ( github.com/ugorji/go/codec v1.2.12 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect - github.com/yuin/goldmark v1.4.13 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/etcd/api/v3 v3.5.14 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.14 // indirect @@ -284,7 +280,6 @@ require ( golang.org/x/arch v0.8.0 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect diff --git a/framework/go.sum b/framework/go.sum index 0fe56b246..19713f318 100644 --- a/framework/go.sum +++ b/framework/go.sum @@ -76,10 +76,6 @@ github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIc github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= @@ -103,8 +99,6 @@ github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3z github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -822,8 +816,6 @@ github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGC github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M= github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= @@ -918,9 +910,6 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbD golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= @@ -1013,7 +1002,6 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= From 7269cc13eb0258c8572ea57e11684bbb6562e121 Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 18:04:01 +0100 Subject: [PATCH 13/16] finalize --- book/go.mod | 9 ---- book/go.sum | 18 -------- framework/.changeset/v0.14.0.md | 1 + framework/components/blockchain/anvil.go | 8 ++-- framework/components/clnode/clnode.go | 21 +++++---- framework/components/fake/container.go | 47 ++++++++++++++++++-- framework/components/fake/fake.go | 11 ----- framework/components/fake/go.mod | 31 +++++++++++++ framework/components/fake/go.sum | 25 +++++++++++ framework/components/postgres/postgres.go | 10 ++--- framework/examples/myproject/smoke.toml | 3 ++ framework/examples/myproject/smoke_test.go | 8 +++- framework/examples/myproject/upgrade_test.go | 4 +- framework/pods/defaults.go | 29 ++++++------ framework/pods/pods_test.go | 44 +++++++++--------- framework/pods/sync.go | 6 +-- 16 files changed, 171 insertions(+), 104 deletions(-) create mode 100644 framework/.changeset/v0.14.0.md diff --git a/book/go.mod b/book/go.mod index bab690e93..2a414007c 100644 --- a/book/go.mod +++ b/book/go.mod @@ -14,12 +14,8 @@ require ( require ( github.com/DataDog/zstd v1.5.2 // indirect - github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect - github.com/aws/constructs-go/constructs/v10 v10.4.2 // indirect - github.com/aws/jsii-runtime-go v1.126.0 // indirect github.com/block-vision/sui-go-sdk v1.0.6 // indirect - github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 // indirect github.com/cespare/cp v1.1.1 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -28,7 +24,6 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/ethereum/c-kzg-4844/v2 v2.1.5 // indirect github.com/ethereum/go-ethereum v1.16.8 // indirect - github.com/fatih/color v1.18.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect @@ -53,14 +48,10 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/testcontainers/testcontainers-go v0.37.0 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/yuin/goldmark v1.4.13 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.27.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/term v0.34.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.36.0 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect k8s.io/api v0.32.3 // indirect diff --git a/book/go.sum b/book/go.sum index 750c9cc64..d59d112a5 100644 --- a/book/go.sum +++ b/book/go.sum @@ -8,8 +8,6 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg6 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= -github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= @@ -20,10 +18,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= -github.com/aws/constructs-go/constructs/v10 v10.4.2 h1:+hDLTsFGLJmKIn0Dg20vWpKBrVnFrEWYgTEY5UiTEG8= -github.com/aws/constructs-go/constructs/v10 v10.4.2/go.mod h1:cXsNCKDV+9eR9zYYfwy6QuE4uPFp6jsq6TtH1MwBx9w= -github.com/aws/jsii-runtime-go v1.126.0 h1:cT+yo8OMyWjgzXm7Pvy5Hq36irSIZ7bL/ds33YVDrEk= -github.com/aws/jsii-runtime-go v1.126.0/go.mod h1:67f+oydH0cMr//tkmNNj9QpKk02hNEEVu4CByxkpGB0= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= @@ -35,8 +29,6 @@ github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47 h1:X5BF76555YeaXhtx1De/sSDk6Q0qnoDWDM7e/JFU+dI= -github.com/cdk8s-team/cdk8s-core-go/cdk8s/v2 v2.70.47/go.mod h1:/g4206bYV2W+pVXUjWMUU8wZvLUlbB9v8RBReHlPFuQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -126,8 +118,6 @@ github.com/ethereum/go-ethereum v1.16.8 h1:LLLfkZWijhR5m6yrAXbdlTeXoqontH+Ga2f9i github.com/ethereum/go-ethereum v1.16.8/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= @@ -453,8 +443,6 @@ github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGC github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -490,13 +478,8 @@ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbD golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -569,7 +552,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= diff --git a/framework/.changeset/v0.14.0.md b/framework/.changeset/v0.14.0.md new file mode 100644 index 000000000..163147b71 --- /dev/null +++ b/framework/.changeset/v0.14.0.md @@ -0,0 +1 @@ +- Add seamless integration with K8s for Tier 0 components: Anvil, Fake, NodeSet, PostgreSQL \ No newline at end of file diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 8018f7906..230f40ee4 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -62,15 +62,15 @@ func newAnvil(ctx context.Context, in *Input) (*Output, error) { _, err := pods.Run(&pods.Config{ Pods: []*pods.PodConfig{ { - Name: pods.S(in.ContainerName), + Name: pods.Ptr(in.ContainerName), Image: &in.Image, Ports: []string{fmt.Sprintf("%s:%s", in.Port, in.Port)}, - Command: pods.S(strings.Join(entryPoint, " ")), + Command: pods.Ptr(strings.Join(entryPoint, " ")), Requests: pods.ResourcesMedium(), Limits: pods.ResourcesMedium(), ContainerSecurityContext: &v1.SecurityContext{ - RunAsUser: pods.I64(999), - RunAsGroup: pods.I64(999), + RunAsUser: pods.Ptr[int64](999), + RunAsGroup: pods.Ptr[int64](999), }, }, }, diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 844064a5f..1b9111c07 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -297,17 +297,20 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, _, err := pods.Run(&pods.Config{ Pods: []*pods.PodConfig{ { - Name: pods.S(containerName), - Image: pods.S(in.Node.Image), - Env: []v1.EnvVar{}, + Name: pods.Ptr(containerName), + Image: pods.Ptr(in.Node.Image), + Env: pods.EnvsFromMap(in.Node.EnvVars), Requests: pods.ResourcesMedium(), Limits: pods.ResourcesMedium(), - Ports: []string{"6688:6688", "6690:6690"}, + Ports: []string{ + fmt.Sprintf("%d:%s", in.Node.HTTPPort, DefaultHTTPPort), + fmt.Sprintf("%d:%s", in.Node.P2PPort, DefaultP2PPort), + }, ContainerSecurityContext: &v1.SecurityContext{ - // these are specific things we need to staging cluster - RunAsNonRoot: pods.Bool(true), - RunAsUser: pods.I64(14933), - RunAsGroup: pods.I64(999), + // these are specific things we need for staging cluster + RunAsNonRoot: pods.Ptr(true), + RunAsUser: pods.Ptr[int64](14933), + RunAsGroup: pods.Ptr[int64](999), }, ConfigMap: map[string]string{ "config.toml": cfg, @@ -334,7 +337,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, "secrets-overrides.toml": "/config/secrets-overrides", "secrets-user-overrides.toml": "/config/user-secrets-overrides", }, - Command: pods.S("chainlink -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials"), + Command: pods.Ptr("chainlink -c /config/config -c /config/overrides -c /config/user-overrides -s /config/secrets -s /config/secrets-overrides -s /config/user-secrets-overrides node start -d -p /config/node_password -a /config/apicredentials"), }, }, }) diff --git a/framework/components/fake/container.go b/framework/components/fake/container.go index a58456e0f..611445146 100644 --- a/framework/components/fake/container.go +++ b/framework/components/fake/container.go @@ -6,12 +6,27 @@ import ( "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" + v1 "k8s.io/api/core/v1" + tc "github.com/testcontainers/testcontainers-go" tcwait "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) +type Input struct { + Image string `toml:"image" comment:"Fake service image, usually can be found in our ECR with $project-fakes name"` + Port int `toml:"port" validate:"required" comment:"The port which Docker container is exposing"` + Out *Output `toml:"out" comment:"Fakes service config output"` +} + +type Output struct { + UseCache bool `toml:"use_cache" comment:"Whether to respect caching or not, if cache = true component won't be deployed again"` + BaseURLHost string `toml:"base_url_host" comment:"Base URL which can be used when running locally"` + BaseURLDocker string `toml:"base_url_docker" comment:"Base URL to reach fakes service from other Docker containers"` +} + // NewDockerFakeDataProvider creates new fake data provider in Docker using testcontainers-go func NewDockerFakeDataProvider(in *Input) (*Output, error) { return NewWithContext(context.Background(), in) @@ -24,6 +39,33 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { } bindPort := fmt.Sprintf("%d/tcp", in.Port) containerName := framework.DefaultTCName("fake") + if pods.K8sEnabled() { + _, err := pods.Run(&pods.Config{ + Pods: []*pods.PodConfig{ + { + Name: pods.Ptr(containerName), + Image: &in.Image, + Ports: []string{fmt.Sprintf("%d:%d", in.Port, in.Port)}, + Requests: pods.ResourcesSmall(), + Limits: pods.ResourcesSmall(), + ContainerSecurityContext: &v1.SecurityContext{ + RunAsUser: pods.Ptr[int64](999), + RunAsGroup: pods.Ptr[int64](999), + }, + }, + }, + }) + if err != nil { + return nil, err + } + in.Out = &Output{ + BaseURLHost: fmt.Sprintf("http://%s:%d", fmt.Sprintf("%s-svc", containerName), in.Port), + BaseURLDocker: fmt.Sprintf("http://%s:%d", containerName, in.Port), + } + return in.Out, nil + } + // if pods.K8sEnabled() { + // } req := tc.ContainerRequest{ Name: containerName, Image: in.Image, @@ -47,10 +89,9 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { if err != nil { return nil, err } - out := &Output{ + in.Out = &Output{ BaseURLHost: fmt.Sprintf("http://localhost:%d", in.Port), BaseURLDocker: fmt.Sprintf("http://%s:%d", containerName, in.Port), } - in.Out = out - return out, nil + return in.Out, nil } diff --git a/framework/components/fake/fake.go b/framework/components/fake/fake.go index 63030bc04..bac4ebc02 100644 --- a/framework/components/fake/fake.go +++ b/framework/components/fake/fake.go @@ -14,17 +14,6 @@ const ( DefaultFakeServicePort = 9111 ) -type Input struct { - Image string `toml:"image" comment:"Fake service image, usually can be found in our ECR with $project-fakes name"` - Port int `toml:"port" validate:"required" comment:"The port which Docker container is exposing"` - Out *Output `toml:"out" comment:"Fakes service config output"` -} - -type Output struct { - UseCache bool `toml:"use_cache" comment:"Whether to respect caching or not, if cache = true component won't be deployed again"` - BaseURLHost string `toml:"base_url_host" comment:"Base URL which can be used when running locally"` - BaseURLDocker string `toml:"base_url_docker" comment:"Base URL to reach fakes service from other Docker containers"` -} var ( Service *gin.Engine diff --git a/framework/components/fake/go.mod b/framework/components/fake/go.mod index b8f04a175..684d93594 100644 --- a/framework/components/fake/go.mod +++ b/framework/components/fake/go.mod @@ -12,6 +12,7 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/framework v0.0.0-00010101000000-000000000000 github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.37.0 + k8s.io/api v0.32.3 ) require ( @@ -32,29 +33,42 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.8.2 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.6 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.22.1 // indirect github.com/goccy/go-json v0.10.5 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.9 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.18.2 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a // indirect github.com/magiconair/properties v1.8.10 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/user v0.4.0 // indirect @@ -63,6 +77,8 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect @@ -72,10 +88,12 @@ require ( github.com/rs/zerolog v1.33.0 // indirect github.com/shirou/gopsutil/v4 v4.25.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect @@ -89,10 +107,23 @@ require ( golang.org/x/arch v0.11.0 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/net v0.43.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect golang.org/x/text v0.28.0 // indirect + golang.org/x/time v0.10.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/apimachinery v0.32.3 // indirect + k8s.io/client-go v0.32.3 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect + k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/framework/components/fake/go.sum b/framework/components/fake/go.sum index ad96ce07f..140c1c387 100644 --- a/framework/components/fake/go.sum +++ b/framework/components/fake/go.sum @@ -8,6 +8,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= @@ -84,6 +86,10 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-snaps v0.5.19 h1:hUJlCQOpTt1M+kSisMwioDWZDWpDtdAvUhvWCx1YGW0= +github.com/gkampitakis/go-snaps v0.5.19/go.mod h1:gC3YqxQTPyIXvQrw/Vpt3a8VqR1MO8sVpZFWN4DGwNs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -108,8 +114,12 @@ github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27 github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -119,12 +129,15 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= @@ -157,6 +170,8 @@ github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8S github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -194,6 +209,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -212,6 +231,8 @@ github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWN github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs= @@ -242,6 +263,8 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= @@ -325,6 +348,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index 9eecd8c6f..23d9ebd4a 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -130,8 +130,8 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { _, err := pods.Run(&pods.Config{ Pods: []*pods.PodConfig{ { - Name: pods.S(in.Name), - Image: pods.S(in.Image), + Name: pods.Ptr(in.Name), + Image: pods.Ptr(in.Image), Ports: []string{fmt.Sprintf("%d:%s", portToExpose, Port)}, Env: []v1.EnvVar{ { @@ -150,11 +150,11 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { Requests: pods.ResourcesLarge(), Limits: pods.ResourcesLarge(), ContainerSecurityContext: &v1.SecurityContext{ - RunAsUser: pods.I64(999), - RunAsGroup: pods.I64(999), + RunAsUser: pods.Ptr[int64](999), + RunAsGroup: pods.Ptr[int64](999), }, PodSecurityContext: &v1.PodSecurityContext{ - FSGroup: pods.I64(999), + FSGroup: pods.Ptr[int64](999), }, ConfigMap: map[string]string{ "init.sql": initSQL, diff --git a/framework/examples/myproject/smoke.toml b/framework/examples/myproject/smoke.toml index f90f64a12..e16bb8ac3 100644 --- a/framework/examples/myproject/smoke.toml +++ b/framework/examples/myproject/smoke.toml @@ -3,6 +3,9 @@ docker_cmd_params = ["-b", "1"] type = "anvil" +[data_provider] + port = 9111 + [[nodesets]] name = "don" nodes = 4 diff --git a/framework/examples/myproject/smoke_test.go b/framework/examples/myproject/smoke_test.go index 401ad3540..31f82f3ba 100644 --- a/framework/examples/myproject/smoke_test.go +++ b/framework/examples/myproject/smoke_test.go @@ -7,12 +7,14 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake" ns "github.com/smartcontractkit/chainlink-testing-framework/framework/components/simple_node_set" ) type Cfg struct { - BlockchainA *blockchain.Input `toml:"blockchain_a" validate:"required"` - NodeSets []*ns.Input `toml:"nodesets" validate:"required"` + BlockchainA *blockchain.Input `toml:"blockchain_a" validate:"required"` + MockedDataProvider *fake.Input `toml:"data_provider" validate:"required"` + NodeSets []*ns.Input `toml:"nodesets" validate:"required"` } func TestSmoke(t *testing.T) { @@ -21,6 +23,8 @@ func TestSmoke(t *testing.T) { bc, err := blockchain.NewBlockchainNetwork(in.BlockchainA) require.NoError(t, err) + _, err = fake.NewFakeDataProvider(in.MockedDataProvider) + require.NoError(t, err) out, err := ns.NewSharedDBNodeSet(in.NodeSets[0], bc) require.NoError(t, err) diff --git a/framework/examples/myproject/upgrade_test.go b/framework/examples/myproject/upgrade_test.go index 434b54aba..9b78f8bd5 100644 --- a/framework/examples/myproject/upgrade_test.go +++ b/framework/examples/myproject/upgrade_test.go @@ -35,7 +35,7 @@ const ( type CfgReload struct { BlockchainA *blockchain.Input `toml:"blockchain_a" validate:"required"` - MockerDataProvider *fake.Input `toml:"data_provider" validate:"required"` + MockedDataProvider *fake.Input `toml:"data_provider" validate:"required"` NodeSets []*ns.Input `toml:"nodesets" validate:"required"` } @@ -45,7 +45,7 @@ func TestUpgrade(t *testing.T) { bc, err := blockchain.NewBlockchainNetwork(in.BlockchainA) require.NoError(t, err) - _, err = fake.NewFakeDataProvider(in.MockerDataProvider) + _, err = fake.NewFakeDataProvider(in.MockedDataProvider) require.NoError(t, err) // deploy first time diff --git a/framework/pods/defaults.go b/framework/pods/defaults.go index 9917934e0..cc5c6e54b 100644 --- a/framework/pods/defaults.go +++ b/framework/pods/defaults.go @@ -15,21 +15,8 @@ func Resources(cpu, mem string) map[string]string { } } -func S(s string) *string { - return &s -} - -func I(i int) *int32 { - val := int32(i) - return &val -} - -func I64(i int64) *int64 { - return &i -} - -func Bool(b bool) *bool { - return &b +func Ptr[T any](value T) *T { + return &value } // ResourcesSmall returns small resource limits/requests @@ -66,6 +53,16 @@ func SortedKeys(m map[string]string) []string { return keys } +func EnvsFromMap(envVars map[string]string) []v1.EnvVar { + result := make([]v1.EnvVar, 0, len(envVars)) + for k, v := range envVars { + result = append(result, v1.EnvVar{ + Name: k, + Value: v, + }) + } + return result +} func SizedVolumeClaim(size string) []v1.PersistentVolumeClaim { storageQuantity, err := resource.ParseQuantity(size) @@ -83,7 +80,7 @@ func SizedVolumeClaim(size string) []v1.PersistentVolumeClaim { AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - StorageClassName: S("gp3"), + StorageClassName: Ptr("gp3"), Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: storageQuantity, diff --git a/framework/pods/pods_test.go b/framework/pods/pods_test.go index 6edb62e89..5182eda55 100644 --- a/framework/pods/pods_test.go +++ b/framework/pods/pods_test.go @@ -24,8 +24,8 @@ func TestPods(t *testing.T) { Namespace: "test-single-pod", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, }, }, @@ -38,12 +38,12 @@ func TestPods(t *testing.T) { Namespace: "test-command", Pods: []*p.PodConfig{ { - Name: p.S("anvil"), + Name: p.Ptr("anvil"), Labels: map[string]string{"chain.link/component": "cl"}, Annotations: map[string]string{"custom-annotation": "custom"}, - Image: p.S("ghcr.io/foundry-rs/foundry"), + Image: p.Ptr("ghcr.io/foundry-rs/foundry"), Ports: []string{"8545:8545"}, - Command: p.S("anvil --host=0.0.0.0 -b=1"), + Command: p.Ptr("anvil --host=0.0.0.0 -b=1"), }, }, }, @@ -55,10 +55,10 @@ func TestPods(t *testing.T) { Namespace: "test-instances", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, - Replicas: p.I(2), + Replicas: p.Ptr[int32](2), }, }, }, @@ -70,13 +70,13 @@ func TestPods(t *testing.T) { Namespace: "test-multiple-pods", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, }, { - Name: p.S("test-pod-2"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-2"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, }, }, @@ -89,8 +89,8 @@ func TestPods(t *testing.T) { Namespace: "test-custom-resources", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, Requests: p.Resources("250m", "1Gi"), Limits: p.Resources("500m", "2Gi"), @@ -105,8 +105,8 @@ func TestPods(t *testing.T) { Namespace: "test-invalid-ports", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80"}, }, }, @@ -121,8 +121,8 @@ func TestPods(t *testing.T) { Namespace: "test-configmaps", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, ConfigMap: map[string]string{ "config.toml": `test`, @@ -143,8 +143,8 @@ func TestPods(t *testing.T) { Namespace: "test-secrets", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, Secrets: map[string]string{ "secret.toml": `test`, @@ -165,8 +165,8 @@ func TestPods(t *testing.T) { Namespace: "test-services", Pods: []*p.PodConfig{ { - Name: p.S("test-pod-1"), - Image: p.S("nginx:latest"), + Name: p.Ptr("test-pod-1"), + Image: p.Ptr("nginx:latest"), Ports: []string{"80:80"}, }, }, diff --git a/framework/pods/sync.go b/framework/pods/sync.go index d0ced11e1..ce5f68dbc 100644 --- a/framework/pods/sync.go +++ b/framework/pods/sync.go @@ -77,11 +77,11 @@ func (t *TestRunner) copyTests() error { func TestPodConfig() *PodConfig { config := &PodConfig{ - Name: S("ubuntu"), - Image: S("golang:1.24.3-alpine"), + Name: Ptr("ubuntu"), + Image: Ptr("golang:1.24.3-alpine"), Limits: ResourcesMedium(), Ports: []string{"40000:40000"}, - Command: S("sleep 999999999"), + Command: Ptr("sleep 999999999"), StatefulSet: true, } L.Debug().Interface("config", config).Msg("Created pod configuration") From 1c6d9a1019f24f5109fc749f95386dd1ff33be6c Mon Sep 17 00:00:00 2001 From: skudasov Date: Tue, 10 Feb 2026 18:30:48 +0100 Subject: [PATCH 14/16] add ctx --- book/src/SUMMARY.md | 1 + book/src/framework/kubernetes.md | 7 + framework/components/blockchain/anvil.go | 2 +- .../components/blockchain/anvil_zksync.go | 11 +- framework/components/blockchain/aptos.go | 5 + framework/components/blockchain/besu.go | 11 +- framework/components/blockchain/canton.go | 5 + framework/components/blockchain/geth.go | 5 + framework/components/blockchain/solana.go | 5 + framework/components/blockchain/stellar.go | 5 + framework/components/blockchain/sui.go | 5 + framework/components/blockchain/ton.go | 5 + framework/components/blockchain/tron.go | 5 + framework/components/clnode/clnode.go | 2 +- framework/components/fake/container.go | 2 +- framework/components/jd/jd.go | 6 + framework/components/networktest/nettest.go | 4 + framework/components/postgres/postgres.go | 2 +- framework/components/s3provider/minio.go | 4 + .../components/simple_node_set/node_set.go | 2 +- framework/pods/client.go | 4 +- framework/pods/pods.go | 8 +- framework/pods/pods_test.go | 6 +- framework/pods/sync.go | 129 ------------------ 24 files changed, 96 insertions(+), 145 deletions(-) create mode 100644 book/src/framework/kubernetes.md delete mode 100644 framework/pods/sync.go diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 882615c41..2d12867e9 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -6,6 +6,7 @@ - [Configuration](./framework/developer_environment/toml.md) - [Basic Usage](./framework/getting_started.md) - [Getting Started](./framework/getting_started.md) + - [Running in Kubernetes](./framework/kubernetes.md) - [Advanced Usage](./framework/configuration.md) - [CLI](./framework/cli.md) - [Configuration](./framework/configuration.md) diff --git a/book/src/framework/kubernetes.md b/book/src/framework/kubernetes.md new file mode 100644 index 000000000..ecc1bd1d1 --- /dev/null +++ b/book/src/framework/kubernetes.md @@ -0,0 +1,7 @@ +# Running in Kubernetes + +Set up Kubernetes context for `main.stage` and add namespace variable to run `devenv`: +```bash +kubectl config use-context staging-eks-admin +export KUBERNETES_NAMESPACE="devenv-1" +``` \ No newline at end of file diff --git a/framework/components/blockchain/anvil.go b/framework/components/blockchain/anvil.go index 230f40ee4..581576d10 100644 --- a/framework/components/blockchain/anvil.go +++ b/framework/components/blockchain/anvil.go @@ -59,7 +59,7 @@ func newAnvil(ctx context.Context, in *Input) (*Output, error) { framework.L.Info().Any("Cmd", strings.Join(entryPoint, " ")).Msg("Creating anvil with command") if pods.K8sEnabled() { - _, err := pods.Run(&pods.Config{ + _, err := pods.Run(ctx, &pods.Config{ Pods: []*pods.PodConfig{ { Name: pods.Ptr(in.ContainerName), diff --git a/framework/components/blockchain/anvil_zksync.go b/framework/components/blockchain/anvil_zksync.go index bfe3423d1..175baef5d 100644 --- a/framework/components/blockchain/anvil_zksync.go +++ b/framework/components/blockchain/anvil_zksync.go @@ -2,6 +2,7 @@ package blockchain import ( "context" + "fmt" "os" "path/filepath" "strings" @@ -9,6 +10,7 @@ import ( "github.com/testcontainers/testcontainers-go" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) var AnvilZKSyncRichAccountPks = []string{ @@ -58,7 +60,7 @@ func newAnvilZksync(ctx context.Context, in *Input) (*Output, error) { dockerfilePath := filepath.Join(tempDir, "anvilZksync.Dockerfile") - if err := os.WriteFile(dockerfilePath, []byte(dockerFile), 0600); err != nil { + if err := os.WriteFile(dockerfilePath, []byte(dockerFile), 0o600); err != nil { return nil, err } @@ -74,10 +76,15 @@ func newAnvilZksync(ctx context.Context, in *Input) (*Output, error) { "/root/.foundry/bin/anvil-zksync" + " --chain-id " + in.ChainID + " --port " + in.Port + - " --offline"} + " --offline", + } framework.L.Info().Any("Cmd", strings.Join(req.Entrypoint, " ")).Msg("Creating anvil zkSync with command") + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + output, err := createGenericEvmContainer(ctx, in, req, false) if err != nil { return nil, err diff --git a/framework/components/blockchain/aptos.go b/framework/components/blockchain/aptos.go index 8f6a73fcd..6269ed555 100644 --- a/framework/components/blockchain/aptos.go +++ b/framework/components/blockchain/aptos.go @@ -12,6 +12,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -87,6 +88,10 @@ func newAptos(ctx context.Context, in *Input) (*Output, error) { imagePlatform = "linux/amd64" } + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := testcontainers.ContainerRequest{ Image: in.Image, ExposedPorts: exposedPorts, diff --git a/framework/components/blockchain/besu.go b/framework/components/blockchain/besu.go index 7353d76b4..7c234199b 100644 --- a/framework/components/blockchain/besu.go +++ b/framework/components/blockchain/besu.go @@ -1,6 +1,11 @@ package blockchain -import "context" +import ( + "context" + "fmt" + + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" +) const ( DefaultBesuPrivateKey1 = "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63" @@ -50,5 +55,9 @@ func newBesu(ctx context.Context, in *Input) (*Output, error) { entryPoint := append(defaultCmd, in.DockerCmdParamsOverrides...) req.Cmd = entryPoint + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + return createGenericEvmContainer(ctx, in, req, true) } diff --git a/framework/components/blockchain/canton.go b/framework/components/blockchain/canton.go index 3faa36c36..f257fb2ec 100644 --- a/framework/components/blockchain/canton.go +++ b/framework/components/blockchain/canton.go @@ -9,6 +9,7 @@ import ( "github.com/testcontainers/testcontainers-go" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain/canton" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -81,6 +82,10 @@ func newCanton(ctx context.Context, in *Input) (*Output, error) { in.Port = DefaultCantonPort } + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + // Set up Postgres container postgresReq := canton.PostgresContainerRequest(in.NumberOfCantonValidators) _, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ diff --git a/framework/components/blockchain/geth.go b/framework/components/blockchain/geth.go index 56f197030..7ab959bdd 100644 --- a/framework/components/blockchain/geth.go +++ b/framework/components/blockchain/geth.go @@ -9,6 +9,7 @@ import ( "github.com/docker/docker/api/types/mount" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/testcontainers/testcontainers-go" ) @@ -185,5 +186,9 @@ func newGeth(ctx context.Context, in *Input) (*Output, error) { } req.Cmd = entryPoint + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + return createGenericEvmContainer(ctx, in, req, false) } diff --git a/framework/components/blockchain/solana.go b/framework/components/blockchain/solana.go index e550ac1e5..2c7fa30d5 100644 --- a/framework/components/blockchain/solana.go +++ b/framework/components/blockchain/solana.go @@ -16,6 +16,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) var configYmlRaw = ` @@ -96,6 +97,10 @@ func newSolana(ctx context.Context, in *Input) (*Output, error) { }, flags...) args = append(args, in.DockerCmdParamsOverrides...) + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := testcontainers.ContainerRequest{ AlwaysPullImage: in.PullImage, Image: in.Image, diff --git a/framework/components/blockchain/stellar.go b/framework/components/blockchain/stellar.go index 298c4ef76..c53e47f20 100644 --- a/framework/components/blockchain/stellar.go +++ b/framework/components/blockchain/stellar.go @@ -14,6 +14,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -75,6 +76,10 @@ func newStellar(ctx context.Context, in *Input) (*Output, error) { cmd = append(cmd, in.DockerCmdParamsOverrides...) } + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := testcontainers.ContainerRequest{ AlwaysPullImage: in.PullImage, Image: in.Image, diff --git a/framework/components/blockchain/sui.go b/framework/components/blockchain/sui.go index 34945ffe5..dce0efb28 100644 --- a/framework/components/blockchain/sui.go +++ b/framework/components/blockchain/sui.go @@ -16,6 +16,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -108,6 +109,10 @@ func newSui(ctx context.Context, in *Input) (*Output, error) { imagePlatform = *in.ImagePlatform } + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := testcontainers.ContainerRequest{ Image: in.Image, ExposedPorts: []string{containerPort, DefaultFaucetPort}, diff --git a/framework/components/blockchain/ton.go b/framework/components/blockchain/ton.go index 38b0502f1..6c5e338b0 100644 --- a/framework/components/blockchain/ton.go +++ b/framework/components/blockchain/ton.go @@ -12,6 +12,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -82,6 +83,10 @@ func newTon(ctx context.Context, in *Input) (*Output, error) { networkName := n.Name + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := testcontainers.ContainerRequest{ Image: in.Image, AlwaysPullImage: in.PullImage, diff --git a/framework/components/blockchain/tron.go b/framework/components/blockchain/tron.go index 69960c234..480fbcaa7 100644 --- a/framework/components/blockchain/tron.go +++ b/framework/components/blockchain/tron.go @@ -11,6 +11,7 @@ import ( "github.com/docker/go-connections/nat" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait" @@ -79,6 +80,10 @@ func newTron(ctx context.Context, in *Input) (*Output, error) { return nil, err } + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := testcontainers.ContainerRequest{ AlwaysPullImage: in.PullImage, Image: in.Image, diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 1b9111c07..8188a8971 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -294,7 +294,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, // k8s deployment if pods.K8sEnabled() { - _, err := pods.Run(&pods.Config{ + _, err := pods.Run(ctx, &pods.Config{ Pods: []*pods.PodConfig{ { Name: pods.Ptr(containerName), diff --git a/framework/components/fake/container.go b/framework/components/fake/container.go index 611445146..282e60673 100644 --- a/framework/components/fake/container.go +++ b/framework/components/fake/container.go @@ -40,7 +40,7 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { bindPort := fmt.Sprintf("%d/tcp", in.Port) containerName := framework.DefaultTCName("fake") if pods.K8sEnabled() { - _, err := pods.Run(&pods.Config{ + _, err := pods.Run(ctx, &pods.Config{ Pods: []*pods.PodConfig{ { Name: pods.Ptr(containerName), diff --git a/framework/components/jd/jd.go b/framework/components/jd/jd.go index 01f23029b..fef189f56 100644 --- a/framework/components/jd/jd.go +++ b/framework/components/jd/jd.go @@ -14,6 +14,7 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/framework" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/postgres" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -98,6 +99,11 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { containerName := framework.DefaultTCName("jd") grpcPort := fmt.Sprintf("%s/tcp", in.GRPCPort) wsHealthPort := fmt.Sprintf("%s/tcp", WSRPCHealthPort) + + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } + req := tc.ContainerRequest{ Name: containerName, Image: in.Image, diff --git a/framework/components/networktest/nettest.go b/framework/components/networktest/nettest.go index d68f8f7cc..ea648153a 100644 --- a/framework/components/networktest/nettest.go +++ b/framework/components/networktest/nettest.go @@ -13,6 +13,7 @@ import ( "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) type Input struct { @@ -29,6 +30,9 @@ func NewNetworkTest(in Input) error { // NewNetworkTest creates a minimal Alpine Linux container for network testing func NewWithContext(ctx context.Context, in Input) error { + if pods.K8sEnabled() { + return fmt.Errorf("K8s support is not yet implemented") + } req := testcontainers.ContainerRequest{ Name: in.Name, Image: "alpine:latest", diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index 23d9ebd4a..c74280a8b 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -127,7 +127,7 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { // k8s deployment if pods.K8sEnabled() { - _, err := pods.Run(&pods.Config{ + _, err := pods.Run(ctx, &pods.Config{ Pods: []*pods.PodConfig{ { Name: pods.Ptr(in.Name), diff --git a/framework/components/s3provider/minio.go b/framework/components/s3provider/minio.go index 0d94c236e..c2860801b 100644 --- a/framework/components/s3provider/minio.go +++ b/framework/components/s3provider/minio.go @@ -16,6 +16,7 @@ import ( tcwait "github.com/testcontainers/testcontainers-go/wait" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) const ( @@ -113,6 +114,9 @@ func (mf MinioFactory) NewFrom(input *Input) (*Output, error) { } func (mf MinioFactory) NewWithContextFrom(ctx context.Context, input *Input) (*Output, error) { + if pods.K8sEnabled() { + return nil, fmt.Errorf("K8s support is not yet implemented") + } // Fill in defaults on empty err := mergo.Merge(input, DefaultMinio()) if err != nil { diff --git a/framework/components/simple_node_set/node_set.go b/framework/components/simple_node_set/node_set.go index c9c1f68d8..31727bffc 100644 --- a/framework/components/simple_node_set/node_set.go +++ b/framework/components/simple_node_set/node_set.go @@ -205,7 +205,7 @@ func sharedDBSetup(ctx context.Context, in *Input, bcOut *blockchain.Output) (*O sortNodeOutsByHostPort(nodeOuts) // wait for all K8s services at once if pods.K8sEnabled() { - if err := pods.WaitReady(3 * time.Minute); err != nil { + if err := pods.WaitReady(ctx, 3*time.Minute); err != nil { return nil, err } } diff --git a/framework/pods/client.go b/framework/pods/client.go index a1c8ee61a..a99ec6644 100644 --- a/framework/pods/client.go +++ b/framework/pods/client.go @@ -77,13 +77,13 @@ func (k *API) AllPodsReady(ctx context.Context) (bool, error) { } // CreateNamespace creates a new Kubernetes namespace with the specified name. -func (k *API) CreateNamespace(name string) error { +func (k *API) CreateNamespace(ctx context.Context, name string) error { namespace := &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: name, }, } - _, err := k.ClientSet.CoreV1().Namespaces().Create(context.Background(), namespace, metav1.CreateOptions{}) + _, err := k.ClientSet.CoreV1().Namespaces().Create(ctx, namespace, metav1.CreateOptions{}) if err != nil { // coverage-ignore if strings.Contains(err.Error(), "already exists") { L.Debug().Str("Namespace", name).Msg("Namespace already exists, proceeding..") diff --git a/framework/pods/pods.go b/framework/pods/pods.go index 64a95dd1c..275f20937 100644 --- a/framework/pods/pods.go +++ b/framework/pods/pods.go @@ -93,7 +93,7 @@ func K8sEnabled() bool { } // Run generates and applies a new K8s YAML manifest -func Run(cfg *Config) (string, error) { +func Run(ctx context.Context, cfg *Config) (string, error) { var err error if cfg.Namespace == "" { cfg.Namespace = os.Getenv(K8sNamespaceEnvVar) @@ -103,7 +103,7 @@ func Run(cfg *Config) (string, error) { return "", fmt.Errorf("failed to create K8s client: %w", err) } if Client != nil { - if err := Client.CreateNamespace(cfg.Namespace); err != nil { + if err := Client.CreateNamespace(ctx, cfg.Namespace); err != nil { return "", fmt.Errorf("failed to create namespace: %s, %w", cfg.Namespace, err) } } @@ -454,8 +454,8 @@ func (n *App) apply() error { return nil } -func WaitReady(t time.Duration) error { - _, err := Client.waitAllPodsReady(context.Background(), t) +func WaitReady(ctx context.Context, t time.Duration) error { + _, err := Client.waitAllPodsReady(ctx, t) return err } diff --git a/framework/pods/pods_test.go b/framework/pods/pods_test.go index 5182eda55..15aba36a1 100644 --- a/framework/pods/pods_test.go +++ b/framework/pods/pods_test.go @@ -1,12 +1,14 @@ package pods_test import ( + "context" "os" "testing" "github.com/gkampitakis/go-snaps/snaps" - p "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" "github.com/stretchr/testify/require" + + p "github.com/smartcontractkit/chainlink-testing-framework/framework/pods" ) func defaultNoErr(t *testing.T, err error) { require.NoError(t, err) } @@ -180,7 +182,7 @@ func TestPods(t *testing.T) { if os.Getenv("CI") == "true" && tt.skipCI { t.Skip("this test can't be run in CI because of GHA limitations") } - manifest, err := p.Run(tt.props) + manifest, err := p.Run(context.Background(), tt.props) tt.validateManifest(t, err) if err == nil { snaps.MatchSnapshot(t, manifest) diff --git a/framework/pods/sync.go b/framework/pods/sync.go deleted file mode 100644 index ce5f68dbc..000000000 --- a/framework/pods/sync.go +++ /dev/null @@ -1,129 +0,0 @@ -package pods - -import ( - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" -) - -var ( - DefaultDstDir = filepath.Join("/", "go", "local") -) - -type TestRunner struct { - namespace string - srcDir string - podLabel string - dstDir string - container string - podName string -} - -// NewTestRunner creates a new TestRunner instance -func NewTestRunner(namespace, srcDir string) (*TestRunner, error) { - t := &TestRunner{ - namespace: namespace, - srcDir: srcDir, - podLabel: "app=ubuntu", - dstDir: DefaultDstDir, - container: "ubuntu-container", - } - - // Get pod name - getPodCmd := exec.Command("kubectl", "get", "pod", "-n", t.namespace, "-l", t.podLabel, "-o", "jsonpath={.items[0].metadata.name}") //nolint - podNameBytes, err := getPodCmd.Output() - if err != nil { - return nil, fmt.Errorf("failed to get pod name: %v", err) - } - t.podName = string(podNameBytes) - if t.podName == "" { - L.Error().Str("namespace", t.namespace).Str("label", t.podLabel).Msg("No pod found with specified label") - return nil, fmt.Errorf("no pod found with label %s in namespace %s", t.podLabel, t.namespace) - } - - if err = t.Run(srcDir, "go", "install", "github.com/go-delve/delve/cmd/dlv@latest"); err != nil { - return nil, err - } - - L.Info().Str("pod", t.podName).Str("namespace", t.namespace).Msg("Found target pod") - return t, t.copyTests() -} - -// CopyTests copies local directory to the pod -func (t *TestRunner) copyTests() error { - if _, err := os.Stat(t.srcDir); os.IsNotExist(err) { - L.Error().Str("directory", t.srcDir).Msg("Local directory does not exist") - return fmt.Errorf("local directory %s does not exist", t.srcDir) - } - - dest := fmt.Sprintf("%s:%s", t.podName, t.dstDir) - args := []string{"cp", t.srcDir, dest, "-n", t.namespace, "--container", t.container} - L.Debug().Str("command", "kubectl").Strs("args", args).Msg("Copy arguments") - - cmd := exec.Command("kubectl", args...) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - if err := cmd.Run(); err != nil { - L.Error().Err(err).Str("source", t.srcDir).Str("destination", dest).Msg("Copy failed") - return fmt.Errorf("copy failed: %v", err) - } - - L.Info().Str("source", t.srcDir).Str("destination", dest).Msg("Copy completed successfully") - return nil -} - -func TestPodConfig() *PodConfig { - config := &PodConfig{ - Name: Ptr("ubuntu"), - Image: Ptr("golang:1.24.3-alpine"), - Limits: ResourcesMedium(), - Ports: []string{"40000:40000"}, - Command: Ptr("sleep 999999999"), - StatefulSet: true, - } - L.Debug().Interface("config", config).Msg("Created pod configuration") - return config -} - -// Run executes a command in the container at specified working directory -func (t *TestRunner) Run(fromDir string, command string, args ...string) error { - if t.podName == "" { - L.Error().Msg("Pod name not initialized - call Initialize() first") - return fmt.Errorf("pod name not initialized - call Initialize() first") - } - - targetDir := filepath.Join(DefaultDstDir, fromDir) - execArgs := []string{ - "exec", t.podName, - "-n", t.namespace, - "--container", t.container, - "--", - "sh", "-ClientSet", - fmt.Sprintf("cd %s && %s %s", targetDir, command, strings.Join(args, " ")), - } - - L.Info(). - Str("pod", t.podName). - Str("command", command). - Strs("args", args). - Str("directory", targetDir). - Msg("Executing command in pod") - - cmd := exec.Command("kubectl", execArgs...) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - if err := cmd.Run(); err != nil { - L.Error(). - Err(err). - Str("pod", t.podName). - Str("command", command). - Msg("Command execution failed") - return fmt.Errorf("command execution failed: %v", err) - } - - return nil -} From 0f6f2c6dcc6cf42805f32924073035a3fc504894 Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 11 Feb 2026 12:53:45 +0100 Subject: [PATCH 15/16] review fixes --- book/src/SUMMARY.md | 2 +- book/src/framework/kubernetes.md | 7 ++++++ framework/components/clnode/clnode.go | 17 +++++++++++---- framework/components/postgres/postgres.go | 26 ++++++++++++++++++++--- framework/pods/defaults.go | 1 - framework/pods/forward.go | 9 +++++--- 6 files changed, 50 insertions(+), 12 deletions(-) diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 2d12867e9..213ef3d4a 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -6,7 +6,6 @@ - [Configuration](./framework/developer_environment/toml.md) - [Basic Usage](./framework/getting_started.md) - [Getting Started](./framework/getting_started.md) - - [Running in Kubernetes](./framework/kubernetes.md) - [Advanced Usage](./framework/configuration.md) - [CLI](./framework/cli.md) - [Configuration](./framework/configuration.md) @@ -26,6 +25,7 @@ - [Fake Services](framework/components/mocking.md) - [Detecting Resource Leaks](framework/resource_leaks.md) - [Copying Files](framework/copying_files.md) + - [Running in Kubernetes](./framework/kubernetes.md) - [External Environment](framework/components/external.md) - [Observability Stack](framework/observability/observability_stack.md) - [Overview](framework/observability/observability_stack.md) diff --git a/book/src/framework/kubernetes.md b/book/src/framework/kubernetes.md index ecc1bd1d1..63f5d5cd2 100644 --- a/book/src/framework/kubernetes.md +++ b/book/src/framework/kubernetes.md @@ -4,4 +4,11 @@ Set up Kubernetes context for `main.stage` and add namespace variable to run `de ```bash kubectl config use-context staging-eks-admin export KUBERNETES_NAMESPACE="devenv-1" +``` + +Each Pod always has a service, you can found programmatic connection data in `.out`. + +To forward all the services locally use [kubefwd]() +```bash +sudo -E kubefwd svc -n $KUBERNETES_NAMESPACE ``` \ No newline at end of file diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index 8188a8971..a94d7a5b1 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -181,6 +181,18 @@ func generateEntryPoint() []string { return entrypoint } +// natPortsToK8sFormat transforms nat.PortMap +// to Pods port pair format: $external_port:$internal_port +func natPortsToK8sFormat(nat nat.PortMap) []string { + out := make([]string, 0) + for port, portBinding := range nat { + for _, b := range portBinding { + out = append(out, fmt.Sprintf("%s:%s", b.HostPort, strconv.Itoa(port.Int()))) + } + } + return out +} + // generatePortBindings generates exposed ports and port bindings // exposes default CL node port // exposes custom_ports in format "host:docker" or map 1-to-1 if only "host" port is provided @@ -302,10 +314,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, Env: pods.EnvsFromMap(in.Node.EnvVars), Requests: pods.ResourcesMedium(), Limits: pods.ResourcesMedium(), - Ports: []string{ - fmt.Sprintf("%d:%s", in.Node.HTTPPort, DefaultHTTPPort), - fmt.Sprintf("%d:%s", in.Node.P2PPort, DefaultP2PPort), - }, + Ports: natPortsToK8sFormat(portBindings), ContainerSecurityContext: &v1.SecurityContext{ // these are specific things we need for staging cluster RunAsNonRoot: pods.Ptr(true), diff --git a/framework/components/postgres/postgres.go b/framework/components/postgres/postgres.go index c74280a8b..55d2b29ce 100644 --- a/framework/components/postgres/postgres.go +++ b/framework/components/postgres/postgres.go @@ -136,19 +136,21 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { Env: []v1.EnvVar{ { Name: "POSTGRES_USER", - Value: "chainlink", + Value: User, }, { Name: "POSTGRES_PASSWORD", - Value: "thispasswordislongenough", + Value: Password, }, { Name: "POSTGRES_DB", - Value: "chainlink", + Value: Database, }, }, Requests: pods.ResourcesLarge(), Limits: pods.ResourcesLarge(), + // container and pod security settings are specific to + // 'postgres' Docker image ContainerSecurityContext: &v1.SecurityContext{ RunAsUser: pods.Ptr[int64](999), RunAsGroup: pods.Ptr[int64](999), @@ -189,6 +191,24 @@ func NewWithContext(ctx context.Context, in *Input) (*Output, error) { Database, ), } + if in.JDDatabase { + o.JDInternalURL = fmt.Sprintf( + "postgresql://%s:%s@%s:%s/%s?sslmode=disable", + User, + Password, + fmt.Sprintf("%s-svc", in.Name), + Port, + JDDatabase, + ) + o.JDUrl = fmt.Sprintf( + "postgresql://%s:%s@%s:%d/%s?sslmode=disable", + User, + Password, + fmt.Sprintf("%s-svc", in.Name), + portToExpose, + JDDatabase, + ) + } return o, nil } // local deployment diff --git a/framework/pods/defaults.go b/framework/pods/defaults.go index cc5c6e54b..f99c0b029 100644 --- a/framework/pods/defaults.go +++ b/framework/pods/defaults.go @@ -80,7 +80,6 @@ func SizedVolumeClaim(size string) []v1.PersistentVolumeClaim { AccessModes: []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, }, - StorageClassName: Ptr("gp3"), Resources: v1.VolumeResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceStorage: storageQuantity, diff --git a/framework/pods/forward.go b/framework/pods/forward.go index 02731f902..cf6a95c97 100644 --- a/framework/pods/forward.go +++ b/framework/pods/forward.go @@ -17,7 +17,8 @@ import ( ) const ( - RetryDelay = 1 * time.Second + RetryDelay = 1 * time.Second + K8sAPITimeout = 2 * time.Minute ) // PortForwardConfig represents a single port forward configuration @@ -210,7 +211,9 @@ func (m *PortForwardManager) attemptForward(cfg PortForwardConfig) error { // getTargetPodAndPort finds the target pod and resolves the port func (m *PortForwardManager) getTargetPodAndPort(cfg PortForwardConfig, namespace string) (*corev1.Pod, int, error) { - service, err := m.cs.CoreV1().Services(namespace).Get(context.TODO(), cfg.ServiceName, metav1.GetOptions{}) + ctx, cancel := context.WithTimeout(context.Background(), K8sAPITimeout) + defer cancel() + service, err := m.cs.CoreV1().Services(namespace).Get(ctx, cfg.ServiceName, metav1.GetOptions{}) if err != nil { return nil, 0, fmt.Errorf("failed to get service: %w", err) } @@ -218,7 +221,7 @@ func (m *PortForwardManager) getTargetPodAndPort(cfg PortForwardConfig, namespac if len(service.Spec.Selector) == 0 { return nil, 0, fmt.Errorf("service %s has no selector", cfg.ServiceName) } - pods, err := m.cs.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{ + pods, err := m.cs.CoreV1().Pods(namespace).List(ctx, metav1.ListOptions{ LabelSelector: labels.FormatLabels(service.Spec.Selector), }) if err != nil { From e10cf9964889a3702b4c480c575588d8e0ccbf2b Mon Sep 17 00:00:00 2001 From: skudasov Date: Wed, 11 Feb 2026 13:50:30 +0100 Subject: [PATCH 16/16] integration fixes --- framework/components/clnode/clnode.go | 2 +- framework/pods/pods.go | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/framework/components/clnode/clnode.go b/framework/components/clnode/clnode.go index a94d7a5b1..2fe51a8a1 100644 --- a/framework/components/clnode/clnode.go +++ b/framework/components/clnode/clnode.go @@ -357,7 +357,7 @@ func newNode(ctx context.Context, in *Input, pgOut *postgres.Output) (*NodeOut, APIAuthUser: DefaultAPIUser, APIAuthPassword: DefaultAPIPassword, ContainerName: containerName, - ExternalURL: fmt.Sprintf("http://%s:%s", fmt.Sprintf("%s-svc", containerName), DefaultHTTPPort), + ExternalURL: fmt.Sprintf("http://%s:%d", fmt.Sprintf("%s-svc", containerName), in.Node.HTTPPort), InternalURL: fmt.Sprintf("http://%s:%s", containerName, DefaultHTTPPort), InternalP2PUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultP2PPort), }, nil diff --git a/framework/pods/pods.go b/framework/pods/pods.go index 275f20937..5effbc9f7 100644 --- a/framework/pods/pods.go +++ b/framework/pods/pods.go @@ -11,8 +11,6 @@ import ( "strings" "time" - "github.com/rs/zerolog/log" - "github.com/google/uuid" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -293,7 +291,6 @@ func (n *App) generate() error { // Transform container command if podConfig.Command != nil { container.Command = strings.Split(*podConfig.Command, " ") - log.Printf("Container command: %s", *podConfig.Command) } // Override replicas

    GOlaWY^H-Ef(+t{WC`}0^f_2l^Au!&8rBCQoRwF$Ss zDDh6?6UZBg1b*RA!}Rlw+GaN!uWkj8)7yXDYykhnV#MS8ho9)LGA{i+xEL`8axP0@ zZeV`lD|iCVJe+$8yc{npj06zLHXuW21+4&d6&u`&!Dk$=xKX~oz@b?Zn=Xj1OoMsu z*udqgF$pOH+OHwH3W*%oEHmFEeJU;bC)c8Yg%nvra1QcIo@vgENZhP0s^Y|n?9?tE z`KEAR9ohn`c5>VRX);`hJmJ59Fry|0tA0bNS zvAyhmbkN9&dqzyYjF(t;uxh=;-+RA^l<&30Sp>A;y|u@F(^DtewdA3jW%Y{2n~tJ6wB`O*~0wHfJ2l_t@!#h5PNnim4*1 zF5OjePd;!+0ch3lB7qhf5!uo&0M1vo)oZb@R7KCDK@%MB%r8q{NLZ^X)GH``f!lDo zbe_uQrDzkO*qnxP%JL*^z$v?~XLD*qblOvnm#<+I>EeRw9>4P?-RXiC&5S z`Npjq*fE&UlM00#fzUmA*eMLFzS+3z-E6djDR$~Zf5A$%C#^MCN6%W9-$crv%&3ex zcrqfHb|;@l@CVZcfWw?Ck-BEq1ujJtXp4|&j|+6{F)&~&V(u_wav%YR8{lg%5bN2_ z>w}|)y_TAznwTP_`LPONt0{<{Z$cS{ZQ@tm`@nYU~pp+xaVpYu9_lDtw^Eb*L9+>R6`*fSY)^tS0oW> zA_W|vlfFz74psG5c-m0Ww!gPme`ub!xGPqfKAr*gY?ZIjOkhz(O07P~u`nqgPnx%V zq;6#5DB}rNsh}nb%g0i&TRxcxWw!fbh@k8V)UMmHt42&XAhuW#8H8wOXR*W%4R(4`&b`Q9hXv+}l3I3e}_^o!tT?b_i(IKk}R51zH7;_tcd6mEx>*l*DGIm4L`>8kBq+RwKASA&JAlA1q z4^4?E6rKf4{4R4jA44SidD7IMobzX@*$6±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

MBC<` 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ΝzuCjb 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

MBC<` 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ΝzuCjb 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